4 Replies Latest reply on Nov 17, 2011 10:22 AM by rzvikas

    ArquillianServletRunner not found

    denis_k

      Hello,

      I have deployment method that creates an application from existing EAR file:

       

          @Deployment

          public static EnterpriseArchive createDeployment() {

              EnterpriseArchive ear = ShrinkWrap.createFromZipFile(EnterpriseArchive.class,

                      new File("/home/denisk/dev/MO/MO/target/MO-1.0.1-alpha1-SNAPSHOT-edited.ear"));

              System.out.println(ear.toString(true));

              return ear;

          }

       

      I then deploy this EAR into remote GlassFish 3.1. In server.log I can see that the application gets deployed fine. But in my test I get this error:

       

      java.lang.IllegalArgumentException: ArquillianServletRunner not found. Could not determine ContextRoot from ProtocolMetadata, please contact DeployableContainer developer.

                at org.jboss.arquillian.protocol.servlet.ServletUtil.determineBaseURI(ServletUtil.java:63)

                at org.jboss.arquillian.protocol.servlet.BaseServletProtocol.getExecutor(BaseServletProtocol.java:56)

                at org.jboss.arquillian.protocol.servlet.BaseServletProtocol.getExecutor(BaseServletProtocol.java:30)

                at org.jboss.arquillian.impl.execution.RemoteTestExecuter.getContainerMethodExecutor(RemoteTestExecuter.java:105)

                at org.jboss.arquillian.impl.execution.RemoteTestExecuter.execute(RemoteTestExecuter.java:96)

      ...

       

       

      In ServletUtil.determineBaseURI I can see the following code:

       

               HTTPContext context = metaData.getContext(HTTPContext.class);

               Servlet servlet = context.getServletByName(ServletMethodExecutor.ARQUILLIAN_SERVLET_NAME);

               if(servlet != null)

               {

      ...

               }

               else

               {

                  throw new IllegalArgumentException(

                        ServletMethodExecutor.ARQUILLIAN_SERVLET_NAME + " not found. " +

                        "Could not determine ContextRoot from ProtocolMetadata, please contact DeployableContainer developer.");

               }

      So my servlet is null. But what is strange, there are no servlets at all in HTTPContext (I assume all application's servlets must be there, and it has number of them).

       

      What may cause the problem?

        • 1. Re: ArquillianServletRunner not found
          aslak

          which container is this?

          • 2. Re: ArquillianServletRunner not found
            denis_k

            This is GlassFish 3.1, it uses org.jboss.arquillian.container.glassfish.remote_3_1.GlassFishRestDeployableContainer to deploy the application

            • 3. Re: ArquillianServletRunner not found
              aslak

              hmm, sounds like it's reading out the metadata wrong..

               

              you could have a look at

              org.jboss.arquillian.container.glassfish.remote_3_1.GlassFishRestDeployableContainer.parseForProtocolMetaData

              • 4. Re: ArquillianServletRunner not found
                rzvikas

                DId any one find soultion on that.. I am following exception on running simple test program using JBOSS EAP 5.1

                 

                 

                 

                 

                 

                 

                java.lang.IllegalArgumentException

                 

                 

                : ArquillianServletRunner not found. Could not determine ContextRoot from ProtocolMetadata, please contact DeployableContainer developer.

                at org.jboss.arquillian.protocol.servlet.ServletUtil.determineBaseURI(

                ServletUtil.java:63

                )

                at org.jboss.arquillian.protocol.servlet.BaseServletProtocol.getExecutor(

                BaseServletProtocol.java:56

                )

                at org.jboss.arquillian.protocol.servlet.BaseServletProtocol.getExecutor(

                BaseServletProtocol.java:30

                )

                 

                ---

                 

                test Program :

                public

                class InjectionTestCase extends

                Arquillian

                {

                 

                @Deployment

                 

                public static

                JavaArchive createDeployment() {

                 

                return ShrinkWrap.create(JavaArchive.class

                );

                }

                 

                 

                 

                 

                @Test

                 

                public void shouldBeAbleToInjectResource() throws

                Exception {

                 

                 

                }

                }