首先,这是与_2482260相同的问题但是那里没有答案:(我不知道为什么我要开新票 .
无论如何,我有这个jar(让我们称之为client.jar)尝试使用另一个JAR中定义的实体/ daos(让我们称之为modele.jar) . 在client.jar中,我有这个代码:
public class ImportService implements IServices {
@EJB(mappedName = "java:global/tab.transmodel/VersionHoraireHome!org.avm.business.transmodel.VersionDAO")
private VersionDAO<VersionHoraire, Integer> vdhDao;
在src / main / resources / META-INF中我有一个jboss-deployment-structure.xml文件:
<?xml version="1.0"?>
<jboss-deployment-structure
xmlns="urn:jboss:deployment-structure:1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<deployment>
<dependencies>
<module name="deployment.modele.jar"/>
</dependencies>
</deployment>
</jboss-deployment-structure>
如果注释掉 <module name="deployment.modele.jar"/>
行,那么我有错误:
(...)
Caused by: java.lang.NoClassDefFoundError: Lorg/avm/business/transmodel/VersionDAO;
at java.base/java.lang.Class.getDeclaredFields0(Native Method)
at java.base/java.lang.Class.privateGetDeclaredFields(Class.java:3024)
at java.base/java.lang.Class.getDeclaredFields(Class.java:2205)
at org.jboss.as.server//org.jboss.as.server.deployment.reflect.ClassReflectionIndex.<init>(ClassReflectionIndex.java:72)
at org.jboss.as.server//org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:70)
... 10 more
如果没有注释 <module name="deployment.modele.jar"/>
行,那么我有错误:
Caused by: java.lang.IllegalArgumentException: WFLYWELD0037: Error injecting persistence unit into CDI managed bean. Can't find a persistence unit named 'manager' in deployment client.jar for injection point private javax.persistence.EntityManager org.avm.business.transmodel.EquipementHome.entityManager
at org.jboss.as.weld.jpa//org.jboss.as.weld.services.bootstrap.WeldJpaInjectionServices.getScopedPUName(WeldJpaInjectionServices.java:114)
at org.jboss.as.weld.jpa//org.jboss.as.weld.services.bootstrap.WeldJpaInjectionServices.registerPersistenceContextInjectionPoint(WeldJpaInjectionServices.java:77)
at org.jboss.weld.core//org.jboss.weld.injection.ResourceInjectionFactory$PersistenceContextResourceInjectionProcessor.getResourceReferenceFactory(ResourceInjectionFactory.java:350)
at org.jboss.weld.core//org.jboss.weld.injection.ResourceInjectionFactory$PersistenceContextResourceInjectionProcessor.getResourceReferenceFactory(ResourceInjectionFactory.java:338)
at org.jboss.weld.core//org.jboss.weld.injection.ResourceInjectionFactory$ResourceInjectionProcessor.createFieldResourceInjection(ResourceInjectionFactory.java:216)
是的,我在modele.jar(src / main / resources / META-INF)中有一个persistence.xml文件,它定义了一个持久性单元:
<persistence 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"
version="2.0">
<persistence-unit name="manager">
<jta-data-source>java:/OracleDS</jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.cache.use_second_level_cache" value="true" />
</properties>
</persistence-unit>
我输了:(如果一个JEE大师可以提供帮助,我会很感激:)
BTW:wildfly11,java1.8,Eclipse .
1 回答
最后,我发现了一种解决方案......我为模型生成了一个客户端:在POM中我添加了:
在客户端的src / main / resources / META-INF / jboss-deployment-structure.xml中:
这样做的工作:)我想知道大师会想到这个解决方案吗?这是正确的方法吗?