Ausdrückliche Lokalen EJB-nicht injiziert mit Arquillian

Benutze ich Arquillian zum testen einer stateless session-bean, die eine explizite lokale und remote-Schnittstelle. Aber in den Arquillian test nicht "injizieren" alles in einem Feld, das den Typ der lokalen Schnittstelle, aber es funktioniert für die remote-Schnittstelle.

@Stateless
public class TestServiceImpl implements TestServiceLocal, TestServiceRemote {
    public String greet() {
        return "hallo";
    }
}

Den remote-interface:

@Remote
public interface TestServiceRemote {
    public String greet();
}

Locale-Schnittstelle:

@Local
public interface TestServiceLocal {
    public String greet();
}

- Und dies ist der test:

@RunWith(Arquillian.class)
public class GenericEntityDaoEjbIntegrationTest {

    @Deployment
    public static JavaArchive createTestArchive()
                  throws UnsupportedEncodingException {
        return ShrinkWrap.create(JavaArchive.class, "test.jar")
                .addClasses(
                        TestServiceLocal.class,
                        TestServiceRemote.class,
                        TestServiceImpl.class);
    }

    @EJB
    private TestServiceLocal testServiceLocal;

    @EJB
    private TestServiceRemote testServiceRemote;

    //Will Fail
    @Test
    public void testTestServiceLocal() {
        assertNotNull(this.testServiceLocal);
    }

    //Success    
    @Test
    public void testTestServiceRemote() {
        assertNotNull(this.testServiceRemote);
    }    
}

Ich bin mit arquillian-glassfish-embedded-1.0.0.CR2 -, glassfish-embedded-all 3.1 und arquillian-junit-container 1.0.0.CR5 Den relevanten Teil meiner pom ist:

    <!-- arquillian test -->
    <dependency>
        <groupId>org.jboss.arquillian.junit</groupId>
        <artifactId>arquillian-junit-container</artifactId>
        <version>1.0.0.CR5</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.jboss.arquillian.container</groupId>
        <artifactId>arquillian-container-spi</artifactId>
        <version>1.0.0.CR5</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.jboss.arquillian.container</groupId>
        <artifactId>arquillian-glassfish-embedded-3.1</artifactId>
        <version>1.0.0.CR2</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.glassfish.extras</groupId>
        <artifactId>glassfish-embedded-all</artifactId>
        <version>3.1</version>
        <scope>test</scope>
    </dependency>

Dies ist die für Sie relevanten Teil der log-Datei (Sie enthält keine Ausnahme):

10.04.2012 15:38:16 com.sun.ejb.containers.BaseContainer initializeHome
INFO: Portable JNDI names for EJB TestServiceImpl : [java:global/test/TestServiceImpl!de.test.service.TestServiceRemote, java:global/test/TestServiceImpl!de.test.service.TestServiceLocal]
10.04.2012 15:38:16 com.sun.ejb.containers.BaseContainer initializeHome
INFO: Glassfish-specific (Non-portable) JNDI names for EJB TestServiceImpl : [de.test.service.TestServiceRemote, de.test.service.TestServiceRemote#de.test.service.TestServiceRemote]
10.04.2012 15:38:16 com.sun.enterprise.web.WebApplication start
INFO: WEB0671: Loading application [test] at [/test]
10.04.2012 15:38:16 org.glassfish.deployment.admin.DeployCommand execute
INFO: test was successfully deployed in 11.844 milliseconds.

Was ist mein Fehler? Was muss ich ändern, das eine Instanz injiziert Gebietsschema-Schnittstelle zu?

InformationsquelleAutor Ralph | 2012-04-10
Schreibe einen Kommentar