users@grizzly.java.net

Re: osgi httpservice jersey help

From: Paul Sandoz <Paul.Sandoz_at_Sun.COM>
Date: Tue, 26 Jan 2010 11:07:54 +0100

Hi David,

I replied to your email on the Jersey dev list:

http://markmail.org/search/?q=list%3Anet.java.dev.jersey.dev#query:list
%3Anet.java.dev.jersey.dev+page:1+mid:3zequuz4e2olvc53+state:results

Unfortunately we were not happy with the degree of testing for OSGi so
decided to defer to the next release. So you will need to check the
OSGi work from the Jersey trunk and build yourself. There are some
grizzly-based tests (Jakub can provide details on those).

Paul.

On Jan 22, 2010, at 5:08 PM, David Tkaczyk wrote:

> Thanks Hubert -- here it is:
>
> http://rapidshare.com/files/339370224/OSGi_1.tar.gz.html
>
> FYI... the build scripts (ant) are a little flaky right now... the
> smaller
> ones - target with one action should work, but the bigger ones need
> to be
> reworked... At least to reproduce this issue, all the jars in the
> "bundle"
> directory should get you to be able to at least start up felix with
> the
> right bundles.
>
> -----Original Message-----
> From: Hubert Iwaniuk [mailto:neotyk_at_kungfoo.pl]
> Sent: Friday, January 22, 2010 10:39 AM
> To: users_at_grizzly.dev.java.net
> Subject: Re: osgi httpservice jersey help
>
> Hi David,
>
> Please try uploading to http://www.rapidshare.com/ or something
> similar.
>
> Regards,
> Hubert.
>
>
>
> On Fri, Jan 22, 2010 at 3:53 PM, David Tkaczyk <djt69_at_comcast.net>
> wrote:
>> Alexey,
>>
>>
>>
>> Thank you very much for the response – I had just about given up
>> hope of
>> ever getting this to work – it has taken up far too much time
>> already.
>> Given the large amount of required Jersey bundles/jar files I’m
>> not sure
>> how “small” it really is. It doesn’t appear to me like the latest
>> Jersey
>> bundle uses “resolution optional” enough. My code within the
>> project is
>> very small.
>>
>>
>>
>> I’ve gzipped up my entire eclipse project (~32MB) – is there an FTP
>> site I
>> can drop this file in? If this is not possible I can send you a
>> bit more
> of
>> my code. The “bundle” directory in that project has everything in it
>> necessary to startup felix.
>>
>>
>>
>> I’m using java 1.6 and org.apache.felix.main.Main to startup Felix.
>>
>>
>>
>> Thanks,
>> Dave
>>
>>
>>
>> ________________________________
>>
>> From: Oleksiy.Stashok_at_Sun.COM [mailto:Oleksiy.Stashok_at_Sun.COM]
>> Sent: Friday, January 22, 2010 9:11 AM
>> To: users_at_grizzly.dev.java.net
>> Subject: Re: osgi httpservice jersey help
>>
>>
>>
>> Hi David,
>>
>>
>>
>> can you pls. provide a testcase (small project) to reproduce the
>> issue?
>>
>>
>>
>> Thank you.
>>
>>
>>
>> WBR,
>>
>> Alexey.
>>
>>
>>
>> On Jan 22, 2010, at 0:09 , David Tkaczyk wrote:
>>
>> Hi,
>>
>>
>>
>> Has anyone ever tested Grizzly’s HttpService with a Jersey
> ServletContainer?
>> I have tried several different ways and have failed to get Jersey to
> locate
>> my resource file. I see an Embedded Grizzly test in the Jersey
>> tests, but
>> not one with HttpService. I see use of the Jersey client in the
>> Grizzly
>> tests, but no use of the Jersey servlet.
>>
>>
>>
>> I’m using Felix BTW.
>>
>>
>>
>> Here’s my code and the result from the startup log file.
>>
>>
>>
>> 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.api.core.PackagesResourceConfig;
>>
>> import com.sun.jersey.spi.container.servlet.ServletContainer;
>>
>>
>>
>> public class RestGrizzlyServiceTrackerCustomizer implements
>> ServiceTrackerCustomizer {
>>
>>
>>
>> private static final Logger LOGGER =
>> LoggerFactory.getLogger(RestGrizzlyServiceTrackerCustomizer.class);
>>
>>
>>
>> @Override
>>
>> public Object addingService(ServiceReference serviceRef) {
>>
>> LOGGER.info("Adding service: " +
>> serviceRef.getBundle().getSymbolicName());
>>
>>
>>
>> Dictionary<String, String> JERSEY_INIT_PARAMS = new
>> Hashtable<String,
>> String>();
>>
>>
>>
>> // package based
>>
>> JERSEY_INIT_PARAMS.put(PackagesResourceConfig.PROPERTY_PACKAGES,
>> "camiant.osgi.msr.rest.resource");
>>
>>
>>
>> // application based
>>
>> //JERSEY_INIT_PARAMS.put("javax.ws.rs.Application",
>> "camiant.osgi.msr.rest.MSRRestApplication");
>>
>>
>>
>> // resource based
>>
>> //
>> JERSEY_INIT_PARAMS.put("com.sun.jersey.config.property.classnames",
>> Resource1.class.getCanonicalName());
>>
>> //
>>
> JERSEY_INIT_PARAMS
> .put("com.sun.jersey.config.property.resourceConfigClass",
>> ClassNamesResourceConfig.class.getName());
>>
>>
>>
>> HttpService grizzlyService =
>>
> (HttpService
> )serviceRef.getBundle().getBundleContext().getService(serviceRef
> );
>>
>> try {
>>
>> ServletContainer jerseyServletContainer = new
>> ServletContainer();
>>
>>
>>
>> grizzlyService.registerServlet("/rs", jerseyServletContainer,
>> JERSEY_INIT_PARAMS, null);
>>
>> } catch (Exception e) {
>>
>> e.printStackTrace();
>>
>> grizzlyService = null;
>>
>> }
>>
>>
>>
>> return grizzlyService;
>>
>> }
>>
>>
>>
>> @Override
>>
>> public void modifiedService(ServiceReference serviceRef, Object
>> httpService) {
>>
>> LOGGER.info("Modifying service: " +
>> serviceRef.getBundle().getSymbolicName());
>>
>> removedService(serviceRef, httpService);
>>
>> addingService(serviceRef);
>>
>> }
>>
>>
>>
>> @Override
>>
>> public void removedService(ServiceReference serviceRef, Object
>> httpService) {
>>
>> LOGGER.info("Removing service: " +
>> serviceRef.getBundle().getSymbolicName());
>>
>>
>> serviceRef.getBundle().getBundleContext().ungetService(serviceRef);
>>
>> httpService = null;
>>
>> }
>>
>>
>>
>> }
>>
>>
>>
>> Welcome to Felix
>>
>> ================
>>
>> 2010-01-21 17:55:36,020-0500 INFO SLF4JBridgeActivator:23 - SLF4J
>> JUL
>> Bridge - starting
>>
>> 2010-01-21 17:55:36,024-0500 INFO SLF4JBridgeActivator:35 - SLF4J
>> JUL
>> Bridge - started
>>
>> 2010-01-21 17:55:36,100-0500 INFO RestBundleActivator:23 - Info -
> Starting
>> Rest Bundle!!!!!!!!!!!!!
>>
>> 2010-01-21 17:55:36,101-0500 INFO
>> RestMSRCoreServiceTrackerCustomizer:16
> -
>> Adding service: camiant.osgi.msr.core
>>
>> 2010-01-21 17:55:36,185-0500 INFO grizzly:765 - Starting Grizzly
> Framework
>> 1.9.18-k - Thu Jan 21 17:55:36 EST 2010
>>
>> 2010-01-21 17:55:36,205-0500 INFO
>> RestGrizzlyServiceTrackerCustomizer:21
> -
>> Adding service: com.sun.grizzly.osgi.grizzly-httpservice-bundle
>>
>> 2010-01-21 17:55:36,226-0500 INFO PackagesResourceConfig:107 -
>> Scanning
> for
>> root resource and provider classes in the packages:
>>
>> camiant.osgi.msr.rest.resource
>>
>> 2010-01-21 17:55:36,250-0500 INFO ScanningResourceConfig:76 - No
>> root
>> resource classes found.
>>
>> 2010-01-21 17:55:36,250-0500 INFO ScanningResourceConfig:83 - 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.RestGrizzlyServiceTrackerCustomizer.addingService(Rest
> GrizzlyServiceTrackerCustomizer.java:38)
>>
>> 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
>>
>> ->
>>
>>
>>
>> So, I’ve tried package-based, resource-based, and application
>> methods of
>> trying to get Jersey to locate my resource file. No luck at all.
>> Am I
> not
>> bundling things such that Jersey can see them (i.e. classload
>> issue?).
>>
>>
>>
>> Any help would be greatly appreciated.
>>
>>
>>
>> Thanks,
>> Dave
>>
>>
>>
>> P.S. here’s the ps…
>>
>>
>>
>> -> ps -l
>>
>> START LEVEL 1
>>
>> ID State Level Location
>>
>> [ 0] [Active ] [ 0] System Bundle
>>
>> [ 1] [Active ] [ 1]
>> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/ant.jar
>>
>> [ 2] [Active ] [ 1]
>> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/asm-all-3.2.jar
>>
>> [ 3] [Active ] [ 1]
>> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/
>> camiant.osgi.msr.core.jar
>>
>> [ 4] [Active ] [ 1]
>> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/
>> camiant.osgi.msr.log.jar
>>
>> [ 5] [Active ] [ 1]
>> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/
>> camiant.osgi.msr.rest.jar
>>
>> [ 6] [Active ] [ 1]
>> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/dom4j-1.6.1.jar
>>
>> [ 7] [Active ] [ 1]
>>
> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/grizzly-httpservice-
> bundle-1.9
> .18-k.jar
>>
>> [ 8] [Active ] [ 1]
>> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/hibernate.bundle.jar
>>
>> [ 9] [Active ] [ 1]
>> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/http-20070405.jar
>>
>> [ 10] [Active ] [ 1]
>> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/jackson-core-
>> asl-1.1.1.jar
>>
>> [ 11] [Active ] [ 1]
>> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/javax.annotation.jar
>>
>> [ 12] [Active ] [ 1]
>> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/javax.ejb.jar
>>
>> [ 13] [Active ] [ 1]
>> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/javax.servlet.jar
>>
>> [ 14] [Active ] [ 1]
>> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/javax.servlet.jsp.jar
>>
>> [ 15] [Active ] [ 1]
>> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/jaxb-osgi.jar
>>
>> [ 16] [Active ] [ 1]
>> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/jdom.jar
>>
>> [ 17] [Active ] [ 1]
>> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/jersey-bundle-1.1.5.jar
>>
>> [ 18] [Active ] [ 1]
>> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/jettison-1.1.jar
>>
>> [ 19] [Active ] [ 1]
>> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/jsr311-api-1.1.1.jar
>>
>> [ 20] [Active ] [ 1]
>> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/jul-to-slf4j-1.5.8.jar
>>
>> [ 21] [Active ] [ 1]
>> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/mail.jar
>>
>> [ 22] [Active ] [ 1]
>>
> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/
> org.apache.felix.configadmin-1
> .2.4.jar
>>
>> [ 23] [Active ] [ 1]
>>
> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/
> org.apache.felix.http.api-2.0.
> 4.jar
>>
>> [ 24] [Active ] [ 1]
>>
> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/
> org.apache.felix.http.base-2.0
> .4.jar
>>
>> [ 25] [Active ] [ 1]
>>
> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/
> org.apache.felix.scr-1.4.0.jar
>>
>> [ 26] [Active ] [ 1]
>>
> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/
> org.apache.felix.shell-1.4.1.j
> ar
>>
>> [ 27] [Active ] [ 1]
>>
> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/
> org.apache.felix.shell.tui-1.4
> .1.jar
>>
>> [ 28] [Active ] [ 1]
>>
> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/
> org.apache.felix.webconsole-2.
> 0.2.jar
>>
>> [ 29] [Resolved ] [ 1]
>>
> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/
> org.apache.log4j.properties.ja
> r
>>
>> [ 30] [Active ] [ 1]
>>
> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/
> org.apache.log4j_1.2.15.v20091
> 0021404.jar
>>
>> [ 31] [Active ] [ 1]
>>
> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/
> org.osgi.compendium-4.2.0.jar
>>
>> [ 32] [Active ] [ 1]
>> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/rome-1.0.jar
>>
>> [ 33] [Active ] [ 1]
>> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/slf4j-api-1.5.8.jar
>>
>> [ 34] [Resolved ] [ 1]
>> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/slf4j-log4j12-1.5.8.jar
>>
>> [ 35] [Active ] [ 1]
>> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/sun.rt.jar
>>
>> [ 36] [Active ] [ 1]
>> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/tools.jar
>>
>> [ 37] [Active ] [ 1]
>> file:/home/users/dtkaczyk/ewks1/OSGi_1/bundle/weld-osgi-bundle.jar
>>
>> ->
>>
>>
>>
>> David Tkaczyk
>>
>> Member of Technical Staff
>>
>> Office: 508-303-4162
>>
>> Fax: 508-486-9595
>>
>>
>>
>> <image001.gif>
>>
>>
>>
>> www.camiant.com
>>
>> 200 Nickerson Road, Marlborough, MA 01752-4603 USA
>>
>>
>>
>> <image002.gif>
>>
>>
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_grizzly.dev.java.net
> For additional commands, e-mail: users-help_at_grizzly.dev.java.net
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_grizzly.dev.java.net
> For additional commands, e-mail: users-help_at_grizzly.dev.java.net
>