Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';在subdeployment“中找不到名为的持久化单元”;“战争”;“部署方式”;“耳朵”;_Java_Spring_Hibernate_Maven - Fatal编程技术网

Java Can';在subdeployment“中找不到名为的持久化单元”;“战争”;“部署方式”;“耳朵”;

Java Can';在subdeployment“中找不到名为的持久化单元”;“战争”;“部署方式”;“耳朵”;,java,spring,hibernate,maven,Java,Spring,Hibernate,Maven,我在ear项目中使用了带有Spring 4.1.6和Hibernate 4.3.2的Wildfly,我得到了以下例外: ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC000001: Failed to start service jboss.deployment.subunit."ear.ear"."ear.war".POST_MODULE: org.jboss.msc.service.StartExcept

我在ear项目中使用了带有Spring 4.1.6和Hibernate 4.3.2的Wildfly,我得到了以下例外:

    ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC000001: Failed to start service jboss.deployment.subunit."ear.ear"."ear.war".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.subunit."ear.ear"."ear.war".POST_MODULE: JBAS018733: Failed to process phase POST_MODULE of subdeployment "ear.war" of deployment "ear.ear"
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:166) [wildfly-server-8.2.0.Final.jar:8.2.0.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) [jboss-msc-1.2.2.Final.jar:1.2.2.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) [jboss-msc-1.2.2.Final.jar:1.2.2.Final]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_75]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_75]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_75]
     Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011440: Can't find a persistence unit named org.hibernate.tutorial.jpa in subdeployment "ear.war" of deployment "ear.ear"
at org.jboss.as.jpa.processor.PersistenceRefProcessor.getPersistenceUnitBindingSource(PersistenceRefProcessor.java:212)
at org.jboss.as.jpa.processor.PersistenceRefProcessor.getPersistenceUnitRefs(PersistenceRefProcessor.java:127)
at org.jboss.as.jpa.processor.PersistenceRefProcessor.processDescriptorEntries(PersistenceRefProcessor.java:78)
at org.jboss.as.ee.component.deployers.AbstractDeploymentDescriptorBindingsProcessor.deploy(AbstractDeploymentDescriptorBindingsProcessor.java:95)
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:159) [wildfly-server-8.2.0.Final.jar:8.2.0.Final]
... 5 more
META-INF文件夹中ear项目中的My persistence.xml:

     <persistence-unit name="ear" transaction-type="JTA">
     <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    <jta-data-source>jboss/jpaDS</jta-data-source>
    <jar-file>Jar/ear_jar.jar</jar-file>
    <properties>
        <property name="hibernate.current_session_context_class" value="jta"/>
        <property name="hibernate.id.new_generator_mappings" value="true"/>
        <property name="hibernate.dialect"      value="org.hibernate.dialect.Dialect"/>
        <property name="hibernate.show_sql"     value="true"/>
        <property name="hibernate.format_sql"   value="true"/>
        <property name="hibernate.hbm2ddl.auto" value="update"/>               
    </properties>
    </persistence-unit>
    </persistence>
    <persistence-unit name="org.hibernate.tutorial.jpa" transaction-type="JTA"> 
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
      <jta-data-source>jboss/jpaDS</jta-data-source> 
      <class>main.java.com.model.User</class>
      <exclude-unlisted-classes>false</exclude-unlisted-classes>
      <properties>
        <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver"/>
        <property name="javax.persistence.jdbc.url" value="C:\Users\alexandra\MyDB;create=true"/>
        <property name="javax.persistence.jdbc.user" value="user"/>
        <property name="javax.persistence.jdbc.password" value="password"/>
        <property name="hibernate.dialect" value="org.hibernate.dialect.Dialect"/>
        <property name="hibernate.hbm2ddl.auto" value="update"/>
        <property name="hibernate.connection.release_mode" value="after_statement"/>
        <property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.JDBCTransactionFactory"/>  
        <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.SunONETransactionManagerLookup" />
        <property name="hibernate.query.factory_class" value="org.hibernate.hql.classic.ClassicQueryTranslatorFactory"/> 
        <property name="connection.pool_size" value="1"/>
        <property name="current_session_context_class" value="thread"/>
        <property name="cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
        <property name="show_sql" value="true"/>
        <property name="jboss.as.jpa.providerModule" value="hibernate3-bundled" />
        <property name="hibernate.current_session_context_class" value="thread"/>
        <property name="jboss.as.jpa.managed" value="false"/>
        <property name="javax.persistence.validation.mode" value="none"/>
        <property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform"/>
        <property name="hibernate.current_session_context_class" value="jta"/>
      </properties>
     </persistence-unit>
    </persistence>
这很简单(至少我希望是这样)。 有一个类加载器层次结构,因此层次结构中“上方”的类加载器无法加载层次结构中较低的对象,而较低的类加载器可以加载层次结构中较低的对象

即。 EAR类加载器位于WAR类加载器之上。因此,EAR中加载的类无法从WAR中加载对象。但是战争物品可以从耳朵里装载物品

我想,既然您在EAR中获得了persistence.xml,那么您也在EAR中加入了hibernate依赖项,因此它们无法从WAR中加载对象

如果这是真的,那么我建议尝试将hibernate依赖项移动到WAR,看看它是否有效,或者在考虑类加载器层次结构的情况下重新组织EAR/WAR:)

这非常简单(至少我希望如此;))。 有一个类加载器层次结构,因此层次结构中“上方”的类加载器无法加载层次结构中较低的对象,而较低的类加载器可以加载层次结构中较低的对象

即。 EAR类加载器位于WAR类加载器之上。因此,EAR中加载的类无法从WAR中加载对象。但是战争物品可以从耳朵里装载物品

我想,既然您在EAR中获得了persistence.xml,那么您也在EAR中加入了hibernate依赖项,因此它们无法从WAR中加载对象


如果这是真的,那么我建议尝试将hibernate依赖项转移到WAR,看看它是否有效,或者根据类加载器层次结构重新组织EAR/WAR:)

感谢maslan对类加载的良好解释。但是错误并没有消失。你试过我的建议了吗?比方说,首先将您的hibernate依赖项移动到war?是的,我删除了ear库中的hibernate并更改了我的jboss-deployment-structure.xml,我是否应该发布我的部署结构?我们可以尝试一下,或者您也可以将war和ear的结构放在一起,但只需告诉ear war中的哪个目录是您的实体(用户)还有你的hibernate类。你确定用户实体有一个正确的包名吗?我发布了我的jboss-structure.xml和我的用户文件。感谢maslan对类加载的良好解释。但是错误并没有消失。你试过我的建议吗?比如说,先把你的hibernate依赖项移动到war?是的,我删除了hibernate在ear库中修改了我的jboss-deployment-structure.xml,我应该发布我的部署结构吗?好吧,我们可以试试,或者你也可以把war和ear的结构放进去,但只要告诉ear war中哪个目录是你的实体(用户)还有你的hibernate类。你确定用户实体有一个正确的包名吗?我发布了我的jboss-structure.xml和我的用户文件。感谢maslan对类加载的良好解释。但是错误并没有消失。你试过我的建议吗?比如说,先把你的hibernate依赖项移动到war?是的,我删除了hibernate在ear库中修改了我的jboss-deployment-structure.xml,我应该发布我的部署结构吗?好吧,我们可以试试,或者你也可以把war和ear的结构放进去,但只要告诉ear war中哪个目录是你的实体(用户)还有你的hibernate类。你确定用户实体有正确的包名吗?我发布了我的jboss-structure.xml和我的用户文件。
    <jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <ear-subdeployments-isolated>false</ear-subdeployments-isolated>
      <deployment>
       <dependencies>
        <module name="deployment.Ear.ear.ear_jar.jar" export="true" />
       </dependencies>
      </deployment>

     <sub-deployment name="War/ear.war" >
      <resources>
       <resource-root path="War/ear.war"/>
     </resources>
     <local-last value="true" />
   </sub-deployment>

    <sub-deployment name="Jar/ear_jar.jar" >
      <resources>
        <resource-root path="Ear/ear_jar.jar" />
      </resources>

   </sub-deployment>

  </jboss-deployment-structure>
     import javax.persistence.Column;
     import javax.persistence.Entity;
     import javax.persistence.GeneratedValue;
     import javax.persistence.GenerationType;
     import javax.persistence.Id;
     import org.springframework.context.annotation.Bean;
     import org.springframework.format.annotation.NumberFormat;
     import org.springframework.format.annotation.NumberFormat.Style;
     import org.springframework.stereotype.Repository;

     @Entity(name = "REGISTRY.register")  
     @Repository
     public class User implements Serializable {

    public static final long serialVersionUID = 1L;
    @Column(name = "name",insertable = false)
    private String name;
    @Column(name = "password",insertable = false)
    private String password;
    @Id
    @NumberFormat(style = Style.NUMBER) 
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int ID;
    // getters and setters