users@jersey.java.net

Felix/Grizzly/Jersey

From: David Tkaczyk <dtkaczyk_at_camiant.com>
Date: Sun, 27 Dec 2009 15:27:56 -0500

Hi,



I'm really struggling (going on 2 or 3 days now) to get Felix to work with a

Grizzly Http Service deploying Jersey. I've googled like crazy to

try and resolve on my own, but no luck. I'm hoping that I'm overlooking

something simple that someone can point out to me. Everything is

ACTIVE/RESOLVED from an osgi perspective. My problem appears to be that

Jersey cannot locate my resource file. Along with Jersey's inability to

find my resource class there's also a stack trace (ServiceConfigurationError)

that I'll post below. Also, I've posted this on the felix site as well, but

haven't received any help.



Thanks,

Dave



package camiant.osgi.msr.rest;



import java.util.Dictionary;

import java.util.Hashtable;

import org.osgi.framework.ServiceReference;

import org.osgi.service.http.HttpService;

import org.osgi.util.tracker.ServiceTrackerCustomizer;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import com.sun.jersey.server.impl.container.servlet.ServletAdaptor;



public class HttpServiceServiceTrackerCustomizer implements

ServiceTrackerCustomizer {



  private static final Logger LOGGER =

LoggerFactory.getLogger(HttpServiceServiceTrackerCustomizer.class);



  private static final Dictionary<String, String> JERSEY_INIT_PARAMS = new

Hashtable<String, String>();



  static {

    // NOTE: I've tried several different ways to get Jersey to find my

resource file, but no luck. package config/resource config/custom

Application

    // Just about every different way that Jersey allows, I've

tried



    JERSEY_INIT_PARAMS.put("com.sun.jersey.config.property.packages",

"camiant.osgi.msr.rest.resource");

  }



  @Override

  public Object addingService(ServiceReference serviceRef) {



    LOGGER.info("Adding service: " +

serviceRef.getBundle().getSymbolicName());



    HttpService grizzlyService =

(HttpService)serviceRef.getBundle().getBundleContext().getService(serviceRef

);



    try {

       // NOTE: as you see I've tried both ServletContainer and

ServletAdaptor - both produce similar results



      //grizzlyService.registerServlet("/rs", new ServletContainer(),

JERSEY_INIT_PARAMS, null);



      grizzlyService.registerServlet("/rs", new ServletAdaptor(),

JERSEY_INIT_PARAMS, null);

    } catch (Exception e) {

      e.printStackTrace(); //TODO what is best here..

      grizzlyService = null;

    }



    return grizzlyService;

  }

}



package camiant.osgi.msr.rest.resource;



import javax.ws.rs.GET;

import javax.ws.rs.Path;

import javax.ws.rs.Produces;

import javax.ws.rs.core.Response;



@Path("/msr")

public class TestResource {



  @GET

  @Path("/keytypes")

  @Produces("text/xml")

  public Response getKeyTypes() {

   return Response.ok().entity("this is a cheap key type!!!!!!!!!").build();

  }

}



Welcome to Felix

================



2009-12-23 16:30:47,872-0500 INFO RestMSRCoreServiceTrackerCustomizer:16 -

Adding service: camiant.osgi.msr.core



Dec 23, 2009 4:30:48 PM com.sun.grizzly.Controller logVersion



INFO: Starting Grizzly Framework 1.9.18-e - Wed Dec 23 16:30:48 EST 2009



2009-12-23 16:30:48,220-0500 INFO HttpServiceServiceTrackerCustomizer:65 -

Adding service: com.sun.grizzly.osgi.grizzly-httpservice-bundle



Dec 23, 2009 4:30:48 PM com.sun.jersey.api.core.PackagesResourceConfig init



INFO: Scanning for root resource and provider classes in the packages:

  camiant.osgi.msr.rest.resource



Dec 23, 2009 4:30:48 PM com.sun.jersey.api.core.ScanningResourceConfig init

INFO: No root resource classes found.

Dec 23, 2009 4:30:48 PM com.sun.jersey.api.core.ScanningResourceConfig init

INFO: No provider classes found.



ERROR: EventDispatcher: Error during dispatch.

(com.sun.jersey.spi.service.ServiceConfigurationError:

com.sun.jersey.spi.container.WebApplicationProvider: The class

com.sun.jersey.server.impl.container.WebApplicationProviderImpl implementing

provider interface com.sun.jersey.spi.container.WebApplicationProvider could

not be instantiated: null)



com.sun.jersey.spi.service.ServiceConfigurationError:

com.sun.jersey.spi.container.WebApplicationProvider: The class

com.sun.jersey.server.impl.container.WebApplicationProviderImpl implementing

provider interface com.sun.jersey.spi.container.WebApplicationProvider could

not be instantiated: null



            at

com.sun.jersey.spi.service.ServiceFinder.fail(ServiceFinder.java:380)

            at

com.sun.jersey.spi.service.ServiceFinder.access$600(ServiceFinder.java:144)

            at

com.sun.jersey.spi.service.ServiceFinder$LazyObjectIterator.hasNext(ServiceF

inder.java:683)

            at

com.sun.jersey.spi.container.WebApplicationFactory.createWebApplication(WebA

pplicationFactory.java:61)

            at

com.sun.jersey.spi.container.servlet.ServletContainer.create(ServletContaine

r.java:325)

            at

com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.c

reate(ServletContainer.java:240)

            at

com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:548

)

            at

com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:201

)

            at

com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.

java:307)

            at

com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.

java:470)

            at javax.servlet.GenericServlet.init(GenericServlet.java:242)

            at

com.sun.grizzly.http.servlet.ServletAdapter.loadServlet(ServletAdapter.java:

428)

            at

com.sun.grizzly.osgi.httpservice.OSGiServletAdapter.startServlet(OSGiServlet

Adapter.java:99)

            at

com.sun.grizzly.osgi.httpservice.OSGiMainAdapter.registerServletAdapter(OSGi

MainAdapter.java:178)

            at

com.sun.grizzly.osgi.httpservice.HttpServiceImpl.registerServlet(HttpService

Impl.java:92)

            at

camiant.osgi.msr.rest.HttpServiceServiceTrackerCustomizer.addingService(Http

ServiceServiceTrackerCustomizer.java:70)

            at

org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker

.java:896)

            at

org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:261)

            at

org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:233)

            at

org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.j

ava:840)

            at

org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallbac

k(EventDispatcher.java:878)

            at

org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDi

spatcher.java:732)

            at

org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispat

cher.java:662)

            at

org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:3587)

            at org.apache.felix.framework.Felix.access$000(Felix.java:40)

            at

org.apache.felix.framework.Felix$1.serviceChanged(Felix.java:625)

            at

org.apache.felix.framework.ServiceRegistry.registerService(ServiceRegistry.j

ava:90)

            at

org.apache.felix.framework.Felix.registerService(Felix.java:2711)

            at

org.apache.felix.framework.BundleContextImpl.registerService(BundleContextIm

pl.java:252)

            at

org.apache.felix.framework.BundleContextImpl.registerService(BundleContextIm

pl.java:230)

            at

com.sun.grizzly.osgi.httpservice.Activator.start(Activator.java:89)

            at

org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.jav

a:639)

            at

org.apache.felix.framework.Felix.activateBundle(Felix.java:1700)

            at org.apache.felix.framework.Felix.startBundle(Felix.java:1622)

            at

org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1077)

            at

org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java:264)

            at java.lang.Thread.run(Thread.java:619)

Caused by: java.lang.ClassCastException

            at java.lang.Class.cast(Class.java:2990)

            at

com.sun.jersey.spi.service.ServiceFinder$LazyObjectIterator.hasNext(ServiceF

inder.java:641)



            ... 34 more



[INFO] Started bridged http service

ps



START LEVEL 1



   ID State Level Name

[ 0] [Active ] [ 0] System Bundle (2.0.1)

[ 1] [Active ] [ 1] Ant repackaging (3.0.0.b74b)

[ 2] [Active ] [ 1] ASM all classes (3.2)

[ 3] [Active ] [ 1] Camiant MSR Core (0.1.0)

[ 4] [Active ] [ 1] Camiant MSR REST (0.1.0)

[ 5] [Active ] [ 1] Grizzly OSGi HttpService Bundle (1.9.18.e)

[ 6] [Active ] [ 1] http (0)

[ 7] [Active ] [ 1] Jackson JSON processor (1.1.1)

[ 8] [Active ] [ 1] javax.annotation API v.1.1 (3.0.0.b74b)

[ 9] [Active ] [ 1] javax.ejb API v.3.1 (3.0.0.b74b)

[ 10] [Active ] [ 1] Java Persistence API 2.0 (2.0.0.v200911271158)

[ 11] [Active ] [ 1] javax.servlet API v.3.0 (3.0.0.b74b)

[ 12] [Active ] [ 1] javax.servlet.jsp API v.2.1.2 (3.0.0.b74b)

[ 13] [Active ] [ 1] jaxb-api (2.2)

[ 14] [Active ] [ 1] jaxb (2.2)

[ 15] [Active ] [ 1] jdom (0)

[ 16] [Active ] [ 1] jersey-bundle (1.1.5.ea-SNAPSHOT)

[ 17] [Active ] [ 1] jettison (1.1)

[ 18] [Active ] [ 1] jsr311-api (1.1.1)

[ 19] [Active ] [ 1] JavaMail API (1.4.3)

[ 20] [Active ] [ 1] Apache Felix Configuration Admin Service

(1.2.4)

[ 21] [Active ] [ 1] Apache Felix Http Bundle (2.0.4)

[ 22] [Active ] [ 1] Apache Felix Shell Service (1.4.1)

[ 23] [Active ] [ 1] Apache Felix Shell TUI (1.4.1)

[ 24] [Active ] [ 1] Apache Felix Web Management Console (2.0.2)

[ 25] [Resolved ] [ 1] Camiant MSR Log4JProperties (0.5.0)

[ 26] [Active ] [ 1] Apache Jakarta log4j Plug-in

(1.2.15.v200910021404)

[ 27] [Active ] [ 1] ROME, RSS and atOM utilitiEs for Java (1.0)

[ 28] [Active ] [ 1] slf4j-api (1.5.8)

[ 29] [Resolved ] [ 1] slf4j-log4j12 (1.5.8)

[ 30] [Active ] [ 1] Sun Misc RT Packages (1.0.0)

[ 31] [Active ] [ 1] tools (0)

[ 32] [Active ] [ 1] Weld OSGi Bundle (1.0.0.SP4)




David Tkaczyk
Member of Technical Staff

[cid:image001.gif@01CA8709.29FCA8C0]<http://www.fiercewireless.com/special-reports/camiant-top-wireless-company-2009-fiercewireless-fierce-15>

www.camiant.com<http://www.camiant.com>
200 Nickerson Road, Marlborough, MA 01752-4603 USA

[cid:image002.gif@01CA8709.29FCA8C0]<http://twitter.com/camiant>






image001.gif
(image/gif attachment: image001.gif)

image002.gif
(image/gif attachment: image002.gif)