我正在尝试更新最初用Java6编写的企业应用程序的小型alpha版本。现在我想用:
到目前为止,我可以毫无问题地在Glassfish上部署我的EAR文件。我的webapp可以加载,第一个JSF页面导航很好。而我的JSF支持bean似乎也加载了我的无状态会话bean。调试显示我,我可以从一个SSB到另一个来自我的支持bean。我遗漏的最后一步也是最后一步是我的实体经理和持久性。
我的课程已被@Stateless
取消,我正在使用:
@PersistenceContext(unitName = "myProjectPU")
protected EntityManager entityManager;
但实体经理是空的:(
我的persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="myProjectPU" transaction-type="JTA">
<jta-data-source>jdbc/myProject</jta-data-source>
<properties>
<property name="javax.persistence.schema-generation.create-database-schemas" value="true" />
</properties>
</persistence-unit>
</persistence>
有什么想法吗? persistence.xml是否必须在ear maven模块中?现在它在ejb maven模块中,我的类使用实体管理器。
答案 0 :(得分:0)
最后我发现了问题。在glassfish日志中向上滚动显示,nullpointer异常后跟一个先前的异常,该异常表示“未选择数据库”。问题不在代码中,而是在我制作的Glassfish JDBC Connection中。我的ping运行正常,我认为连接正常。但你不必只添加mysql端口和用户名和密码。您还必须更改默认URL并添加(连接池中的其他属性)以下值:
JDBC:MySQL的://本地主机:3306 / yourdatabase
在默认为: JDBC:MySQL的://:3306 /
还要注意有两个参数,Url和URL!之后不仅ping成功,而且与实体管理器的数据库连接也正常。 :(