我搜索了这个并找到了一些答案,但我仍然无法让它发挥作用。我有一个我正在从Eclipse工作的应用程序。我正在使用:
Eclipse Kepler,Glassfish 4,Mysql 5.5.31&的EclipseLink
我将应用程序定义为
Ear project
EJB project
|
- META-INF
|
- persistence.xml
web project
|
- servlets etc
我的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="mazeEJB">
<jta-data-source>MazeDbRes</jta-data-source>
<class>mazeJPA.User</class>
<class>mazeJPA.Agegroup</class>
<class>mazeJPA.Gender</class>
<class>mazeJPA.Maze</class>
<properties>
<property name="eclipselink.ddl-generation" value="create-tables"/>
</properties>
</persistence-unit>
</persistence>
我试图访问EntityManager的servlet:
@WebServlet("/User/*")
public class User extends HttpServlet
{
private static final long serialVersionUID = 1L;
/*@PersistenceUnit(unitName="mazeEJB")
private EntityManagerFactory em;*/
@EJB
private Users users;
....
我目前已对persistenceunit位进行了评论,但如果我取消注释,则会收到错误
Cannot Deploy mazeApp
deploy is failing=Error occurred during deployment: Exception while preparing the app : Could not resolve a persistence unit corresponding to the persistence-unit-ref-name [servlets.User/em] in scope of the module called [mazeApp#mazeWeb.war]. Please verify your application.. Please see server.log for more details.
当我尝试为应用程序“在服务器上运行”时。我在这个状态下发现了很多答案,我应该将持久性文件放在耳朵的jar文件中或耳朵的lib / META-INF中。我已尝试过这个和其他一些组合,但即使它将部署,我在调用涉及的页面时也会遇到异常。
我觉得有点奇怪的是我可以访问Users bean。我想解决这个问题,但我还考虑为我想要访问的表创建一个bean并注入它。理论上这应该工作,因为我只想调用我的实体生成的默认findAll命名查询。
此外,我试图查看生成的ear文件以查看其结构,但我不认为Eclipse正在打包和部署,因为我可以找到压缩的目录结构。这是问题的一部分。
有人可以告诉我这里我做错了什么,为什么我不能让这个工作?如果有人可以解释Eclipse的步骤来解决这个问题,那就更有帮助了。
我的web项目在其构建路径上有EJB项目,如果这有任何不同。