来自应用程序的Ear的持久性文件

时间:2014-01-21 19:28:03

标签: java eclipse servlets ear

我搜索了这个并找到了一些答案,但我仍然无法让它发挥作用。我有一个我正在从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项目,如果这有任何不同。

0 个答案:

没有答案