从EAR中的其他罐子引用实体

问题描述:

我正在尝试使用EAR创建分层的网络工程。我将DataAccess中的实体分开,以便只允许BusinessLogic调用DataAccess。从EAR中的其他罐子引用实体

实际上,我得到这个异常:

对象:[email protected]不是已知的实体类型。

我在这里发现我需要在EAR中创建一个persistence.xml,但我无法真正理解如何。

Sharing a persistence unit across components in a .ear file

我试图把XML文件中的配置文件:

enter image description hereenter image description here

并引用与在persistence.xml <jar-files>罐子;

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 
    <persistence-unit name="I2TradingDataAccessPU" transaction-type="JTA"> 
     <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
     <jta-data-source>jdbc/I2DataSource</jta-data-source> 
       <jar-file>../I2TradingEntities.jar</jar-file> 
       <jar-file>../../I2TradingEntities.jar</jar-file> 
     <shared-cache-mode>NONE</shared-cache-mode> 
     <properties> 
      <property name="eclipselink.target-server" value="None"/> 
      <!-- <property name="eclipselink.logging.level" value="ALL"/> --> 
      <property name="eclipselink.logging.level" value="WARNING"/> 
     </properties> 
    </persistence-unit> 
</persistence> 

没有成功。任何想法为什么?我对Web开发很陌生,这让我感到很紧张。

我也收到此警告在persistence.xml的设计标签:

enter image description here

+0

看看[这里](http://*.com/questions/40016269/entity-unknown-in-ear-with-persistence-unit-in-another-jar/40030861#40030861)的问题,它的答案;这基本上是同一个问题。 – ujulu

+0

你好。我正在与Netbeans合作,我只是不明白他们何时显示文件夹结构。我的文件夹结构完全不同。你能告诉我在什么地方放置persistence.xml吗? –

+0

我也不使用Netbeans,我也不能告诉你它是如何组织项目的;但是我看到一个包含'I2Trading.ear'的文件夹'dist'。如果你扩大耳朵,你可以看到目录结构;如果你能告诉我,我可以试着告诉你你必须把persistence.xml文件放在哪里。 – ujulu

我相信指令jar-file从持有persistence.xml文件解释任何路径......所以,你的配置指定实体JAR是您的EAR文件的兄弟。

有关问题的最佳(容易)解决方案是把给定的persistence.xmlI2TradingEntities.jar的META-INF文件夹,并从中取出<jar-file>说明...这将指示应用服务器创建一个名为PersistenceContext “I2TradingDataAccessPU”并检测包含在该JAR中的任何@Entity类。