Wildfly 8.2无法扫描WEB-INF / lib / * .jar目录中的实体。这是预期的行为吗?

时间:2015-03-01 00:15:27

标签: hibernate java-ee wildfly wildfly-8

我正在部署包含WEB-INF/classes目录中的实体的战争,但现在我将这些实体移动到单独的项目/模块中,现在实体驻留在WEB-INF/lib/*.jar

更改后,wildfly无法扫描部署时产生错误的实体。

然后我尝试添加

<class>class.inside.webinf.lib.Entity1</class>
标记在我的persistence.xml文件中,并且所有内容都已正确部署。

persistence.xml

完整file.war/WEB-INF/classes/META-INF/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="pu" transaction-type="JTA">
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
      <jta-data-source>java:/jboss/datasources/sgsdscore</jta-data-source>

      <class>io.ingenia.sgsds.score.entity.Entity1</class>
      <class>io.ingenia.sgsds.score.entity.EntityN</class>

      <exclude-unlisted-classes>false</exclude-unlisted-classes> 
      <shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
      <properties>
         <property name="hibernate.hbm2ddl.auto" value="update"/>
         <property name="hibernate.jdbc.batch_size" value="200"/> 
         <property name="hibernate.order_inserts" value="true" />
         <property name="hibernate.order_updates" value="true" />

         <property name="hibernate.cache.use_second_level_cache" value="true"/>
      </properties>
   </persistence-unit>
</persistence>

我错过了什么吗?

WEB-INF/lib/*.jar内的EJB成功扫描了......

3 个答案:

答案 0 :(得分:2)

我想这个答案也回答了我的问题https://stackoverflow.com/a/6263592/39998

将目录放在lib目录中就像WEB-INF/lib/entities.jar一样,但是persistence.xml文件必须在WEB-INF/lib/entities.jar/META-INF/persistence.xml

如果persistence.xml文件位于WEB-INF/classes/META-INF/persistence.xml内,那么自动扫描只会在WEB-INF/classes/*内发生

有道理。 (有点......)

答案 1 :(得分:1)

一般来说,这应该有效。我在大多数项目中都使用WEB-INF/lib/*.jar的JPA实体类。

但是,如果某些类与persistence.xml描述符不在同一个JAR中,则可能会出现问题。

答案 2 :(得分:1)

如果没有看到persistence.xml文件,很难说。您可以指定exclude-unlisted-classes,只会查看列出的类。您必须使用jar-file来指示要扫描的JAR文件(如果您已经这样做,那么您的问题就不清楚了。