Por que o OpenEJB incorporado falha em implantar meu aplicativo?
Pergunta
Não consigo entender por que um contêiner do OpenEJB incorporado falha no início com uma mensagem muito não informativa (desculpe por um longo log):
Running com.XXX.MyTest
Apache OpenEJB 3.1.3 build: 20101015-05:42
http://openejb.apache.org/
INFO - openejb.home = [skipped...]
INFO - openejb.base = [skipped...]
INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
INFO - Found PersistenceModule in classpath: [skipped...]/target/classes
INFO - Found EjbModule in classpath: [skipped...]/target/test-classes
INFO - Beginning load: [skipped...]/target/classes
INFO - AltDD persistence.xml -> file:[skipped...]/target/classes/META-INF/test.persistence.xml
INFO - AltDD persistence.xml -> file:[skipped...]/target/classes/META-INF/test.persistence.xml
INFO - Beginning load: [skipped...]/target/test-classes
INFO - Configuring enterprise application: classpath.ear
INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
INFO - Auto-creating a container for bean Finder: Container(type=STATELESS, id=Default Stateless Container)
INFO - Configuring PersistenceUnit(name=wid, provider=org.hibernate.ejb.HibernatePersistence)
INFO - Configuring Service(id=Default JDBC Database, type=Resource, provider-id=Default JDBC Database)
INFO - Auto-creating a Resource with id 'Default JDBC Database' of type 'DataSource for 'abc'.
INFO - Configuring Service(id=Default Unmanaged JDBC Database, type=Resource, provider-id=Default Unmanaged JDBC Database)
INFO - Auto-creating a Resource with id 'Default Unmanaged JDBC Database' of type 'DataSource for 'abc'.
INFO - Adjusting PersistenceUnit abc <jta-data-source> to Resource ID 'Default JDBC Database' from 'null'
INFO - Adjusting PersistenceUnit abc <non-jta-data-source> to Resource ID 'Default Unmanaged JDBC Database' from 'null'
INFO - Enterprise application "classpath.ear" loaded.
INFO - Assembling app: classpath.ear
Oct 28, 2010 2:00:20 PM org.hibernate.cfg.annotations.Version <clinit>
INFO: Hibernate Annotations 3.5.6-Final
Oct 28, 2010 2:00:20 PM org.hibernate.cfg.Environment <clinit>
INFO: Hibernate 3.5.6-Final
Oct 28, 2010 2:00:20 PM org.hibernate.cfg.Environment <clinit>
INFO: hibernate.properties not found
Oct 28, 2010 2:00:20 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: Bytecode provider name : javassist
Oct 28, 2010 2:00:20 PM org.hibernate.cfg.Environment <clinit>
INFO: using JDK 1.4 java.sql.Timestamp handling
Oct 28, 2010 2:00:20 PM org.hibernate.annotations.common.Version <clinit>
INFO: Hibernate Commons Annotations 3.2.0.Final
Oct 28, 2010 2:00:20 PM org.hibernate.ejb.Version <clinit>
INFO: Hibernate EntityManager 3.5.6-Final
Oct 28, 2010 2:00:20 PM org.hibernate.ejb.Ejb3Configuration configure
INFO: Processing PersistenceUnitInfo [
name: abc
...]
INFO - PersistenceUnit(name=abc, provider=org.hibernate.ejb.HibernatePersistence) - provider time 328ms
INFO - Undeploying app: classpath.ear
ERROR - Application could not be deployed: classpath.ear
org.apache.openejb.OpenEJBException: Creating application failed: classpath.ear: org.apache.openejb.persistence.PersistenceUnitInfoImpl.getValidationMode()Ljavax/persistence/ValidationMode;
at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:679)
at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:450)
at org.apache.openejb.assembler.classic.Assembler.buildContainerSystem(Assembler.java:368)
at org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:280)
at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:125)
at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:60)
at org.apache.openejb.OpenEJB.init(OpenEJB.java:271)
at org.apache.openejb.OpenEJB.init(OpenEJB.java:250)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[skipped...]
Poderia ajudar por favor? Obrigado.
Solução
Isso porque você está usando o JPA 2.0, que ainda não é apoiado pelo OpenEJB, veja este tópico e OpenEJB-1236. Se você olhar atentamente para a questão da JIRA, parece que isso é corrigido no porta -malas. Eu simplesmente não não, se a subtarefa estiver bloqueando ou se funcionaria com uma versão instantânea do porta -malas.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow