title: JerseyTest using GrizzlyWebTestContainerFactory in Jersey 2.13
body: <p>I am trying to get a JerseyTest running using a <code>org.glassfish.jersey.test.grizzly.GrizzlyWebContainerFactory</code>. I already searched the internet and tried several things for the better part of a day. It seems to be impossible and I would really appreciate any help on how to get this up and running. </p>
  
  <p>I created a minimal example based on the code from the Jersey 2 documentation. The code looks like:</p>
  
  <pre><code>package test;
  
  import static org.junit.Assert.assertEquals;
  
  import javax.ws.rs.GET;
  import javax.ws.rs.Path;
  import javax.ws.rs.core.Application;
  
  import org.glassfish.jersey.server.ResourceConfig;
  import org.glassfish.jersey.test.DeploymentContext;
  import org.glassfish.jersey.test.JerseyTest;
  import org.glassfish.jersey.test.ServletDeploymentContext;
  import org.glassfish.jersey.test.grizzly.GrizzlyWebTestContainerFactory;
  import org.glassfish.jersey.test.spi.TestContainerException;
  import org.glassfish.jersey.test.spi.TestContainerFactory;
  import org.junit.Test;
  
  public class DistributedDeploymentTest extends JerseyTest {
  
  @Path("hello")
  public static class HelloResource {
      @GET
      public String getHello() {
          return "Hello World!";
      }
  }
  
  @Override
  protected Application configure() {
      return new ResourceConfig(HelloResource.class);
  }
  
  @Override
  protected TestContainerFactory getTestContainerFactory() throws TestContainerException {
      return new GrizzlyWebTestContainerFactory();
  }
  
  @Override
  protected DeploymentContext configureDeployment() {
      return ServletDeploymentContext.builder(configure()).build();
  }
  
  @Test
  public void testSingleNode() throws Exception {
      final String hello = target("hello").request().get(String.class);
      assertEquals("Hello World!", hello);
  }
  }
  </code></pre>
  
  <p>It works perfectly fine without the <code>GrizzlyWebTestContainerFactory</code>. However upon running this example I always get:</p>
  
  <pre><code>javax.ws.rs.NotFoundException: HTTP 404 Not Found
      at org.glassfish.jersey.client.JerseyInvocation.convertToException(JerseyInvocation.java:956)
      at org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:795)
      at org.glassfish.jersey.client.JerseyInvocation.access$500(JerseyInvocation.java:91)
      at org.glassfish.jersey.client.JerseyInvocation$2.call(JerseyInvocation.java:683)
      at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
      at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
      at org.glassfish.jersey.internal.Errors.process(Errors.java:228)
      at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:424)
      at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:679)
      at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:408)
      at org.glassfish.jersey.client.JerseyInvocation$Builder.get(JerseyInvocation.java:308)
      at de.tudresden.inf.rn.zeebus.DistributedDeploymentTest.testSingleNode(DistributedDeploymentTest.java:66)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:606)
      at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
      at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
      at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
      at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
      at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
      at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
      at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
      at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
      at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
      at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
      at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
      at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
  </code></pre>
  
  <p>I'm using the following Maven dependencies:</p>
  
  <pre><code>        &lt;dependency&gt;
              &lt;groupId&gt;org.glassfish.jersey.containers&lt;/groupId&gt;
              &lt;artifactId&gt;jersey-container-servlet&lt;/artifactId&gt;
              &lt;version&gt;2.13&lt;/version&gt;
          &lt;/dependency&gt;
          &lt;dependency&gt;
              &lt;groupId&gt;org.glassfish.jersey.test-framework&lt;/groupId&gt;
              &lt;artifactId&gt;jersey-test-framework-core&lt;/artifactId&gt;
              &lt;version&gt;2.13&lt;/version&gt;
          &lt;/dependency&gt;
          &lt;dependency&gt;
              &lt;groupId&gt;org.glassfish.jersey.test-framework.providers&lt;/groupId&gt;
              &lt;artifactId&gt;jersey-test-framework-provider-grizzly2&lt;/artifactId&gt;
              &lt;version&gt;2.13&lt;/version&gt;
          &lt;/dependency&gt;
          &lt;dependency&gt;
              &lt;groupId&gt;org.eclipse.jetty&lt;/groupId&gt;
              &lt;artifactId&gt;jetty-server&lt;/artifactId&gt;
              &lt;version&gt;9.2.2.v20140723&lt;/version&gt;
          &lt;/dependency&gt;
          &lt;dependency&gt;
              &lt;groupId&gt;org.eclipse.jetty&lt;/groupId&gt;
              &lt;artifactId&gt;jetty-webapp&lt;/artifactId&gt;
              &lt;version&gt;9.2.2.v20140723&lt;/version&gt;
          &lt;/dependency&gt;
  </code></pre>