title: Why Does Grizzly Return 500 "Request Failed" when I use Jackson to return JSON?
body: <p>I have a simple method in my Jersey app that returns a complex object called PodList:</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-html lang-html prettyprint-override"><code>@GET
   @Produces(MediaType.APPLICATION_JSON)
   @Path("/x")
   public PodList getPods(){
    try (KubernetesClient client = new DefaultKubernetesClient();) { 
     PodList pl = client.pods().list();
     ObjectMapper om = new ObjectMapper();
     try {
      String x = om.writeValueAsString(pl);
      System.out.println(x);
     } catch (JsonProcessingException ex) {
      Logger.getLogger(CatalogEndPoint.class.getName()).
        log(Level.SEVERE, null, ex);
     }
     return pl;
    } 
   }</code></pre>
  </div>
  </div>
  </p>
  
  <p>No exception is caught in the catch block and I see the printout, so I am sure that Jackson is capable of serializing this type. </p>
  
  <p>In my Grizzly setup code, I am sure to do this: </p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-html lang-html prettyprint-override"><code>        final ResourceConfig rc = new ResourceConfig();
          rc.packages(CatalogEndPoint.class.getPackage().getName());
          rc.register(JacksonFeature.class);
    rc.property("jersey.config.server.tracing.type", "ALL");
    rc.property("jersey.config.server.tracing.threshold", "VERBOSE");</code></pre>
  </div>
  </div>
  </p>
  
  <p>Note that I enabled server tracing, but it is useless. It doesn't trace anything when I hit my "/x" path on the CatalogEndPoint resource. So, what I did was to setup a java logging.properties file:</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-html lang-html prettyprint-override"><code>#logging.properties file.
  # "handlers" specifies a comma separated list of log Handler 
  # classes. These handlers will be installed during VM startup.
  # Note that these classes must be on the system classpath.
  # By default we only configure a ConsoleHandler, which will only
  # show messages at the INFO and above levels.
  
   handlers= java.util.logging.ConsoleHandler
  
  # Default global logging level.
  # This specifies which kinds of events are logged across
  # all loggers. For any given facility this global level
  # can be overriden by a facility-specific level.
  # Note that the ConsoleHandler also has a separate level
  # setting to limit messages printed to the console.
  .level=ALL
  com.sun.jersey.level=ALL
  
  
  # Limit the messages that are printed on the console to INFO and above.
  
      java.util.logging.ConsoleHandler.level = ALL
      java.util.logging.ConsoleHandler.formatter = 
                                      java.util.logging.SimpleFormatter</code></pre>
  </div>
  </div>
  </p>
  
  <p>Then finally I can see the stack trace</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-html lang-html prettyprint-override"><code>INE: service exception
  org.glassfish.jersey.server.ContainerException: java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.type.TypeFactory.constructType(Ljava/lang/reflect/Type;Ljava/lang/Class;)Lcom/fasterxml/jackson/databind/JavaType;
   at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer$ResponseWriter.rethrow(GrizzlyHttpContainer.java:324)
   at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer$ResponseWriter.failure(GrizzlyHttpContainer.java:306)
   at org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:509)
   at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:334)
   at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
   at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
   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:267)
   at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)
   at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)
   at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)
   at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.service(GrizzlyHttpContainer.java:384)
   at org.glassfish.grizzly.http.server.HttpHandler$1.run(HttpHandler.java:224)
   at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591)
   at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571)
   at java.lang.Thread.run(Thread.java:745)
  Caused by: java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.type.TypeFactory.constructType(Ljava/lang/reflect/Type;Ljava/lang/Class;)Lcom/fasterxml/jackson/databind/JavaType;
   at com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector._fullSerializationType(JaxbAnnotationIntrospector.java:1465)
   at com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector._findContentAdapter(JaxbAnnotationIntrospector.java:1401)
   at com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector.findSerializationContentConverter(JaxbAnnotationIntrospector.java:804)
   at com.fasterxml.jackson.databind.introspect.AnnotationIntrospectorPair.findSerializationContentConverter(AnnotationIntrospectorPair.java:372)
   at com.fasterxml.jackson.databind.ser.std.StdSerializer.findConvertingContentSerializer(StdSerializer.java:417)
   at com.fasterxml.jackson.databind.ser.std.MapSerializer.createContextual(MapSerializer.java:346)
   at com.fasterxml.jackson.databind.SerializerProvider.handlePrimaryContextualization(SerializerProvider.java:928)
   at com.fasterxml.jackson.databind.ser.AnyGetterWriter.resolve(AnyGetterWriter.java:89)
   at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.resolve(BeanSerializerBase.java:350)
   at com.fasterxml.jackson.databind.ser.SerializerCache.addAndResolveNonTypedSerializer(SerializerCache.java:197)
   at com.fasterxml.jackson.databind.SerializerProvider._createAndCacheUntypedSerializer(SerializerProvider.java:1177)
   at com.fasterxml.jackson.databind.SerializerProvider.findValueSerializer(SerializerProvider.java:490)
   at com.fasterxml.jackson.databind.SerializerProvider.findTypedValueSerializer(SerializerProvider.java:688)
   at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:107)
   at com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1428)
   at com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:930)
   at com.fasterxml.jackson.jaxrs.base.ProviderBase.writeTo(ProviderBase.java:650)
   at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.invokeWriteTo(WriterInterceptorExecutor.java:265)
   at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:250)
   at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)
   at org.glassfish.jersey.server.internal.JsonWithPaddingInterceptor.aroundWriteTo(JsonWithPaddingInterceptor.java:106)
   at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)
   at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:86)
   at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)
   at org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1130)
   at org.glassfish.jersey.server.ServerRuntime$Responder.writeResponse(ServerRuntime.java:711)
   at org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:444)
   at org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:434)
   at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:329)
   ... 13 more</code></pre>
  </div>
  </div>
  </p>