1 2 Previous Next 17 Replies Latest reply: Apr 20, 2012 5:45 PM by Sueleyman Vurucu Go to original post RSS
  • 15. Re: Dependency Injection won't work
    Sueleyman Vurucu Expert

    Hi Vineet,

     

    I assume that. I have allready a very dynamic Servicelocator so I can use that. In some cases the DI is not enough for our usecase. But I nothing will be work over DI. @PersistenceContex or @Rescource. Both of then don't work as well. I'm very confused.

  • 16. Re: Dependency Injection won't work
    Sueleyman Vurucu Expert

    Hi it's me again,

     

    it seems so that the DI won't work in an EAR deployment like in a WAR.

     

    I try the deployment shown below:

     

    public static EnterpriseArchive createTestArchive(Module testModule, Class<?>... additionalClasses){

        // Get needed Properties

        String versionbase = SystemPropertiesTestConstants.VERSION_BASE.getValue();

        String wmsear = SystemPropertiesTestConstants.WMS_EAR.getValue();

        String testModuleName = testModule.getModuleName() + "-" + versionbase + ".jar";

        // Retrieve the EAR file

        EnterpriseArchive ear = DependencyResolvers

            .use(MavenDependencyResolver.class)

            .artifact(wmsear)

            .resolveAs(EnterpriseArchive.class).iterator().next();

     

        // EJB Jar with my testcase

        JavaArchive testModuleJar = ear.getAsType(JavaArchive.class, testModuleName);

        ear.delete(testModuleName);

        testModuleJar.addClasses(additionalClasses);

     

        ear.addAsModule(testModuleJar);

     

        return ear;

      }

     

    I get my EAR which is deployed in my local repo and replace it by adding my testcase in my EJB jar. The deployment is correct. I can verify this by adding the folowing property in my arquillan.xml

     

    <engine>

            <property name="deploymentExportPath">target/</property>

    </engine>

     

    Everything works fine but the DI not as I want.

  • 17. Re: Dependency Injection won't work
    Sueleyman Vurucu Expert

    Hi guys,

     

    I think I didn't understood the arquillian apprroach. So my testcase is not an EJB. But by adding a beans.xml I can make it to a CDI bean where I can inject almost everything what I need. It was painfull but I learn it .

     

    So I changed my helper method for deployment as shown below:

     

      public static EnterpriseArchive createTestArchive(Class<?>... additionalClasses){

        String earMvnString= getMyEARString();

     

        JavaArchive jar = ShrinkWrap.create(JavaArchive.class, "additionalClasses.jar")

            .addClasses(additionalClasses).addAsResource(EmptyAsset.INSTANCE, "beans.xml");

     

        return DependencyResolvers

            .use(MavenDependencyResolver.class)

            .artifact(earMvnString)

            .resolveAs(EnterpriseArchive.class).iterator().next()

            .addAsLibrary(jar);

      }

     

    That rocks as I want.

1 2 Previous Next