![](/img/trans.png)
[英]Hibernate JPA - entities is are not detected on wildfly startup
[英]JPA Entities shared between several applications (Wildfly - Hibernate - Maven)
有沒有辦法配置各種持久性。xml 包含在所有使用包含所有實體的共享 jar 的不同應用程序(戰爭或耳朵)中?
就像是:
deployments/
|-ArchiviBase.war
|-WEB-INF\classes\META-INF\persistence.xml
|-WEB-INF\classes\META-INF\TipoAbitazione.hbm.xml
|-Application2.war
|-WEB-INF\classes\META-INF\persistence.xml
|-Application3.war
|-WEB-INF\classes\META-INF\persistence.xml
lib/
|-models.jar
|- it\test\archiviBase\beans\TipoAbitazione.java
With all files (persistence.xml, hbm.xml and java class) within the war the mapping works correctly, but I need to share java entities with all applications, so I would like to move them to models.jar.
持久性.xml
<?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="archiviBasePU">
<jta-data-source>java:jboss/jdbc/myDataSource</jta-data-source>
<properties>
<property name="jboss.entity.manager.factory.jndi.name"
value="java:jboss/hibernate/app1SF" />
<property name="jboss.entity.manager.jndi.name"
value="java:/hibernate/app1SF" />
<property name="hibernate.generate_statistics" value="true" />
<property name="hibernate.default_schema"
value="app_schema" />
<property name="hibernate.show_sql" value="true" />
</properties>
</persistence-unit>
</persistence>
TipoAbitazione.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping auto-import="true"
default-access="property" default-cascade="none" default-lazy="true">
<class dynamic-insert="false" dynamic-update="false"
mutable="true"
name="it.test.app1.beans.TipoAbitazione"
optimistic-lock="version" polymorphism="implicit"
select-before-update="false" table="tipo_abitazione">
<id column="tpab_codice" name="codice" type="java.lang.String">
<generator class="assigned" />
</id>
<property column="tpab_descrizione" generated="never"
lazy="false" length="100" name="descrizione" not-null="true"
optimistic-lock="true" type="java.lang.String" unique="false" />
<property column="tpab_flag_attivo" generated="never"
lazy="false" length="1" name="attivo" optimistic-lock="true"
type="java.lang.Boolean" unique="false" />
</class>
</hibernate-mapping>
TipoAbitazione.java
package it.test.archiviBase.beans;
import java.io.Serializable;
public class TipoAbitazione implements Serializable {
private static final long serialVersionUID = 1L;
private String codice;
private String descrizione;
private Boolean attivo;
public TipoAbitazione() {
}
public TipoAbitazione(String codice, String descrizione) {
this.codice = codice;
this.descrizione = descrizione;
}
public TipoAbitazione(String codice, String descrizione, Boolean attivo) {
this.codice = codice;
this.descrizione = descrizione;
this.attivo = attivo;
}
public String getCodice() {
return this.codice;
}
public void setCodice(String codice) {
this.codice = codice;
}
public String getDescrizione() {
return this.descrizione;
}
public void setDescrizione(String descrizione) {
this.descrizione = descrizione;
}
public Boolean getAttivo() {
return this.attivo;
}
public void setAttivo(Boolean attivo) {
this.attivo = attivo;
}
}
每個應用程序都應該定義自己的持久性單元,使用自己的 hbm.xml 文件,但 java 實體將全部包含在共享模型中。jar
這是我嘗試部署戰爭時的錯誤:
1-03-25 15:20:46,406 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 3) MSC000001: Failed to start service jboss.persistenceunit."archiviBaseTest2-0.0.1-SNAPSHOT.war #archiviBasePU": org.jboss.msc.service.StartException in service jboss.persistenceunit."archiviBaseTest2-0.0.1-SNAPSHOT.war#archiviBasePU": javax.persistence.PersistenceException: [PersistenceUnit: archiviBasePU] Unable to build Hibernate SessionFactory at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:198) at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:128) at java.secur ity.AccessController.doPrivileged(Native Method) at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:664) at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:213) at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35) at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java :1486) 在 org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377) 在 Z93F725A07423FE1C889F B33D21F46Z.lang.Thread.run(Thread.java:748) at org.jboss.threads.JBossThread.run(JBossThread.java:513) Caused by: javax.persistence.PersistenceException: [PersistenceUnit: archiviBasePU] Unable to build Hibernate SessionFactory at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:1327) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1253) at org.jboss.as.jpa .hibernate5.TwoPhaseBootstrapImpl.build(TwoPhaseBootstrapImpl.java:44) 在 org.jboss.as.ZF0B4A299C4517 1493AE3215D69D9B0A6Z.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:170)... 10 more Caused by: org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister at org.hibernate.persister .internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:123) at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:77) at org.hibernate.metamodel.internal.MetamodelImpl.initialize(MetamodelImpl.java:154 ) 在 org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:295) 在 org.hibernate.FactoryI.boot. mpl.build(SessionFactoryBuilderImpl.java:467) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1250)... 12 more Caused by: org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer] at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:91) at org.hibernate.tuple.entity.EntityTuplizerFactory.constructDefaultTuplizer(EntityTuplizerFactory.java:116) at org.hibernate.tuple.entity.EntityMetamodel.(EntityMetamodel.java:413) at org.hibernatePer.ApersisterEntity.entity r.(AbstractEntityPersister.java:557) at org.hibernate.persister.entity.SingleTableEntityPersister.(SingleTableEntityPersister.java:124) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl. java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl .java:96)... 17 更多原因:java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(N ative Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:88)... 26 more Caused by: java.lang.IllegalArgumentException: Could not create type at net.bytebuddy.TypeCache.findOrInsert(TypeCache.java: 154)在net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:365)在net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:1InlineExp4)在net.bytebuddy.TypeCache ction.findOrInsert(TypeCache.java:376) at org.hibernate.bytecode.internal.bytebuddy.ByteBuddyState.load(ByteBuddyState.java:183) at org.hibernate.bytecode.internal.bytebuddy.ByteBuddyState.loadProxy(ByteBuddyState.java: 107) at org.hibernate.proxy.pojo.bytebuddy.ByteBuddyProxyHelper.buildProxy(ByteBuddyProxyHelper.java:54) at org.hibernate.proxy.pojo.bytebuddy.ByteBuddyProxyFactory.postInstantiate(ByteBuddyProxyFactory.java:62) at org.hibernate.tuple .entity.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:103) at org.hibernate.tuple.entity.AbstractEntityTuplizer.(AbstractEntityTuplizer.java:155) at org.ZCB1F008EEBF5012C4E F9A2C36E574D61Z.tuple.entity.PojoEntityTuplizer.(PojoEntityTuplizer.java:51)... 31 more Caused by: java.lang.IllegalStateException: Error invoking Unsafe::defineClass at net.bytebuddy.dynamic.loading.ClassInjector$UsingUnsafe$Dispatcher$ Enabled.defineClass(ClassInjector.java:1997) at net.bytebuddy.dynamic.loading.ClassInjector$UsingUnsafe.injectRaw(ClassInjector.java:1774) at net.bytebuddy.dynamic.loading.ClassInjector$AbstractBase.inject(ClassInjector.java: 112) at net.bytebuddy.dynamic.loading.ClassLoadingStrategy$ForUnsafeInjection.load(ClassLoadingStrategy.java:546) at net.bytebuddy.dynamic.TypeResolutionStrategy$Passive.initialize(TypeResolutionStrategy.java:100) at net.bytebuddy.dynamic.DynamicType $Default$Unloaded.load(DynamicType.java:5662) 在 org.hibernate.bytecode.internal.bytebuddy.ByteBuddyState.lambda$load$0(ByteBuddyState.java:187) at net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:152)... 41 more Caused by: java.lang. NoClassDefFoundError: org/hibernate/proxy/HibernateProxy at sun.misc.Unsafe.defineClass(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun .reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at net.bytebuddy.dynamic.loading.ClassInjector$UsingUnsafe$Dispatcher$Enabled.defineClass(ClassInjector .java:1987)... 48 更多原因:Z93F725A07423FE1C889F 448B33D21F46Z.lang.ClassNotFoundException: org.hibernate.proxy.HibernateProxy from [Module "deployment.external.global-directory.lib" from Service Module Loader] at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:255) at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:410) at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398) at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116) ... 54 更多
2021-03-25 15:20:46,411 錯誤 [org.jboss.as.controller.management-operation] (外部管理請求線程--地址(“部署”失敗) " => "archiviBaseTest2-0.0.1-SNAPSHOT.war")]) - 失敗描述:{"WFLYCTL0080: 失敗的服務" => {"jboss.persistenceunit."archiviBaseTest2-0.0.1-SNAPSHOT.war#archiviBasePU"" => "javax.persistence.PersistenceException: [PersistenceUnit: archiviBasePU] Unable to build Hibernate SessionFactory Caused by: javax.persistence.PersistenceException: [PersistenceUnit: archiviBasePU] Unable to build Hibernate SessionFactory Caused by: org.hibernate.MappingException: Could not get org.hibernate.persister.entity.SingleTableEntityPersister 的構造函數引起:org.hibernate.HibernateException:無法實例化默認的tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer] Caused by: java.lang.reflect.InvocationTargetException Caused by: java.lang.IllegalArgumentException: Could not create type Caused by: java.lang.IllegalStateException: Error invoking Unsafe::defineClass Caused by: java.lang.NoClassDefFoundError: org/hibernate/proxy/HibernateProxy Caused by: java.lang.ClassNotFoundException: org.hibernate.proxy.HibernateProxy from [Module "deployment.external.global-directory.lib" from Service Module Loader] “}} 2021-03-25 15:20:46,412 錯誤 [org.jboss.as.server](外部管理請求線程 -- 1)WFLYSRV0021:部署部署“archiviBaseTest2-0.0.1-SNAPSHOT.war”已滾動返回以下失敗消息: {"WFLYCTL0080: Failed services" => {"jboss.persistenceun it."archiviBaseTest2-0.0.1-SNAPSHOT.war#archiviBasePU"" => "javax.persistence.PersistenceException: [PersistenceUnit: archiviBasePU] 無法構建 Hibernate SessionFactory 原因:javax.persistence.PersistenceException: [PersistenceUnit: unable archiviBasePU] to build Hibernate SessionFactory Caused by: org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister Caused by: org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity. PojoEntityTuplizer] Caused by: java.lang.reflect.InvocationTargetException Caused by: java.lang.IllegalArgumentException: Could not create type Caused by: java.lang.IllegalStateException: Error invoking Unsafe::defineC lass Caused by: java.lang.NoClassDefFoundError: org/hibernate/proxy/HibernateProxy Caused by: java.lang.ClassNotFoundException: org.hibernate.proxy.HibernateProxy from [Module "deployment.external.global-directory.lib" from Service Module加載器]"}}
<!-- Define persistence unit -->
<persistence-unit name="archiviBasePU">
...
<jar-file>models.jar</jar-file>
...
</persistence-unit>
如果您不想在每個應用程序的 persistence.xml 中明確列出它們,則必須將persistence.xml
與加載的類放在同一個庫中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.