[arquillian-issues] [JBoss JIRA] (ARQ-1388) @EJB not working in embedded glassfish for @Remote Stateless beans if called more than twice

Dominik Kuhn (JIRA) jira-events at lists.jboss.org
Tue May 21 12:27:06 EDT 2013


     [ https://issues.jboss.org/browse/ARQ-1388?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dominik Kuhn updated ARQ-1388:
------------------------------

    Attachment: arqtest.zip


ok, i'm glad file upload is possible
                
> @EJB not working in embedded glassfish for @Remote Stateless beans if called more than twice
> --------------------------------------------------------------------------------------------
>
>                 Key: ARQ-1388
>                 URL: https://issues.jboss.org/browse/ARQ-1388
>             Project: Arquillian
>          Issue Type: Feature Request
>      Security Level: Public(Everyone can see) 
>          Components: Base Implementation
>    Affects Versions: 1.0.3.Final, glassfish_1.0.0.CR4
>            Reporter: Dominik Kuhn
>         Attachments: arqtest.zip
>
>
> We have 20 testclasses. the ejb's are injected by the @EJB annotation.
> If each testclass is run standalone (using eclipse), everything works and the tests are successful.
> If all testclasses are run together (using eclipse or maven surefire plugin) the test fails after the first two testclasses with one of the two following error messages:
> java.lang.NullPointerException
> 	at arqtest.test.GreeterTest5.test(GreeterTest5.java:23)
> ... 
> or 
> java.lang.IllegalArgumentException: ArquillianServletRunner not found. Could not determine ContextRoot from ProtocolMetadata, please contact DeployableContainer developer.
> ...
> Error message is:
> If I change the @Remote annotation of the stateless beans to @Local the tests are successful, even if run together.
> To test this i created a very simple test project, which contains:
> ###### IGreeterService.java ######
> package arqtest;
> public interface IGreeterService {
>     String sayHello();
> }
> ###### GreeterService.java ######
> package arqtest;
> import java.io.Serializable;
> import javax.ejb.Local;
> import javax.ejb.Remote;
> import javax.ejb.Stateless;
> @Stateless(name = "GreeterService")
> @Local(IGreeterService.class)
> @Remote(IGreeterService.class)
> public class GreeterService implements Serializable, IGreeterService {
>     private static final long serialVersionUID = 1L;
>     @Override
>     public String sayHello() {
> 	return "Hello";
>     }
> }
> ###### TestBase ######
> package arqtest.test;
> import org.jboss.arquillian.container.test.api.Deployment;
> import org.jboss.shrinkwrap.api.Archive;
> import org.jboss.shrinkwrap.api.ArchivePaths;
> import org.jboss.shrinkwrap.api.ShrinkWrap;
> import org.jboss.shrinkwrap.api.spec.EnterpriseArchive;
> import org.jboss.shrinkwrap.api.spec.JavaArchive;
> public class TestBase {
>     private static EnterpriseArchive ear;
>     private static JavaArchive jar;
>     @Deployment(testable = true)
>     // @OverProtocol("EJB 3.1")
>     public static Archive<?> createArchive() {
> 	if (ear == null) {
> 	    jar = ShrinkWrap.create(JavaArchive.class, "test.jar");
> 	    jar.addPackages(true, "arqtest");
> 	    jar.addAsResource("META-INF/beans.xml");
> 	    jar.addAsResource("test-persistence.xml", ArchivePaths.create("META-INF/persistence.xml"));
> 	    // comment out when interested in content of archive
> 	    System.out.println(jar.toString(true));
> 	    ear = ShrinkWrap.create(EnterpriseArchive.class, "test.ear");
> 	    ear.addAsModule(jar);
> 	    System.out.println(ear.toString(true));
> 	}
> 	return ear;
>     }
> }
> ###### GreeterTest.java ######
> ## For demonstration I copied this class 10 times -->  GreeterTest1.java - GreeterTest9.java ##
> package arqtest.test;
> import static org.junit.Assert.assertEquals;
> import javax.ejb.EJB;
> import org.jboss.arquillian.junit.Arquillian;
> import org.junit.Test;
> import org.junit.runner.RunWith;
> import arqtest.IGreeterService;
> @RunWith(Arquillian.class)
> // @RunAsClient
> public class GreeterTest extends TestBase {
>     @EJB(mappedName = "java:global/test/testejb/GreeterService")
>     private IGreeterService greeter;
>     @Test
>     public final void test() {
> 	assertEquals("Hello", greeter.sayHello());
>     }
> }
> ###### arquillian.xml #####
> <?xml version="1.0" encoding="UTF-8"?>
> <arquillian xmlns="http://www.jboss.org/arquillian-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>   xsi:schemaLocation="
>       http://www.jboss.org/arquillian-1.0
>       http://www.jboss.org/schema/arquillian/arquillian-1.0.xsd">
>   <defaultProtocol type="Servlet 3.0" />
>   <container qualifier="glassfish" default="true">
>     <configuration>
>       <property name="bindHttpPort">9999</property>
>     </configuration>
>   </container>
>   <engine>
>     <deploymentExportPath>z:/temp/arquillian/</deploymentExportPath>
>   </engine>
> </arquillian>
> ##### pom.xml #####
> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
>   <modelVersion>4.0.0</modelVersion>
>   <groupId>arqtest</groupId>
>   <artifactId>arqtest</artifactId>
>   <version>0.0.1-SNAPSHOT</version>
>   <name>ArqTest</name>
>   <build>
>     <pluginManagement>
>       <plugins>
>         <plugin>
>           <artifactId>maven-compiler-plugin</artifactId>
>           <version>2.3.2</version>
>           <configuration>
>             <source>1.7</source>
>             <target>1.7</target>
>             <compilerArguments>
>               <endorseddirs>${endorsed.dir}</endorseddirs>
>             </compilerArguments>
>           </configuration>
>         </plugin>
>         <plugin>
>           <artifactId>maven-surefire-plugin</artifactId>
>           <version>2.13</version>
>           <configuration></configuration>
>         </plugin>
>       </plugins>
>     </pluginManagement>
>   </build>
>   <profiles>
>     <profile>
>       <id>complete</id>
>       <build>
>         <plugins>
>           <plugin>
>             <artifactId>maven-surefire-plugin</artifactId>
>             <version>2.13</version>
>             <configuration>
>               <excludes>
>                 <exclude>**/live/*.java</exclude>
>                 <exclude>**/BaseStateTest.java</exclude>
>               </excludes>
>               <testFailureIgnore>true</testFailureIgnore>
>               <outputDirectory>test-reports</outputDirectory>
>             </configuration>
>           </plugin>
>           <plugin>
>             <artifactId>maven-site-plugin</artifactId>
>             <version>2.2</version>
>           </plugin>
>           <plugin>
>             <artifactId>maven-surefire-report-plugin</artifactId>
>             <executions>
>               <execution>
>                 <id>during-packaging</id>
>                 <phase>package</phase>
>                 <goals>
>                   <goal>report</goal>
>                 </goals>
>               </execution>
>             </executions>
>             <configuration>
>               <aggregate>true</aggregate>
>             </configuration>
>           </plugin>
>         </plugins>
>       </build>
>     </profile>
>   </profiles>
>   <repositories>
>     <repository>
>       <id>apache-m2-snapshot</id>
>       <name>Apache Snapshot Repository</name>
>       <url>http://repository.apache.org/snapshots</url>
>     </repository>
>   </repositories>
>   <dependencies>
>     <dependency>
>       <groupId>junit</groupId>
>       <artifactId>junit</artifactId>
>       <version>4.11</version>
>       <scope>test</scope>
>     </dependency>
>     <dependency>
>       <groupId>org.hsqldb</groupId>
>       <artifactId>hsqldb</artifactId>
>       <version>2.2.9</version>
>       <scope>test</scope>
>     </dependency>
>     <dependency>
>       <groupId>org.jboss.arquillian</groupId>
>       <artifactId>arquillian-bom</artifactId>
>       <version>1.0.3.Final</version>
>       <scope>import</scope>
>       <type>pom</type>
>     </dependency>
>     <dependency>
>       <groupId>org.jboss.arquillian.container</groupId>
>       <artifactId>arquillian-glassfish-embedded-3.1</artifactId>
>       <version>1.0.0.CR4</version>
>       <scope>test</scope>
>     </dependency>
>     <dependency>
>       <groupId>org.jboss.arquillian.junit</groupId>
>       <artifactId>arquillian-junit-container</artifactId>
>       <version>1.0.3.Final</version>
>       <scope>test</scope>
>     </dependency>
>     <dependency>
>       <groupId>org.glassfish.main.extras</groupId>
>       <artifactId>glassfish-embedded-all</artifactId>
>       <version>3.1.2.2</version>
>       <scope>provided</scope>
>     </dependency>
>     <!-- <dependency>
>       <groupId>org.glassfish.extras</groupId>
>       <artifactId>glassfish-embedded-all</artifactId>
>       <version>3.2-b06</version>
>       <scope>provided</scope>
>       </dependency>
>     -->
>     <dependency>
>       <groupId>org.slf4j</groupId>
>       <artifactId>slf4j-api</artifactId>
>       <version>1.5.10</version>
>       <scope>test</scope>
>     </dependency>
>     <dependency>
>       <groupId>org.mockito</groupId>
>       <artifactId>mockito-all</artifactId>
>       <version>1.9.0</version>
>     </dependency>
>   </dependencies>
>   <dependencyManagement />
>   <properties>
>     <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
>     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>   </properties>
> </project>
> --> If possible, i'd like to upload my test project

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the arquillian-issues mailing list