2012-11-10 7 views
0

TomEE를 사용하여 하나의 EJB JAR과 하나의 WAR을 포함하는 EAR 파일을 배포하고 있습니다.EJB JAR META-INF의 tomee persistence.xml이 내 응용 프로그램 배포를 중단합니다.

나는 기본 공급자를 사용하여 개체를 추가 할. MySQL DB를 사용하기 위해 tomee.xml에 리소스를 만들었습니다. 가 그럼 난 그래서는 EJB의 JAR META-INF 디렉토리에 다음의 persistence.xml을 만들려고하고 엔티티 관리자를 사용하고 싶습니다 :

<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0"> 

     <persistence-unit name="MyProjectDataBase" transaction-type="JTA"> 
       <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> 
       <jta-data-source>MyProjectDS</jta-data-source> 
       <non-jta-data-source>MyProjectDSUnmanaged</non-jta-data-source> 
       <properties> 
         <property name="openjpa.jdbc.DBDictionary" value="mysql" /> 
         <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema" /> 
       </properties> 
     </persistence-unit> 

</persistence> 

MyProject를 & MyProjectUnmanaged는 IDS 내가 tomee.xml에서 만든 자료입니다.

나는 catalina.out에서 다음과 같은 예외를 얻을이 persistence.xml을 추가하고 내 응용 프로그램이 배포되지 않은되면 :

SEVERE: Application could not be deployed: /Users/avitale/Development/apache-tomee-jaxrs-1.5.0/apps/projecteam-ear 
org.apache.openejb.OpenEJBException: Creating application failed: /Users/avitale/Development/apache-tomee-jaxrs-1.5.0/apps/projecteam-ear: loader (instance of org/apache/catalina/loader/StandardClassLoader): attempted duplicate class definition for name: "org/apache/openejb/cdi/CdiPlugin" 
     at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:940) 
     at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:532) 
     at org.apache.openejb.assembler.classic.Assembler.buildContainerSystem(Assembler.java:433) 
     at org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:341) 
     at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:144) 
     at org.apache.openejb.OpenEJB.init(OpenEJB.java:290) 
     at org.apache.tomee.catalina.TomcatLoader.initialize(TomcatLoader.java:231) 
     at org.apache.tomee.catalina.TomcatLoader.init(TomcatLoader.java:131) 
     at org.apache.tomee.catalina.ServerListener.lifecycleEvent(ServerListener.java:113) 
     at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
     at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
     at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:401) 
     at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:110) 
     at org.apache.catalina.startup.Catalina.load(Catalina.java:633) 
     at org.apache.catalina.startup.Catalina.load(Catalina.java:658) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281) 
     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:450) 
Caused by: java.lang.LinkageError: loader (instance of org/apache/catalina/loader/StandardClassLoader): attempted duplicate class definition for name: "org/apache/openejb/cdi/CdiPlugin" 
     at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) 
     at java.lang.ClassLoader.defineClass(ClassLoader.java:615) 
     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 
     at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) 
     at java.net.URLClassLoader.access$000(URLClassLoader.java:58) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:197) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:295) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
     at org.apache.openejb.cdi.OptimizedLoaderService.loadWebBeansPlugins(OptimizedLoaderService.java:70) 
     at org.apache.openejb.cdi.OptimizedLoaderService.load(OptimizedLoaderService.java:53) 
     at org.apache.openejb.cdi.OptimizedLoaderService.load(OptimizedLoaderService.java:47) 
     at org.apache.webbeans.plugins.PluginLoader.startUp(PluginLoader.java:75) 
     at org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:159) 
     at org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(ThreadSingletonServiceImpl.java:150) 
     at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:44) 
     at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:794) 
     ... 20 more 

내가 다음 응용 프로그램이 성공적으로 배포 된 persistence.xml을 제거하면. 내가 진행하는 방법 :(

감사를 사전에 이해하지 않는 저를 도와주세요. 당신은 당신이 실제로 사용하고있는 버전을 지정할 수 있다면

답변

2

이 도움이 될 것입니다.

더 이상 당신을했다 TomEE 또는 EAR 파일의 관련 종속성 (lib/or WEB-INF/lib)을 제공하지 않을 것입니까?

TomEE 1.5.1은 곧 EAR 배포와 관련된 몇 가지 수정 사항과 함께 릴리스 될 것입니다 .