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

    ArquillianServletRunner not found

    Denis Kniazhev Newbie

      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?