JPA and Weld-Embedded EE 1.1 doesn't work
oranheim Jan 6, 2011 11:35 AMHi,
I'm not able to have weld-embbed create the entity manager factory, hence not able to test JPA with org.jboss.weld.arquillian.container:arquillian-weld-ee-embedded-1.1:1.1.0.CR4.
What may be the cause here. Tried to make an EntityManagerFactory producer and create it manually, but then it complain it can't find the persistence unit ("primary").
As far as I can see, my configuration looks right.
Weld-embedded-1.1 profile configuration:
and here is the dependency graph:
Simple test case:
@RunWith(Arquillian.class) public class UserDomainTest { @Deployment public static WebArchive createTestArchive() { return ShrinkWrap.create(WebArchive.class, "test.war") .addClasses(org.slf4j.impl.Log4jLoggerAdapter.class, org.slf4j.impl.Log4jLoggerFactory.class, org.slf4j.impl.Log4jMDCAdapter.class, org.slf4j.impl.StaticLoggerBinder.class, org.slf4j.impl.StaticMarkerBinder.class, org.slf4j.impl.StaticMDCBinder.class) .addClasses(PartsDatabase.class, PartsRepositoryProducer.class, LogWrapper.class) .addWebResource("test-persistence.xml", "classes/META-INF/persistence.xml") .addWebResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml")) .addManifestResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml")); } @Inject LogWrapper log; //Instance<Logger> log; @Inject @PartsDatabase EntityManager em; @Test public void testEntityManager() throws Exception { assertNotNull( em ); } @Test public void testEntityManagerFactory() throws Exception { assertNotNull( em.getEntityManagerFactory() ); // <======== fails } }
Exception log:
testEntityManagerFactory(eris.services.test.model.UserDomainTest) Time elapsed: 0.011 sec <<< ERROR! org.jboss.weld.exceptions.NullInstanceException: WELD-000044 Unable to obtain instance from null at org.jboss.weld.bean.builtin.CallableMethodHandler.invoke(CallableMethodHandler.java:53) at org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance.invoke(EnterpriseTargetBeanInstance.java:62) at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:125) at org.jboss.weldx.persistence.org$jboss$weld$bean-test$war-ProducerField-eris$services$data$PartsRepositoryProducer$em_$$_WeldProxy.getEntityManagerFactory(org$jboss$weld$bean-test$war-ProducerField-eris$services$data$PartsRepositoryProducer$em_$$_WeldProxy.java) at eris.services.test.model.UserDomainTest.testEntityManagerFactory(UserDomainTest.java:180) 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.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.jboss.arquillian.junit.Arquillian$6$1.invoke(Arquillian.java:251) at org.jboss.arquillian.protocol.local.LocalMethodExecutor.invoke(LocalMethodExecutor.java:40) at org.jboss.arquillian.impl.handler.ContainerTestExecuter.callback(ContainerTestExecuter.java:50) at org.jboss.arquillian.impl.handler.ContainerTestExecuter.callback(ContainerTestExecuter.java:40) at org.jboss.arquillian.impl.event.MapEventManager.fire(MapEventManager.java:63) at org.jboss.arquillian.impl.context.AbstractEventContext.fire(AbstractEventContext.java:115) 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.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.jboss.arquillian.junit.Arquillian$6$1.invoke(Arquillian.java:251) at org.jboss.arquillian.protocol.local.LocalMethodExecutor.invoke(LocalMethodExecutor.java:40) at org.jboss.arquillian.impl.handler.ContainerTestExecuter.callback(ContainerTestExecuter.java:50) at org.jboss.arquillian.impl.handler.ContainerTestExecuter.callback(ContainerTestExecuter.java:40) at org.jboss.arquillian.impl.event.MapEventManager.fire(MapEventManager.java:63) at org.jboss.arquillian.impl.context.AbstractEventContext.fire(AbstractEventContext.java:115) at org.jboss.arquillian.impl.EventTestRunnerAdaptor.test(EventTestRunnerAdaptor.java:157) at org.jboss.arquillian.junit.Arquillian$6.evaluate(Arquillian.java:244) at org.jboss.arquillian.junit.Arquillian$4.evaluate(Arquillian.java:207) at org.jboss.arquillian.junit.Arquillian$5$1.evaluate(Arquillian.java:225) at org.jboss.arquillian.junit.Arquillian$MultiStatementExecutor.execute(Arquillian.java:297) at org.jboss.arquillian.junit.Arquillian$5.evaluate(Arquillian.java:221) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.jboss.arquillian.junit.Arquillian$2.evaluate(Arquillian.java:163) (..cut.. no root cause)
Can't figure out what's wrong here!?
Br, Ove