Regarding services, I just follow Roberto Rojas' suggestion, and he
did use a services file in his springdm-weather+cxf sample.

I haven't tried removing it again (I'm out of patience), but since
what I'm dealing with is OSGi, it's probably not just what's there..
But whether it's loaded/imported by the correct classloader/bundle.

About jsr311-api, it might work for Roberto Rojas' case, maybe because
he used a springdm reference proxy. I use a direct JAX-RS serviceBean,
and i got problems see the bottom of my previous mail for chronology.

I guess because jsr311-osgi-api doesn't have correct imports, but then
again, if CXF doesn't provide nor endorse a particular jsr311-api
artifact, how would we know its "correctness"? More convoluted than
standard Java, manifest.mf can make or break a OSGi bundle.

I've reported an issue regarding jsr311-api and CXF here:
https://issues.apache.org/jira/browse/CXF-1929

I would agree if it should be included in default ServiceMix distro,
however CXF "standalone" should point application developers to a
particular supported jsr311-api artifact.

On 12/1/08, Freeman Fang <[EMAIL PROTECTED]> wrote:
> Hi Hendy,
> Two quick questions.
> Freeman
> Hendy Irawan wrote:
>> Since I made it work ultimately, I want to share how I did it.
>>
>>    1. From ServiceMix shell: `feature install web`
>>    2. From ServiceMix shell: `feature install cxf-osgi`
>>    3. CXF extension must be correct in META-INF/spring/beans.xml (include
>> cxf-extension-jaxrs-binding, cxf-extension-http, osgi/cxf-extension-osgi,
>> exclude cxf-servlet)
>>    4. add `META-INF/services/` JAX-RS delegate. From
>> http://rjrojas.blogspot.com/2008/09/restful-web-services-using-iona-fuse.html:
>> Note: JAX-RS needs to know what JAX-RS implementation would be used.
>> This
>> is done by creating a file called "javax.ws.rs.ext.RuntimeDelegate" in the
>> META-INF/services directory. The contents of the file specify the name of
>> the class performing this implementation
>> (org.apache.cxf.jaxrs.impl.RuntimeDelegateImpl).
>>
> Why you need add this file yourself? I think in the cxf bundle jar
> already have this services file for you.
>>    5. Jettison is needed
>>    6. Embed jsr311-api
>>
> I'm not sure what you mean embed jsr311-api? Install jsr311-osgi-api
> bundle doesn't work for you? Cxf bundle doesn't include jsr311-api , but
> import javax.ws.rs package as optional resolution, I just think install
> jsr311-osgi-api bundle should work.
>> What I still don't like is that I need to embed jsr311-api... Shouldn't
>> this
>> be in CXF bundle?
>>
>> On Sun, Nov 30, 2008 at 1:55 PM, Hendy Irawan
>> <[EMAIL PROTECTED]>wrote:
>>
>>
>>> By the way, I have no problem using JAX-WS in ServiceMix4, thanks to
>>> ServiceMix+CXF's excellent built-in support (I do get occasional "cannot
>>> start bundle due to (unspecified) constraints" so I clear the data/cache
>>> directory often)
>>>
>>> My problem is when using JAX-RS...
>>> http://rjrojas.blogspot.com/2008/09/restful-web-services-using-iona-fuse.htmlgives
>>> example of CXF+SMX4+JAX-RS however it uses Spring-DM OSGi service
>>> reference in JAX-RS server's <serviceBeans>, my app directly refers to a
>>> JAX-RS-annotated bean, probably this is the cause... (however in a pure
>>> Java
>>> / non-OSGi setting, it works well)
>>>
>>> Thank you.
>>>
>>> PS: I should've changed the subject... And sorry for cross-posting,
>>> because
>>> I think now this is related more to ServiceMix than Felix.
>>>
>>>
>>> On Sun, Nov 30, 2008 at 1:43 PM, Hendy Irawan
>>> <[EMAIL PROTECTED]>wrote:
>>>
>>>
>>>> Thanks David, that's exactly what I'm trying to do.
>>>>
>>>> Frustrated with trying to assemble my own CXF OSGi jar(s), ...
>>>>
>>>> Then I used cxf-bundle with Felix... however it requires a lot of
>>>> dependencies.. especially external dependencies (I take from
>>>> SpringSource)
>>>> because a lot of dependencies of cxf-bundle are not OSGi bundles but
>>>> simple
>>>> Java jars.
>>>>
>>>> Even with all dependencies satisfied, I still get:
>>>> java.lang.ClassNotFoundException: com.sun.xml.bind.v2.ContextFactory
>>>> that until now I cannot resolve. Note that the jaxb JARs from CXF
>>>> (jaxb-api, jaxb-impl, jaxb-xjc) are not OSGi bundles, therefore I use
>>>> the
>>>> ones from SpringSource.
>>>>
>>>> Frustrated with com.sun.xml.bind.v2 problem, I tried ServiceMix 4, this
>>>> time I use the FUSE version because of a broken link in Apache
>>>> ServiceMix 4
>>>> web site* (my bad, actually)
>>>>
>>>> My app uses JAX-RS and this doesn't just work in ServiceMix 4 so I had
>>>> to
>>>> download jsr311-api-0.8 OSGified from Roberto Rojas'
>>>> http://rjrojas.blogspot.com/2008/09/restful-web-services-using-iona-fuse.html
>>>>
>>>> This time, I got a "better" error, which is ClassNotFoundException on
>>>> jaxa.ws.rs.Path. It turns out I have to do a "osgi refresh" on the
>>>> cxf-bundle JAR everytime making a change on my manifest or deploying a
>>>> new
>>>> library. (why is this? Shouldn't FileMonitor do this for me?)
>>>>
>>>> The current state, is I'm getting two different errors, depending on
>>>> which
>>>> bundle I try to refresh.
>>>>
>>>> If I refresh cxf-bundle (#91 on my list), I get:
>>>>
>>>> servicemix osgi> refresh 91
>>>> servicemix osgi> Nov 30, 2008 1:40:46 PM
>>>> org.apache.cxf.endpoint.ServerImpl initDestination
>>>> INFO: Setting the server's publish address to be /Test
>>>> Exception in thread "SpringOsgiExtenderThread-88"
>>>> org.springframework.beans.factory.BeanCreationException: Error creating
>>>> bean
>>>> with name 'restServer': Error setting property values; nested exception
>>>> is
>>>> org.springframework.beans.PropertyBatchUpdateException; nested
>>>> PropertyAccessExceptions (1) are:
>>>> PropertyAccessException 1:
>>>> org.springframework.beans.MethodInvocationException: Property
>>>> 'serviceBeans'
>>>> threw exception; nested exception is java.lang.NoClassDefFoundError:
>>>> Could
>>>> not initialize class javax.ws.rs.core.MediaType
>>>>         at
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1278)
>>>>         at
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
>>>>         at
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
>>>>         at
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
>>>>         at java.security.AccessController.doPrivileged(Native Method)
>>>>         at
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
>>>>         at
>>>> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
>>>>         at
>>>> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221)
>>>>         at
>>>> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
>>>>         at
>>>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
>>>>         at
>>>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
>>>>         at
>>>> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
>>>>         at
>>>> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
>>>>         at
>>>> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh(AbstractDelegatedExecutionApplicationContext.java:276)
>>>>         at
>>>> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationContextExecutor.java:145)
>>>>         at java.lang.Thread.run(Thread.java:619)
>>>> Caused by: org.springframework.beans.PropertyBatchUpdateException;
>>>> nested
>>>> PropertyAccessExceptions (1) are:
>>>> PropertyAccessException 1:
>>>> org.springframework.beans.MethodInvocationException: Property
>>>> 'serviceBeans'
>>>> threw exception; nested exception is java.lang.NoClassDefFoundError:
>>>> Could
>>>> not initialize class javax.ws.rs.core.MediaType
>>>>         at
>>>> org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:104)
>>>>         at
>>>> org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:59)
>>>>         at
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1275)
>>>>         ... 15 more
>>>>
>>>> However if I refresh my own bundle (#34), I get:
>>>>
>>>> servicemix osgi> refresh 34
>>>> servicemix osgi> Nov 30, 2008 1:41:34 PM
>>>> org.apache.cxf.endpoint.ServerImpl initDestination
>>>> INFO: Setting the server's publish address to be /Test
>>>> Exception in thread "SpringOsgiExtenderThread-90"
>>>> org.springframework.beans.factory.BeanCreationException: Error creating
>>>> bean
>>>> with name 'restServer': Error setting property values; nested exception
>>>> is
>>>> org.springframework.beans.PropertyBatchUpdateException; nested
>>>> PropertyAccessExceptions (1) are:
>>>> PropertyAccessException 1:
>>>> org.springframework.beans.MethodInvocationException: Property
>>>> 'serviceBeans'
>>>> threw exception; nested exception is java.lang.NoClassDefFoundError:
>>>> Could
>>>> not initialize class org.apache.cxf.jaxrs.utils.JAXRSUtils
>>>>         at
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1278)
>>>>         at
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
>>>>         at
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
>>>>         at
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
>>>>         at java.security.AccessController.doPrivileged(Native Method)
>>>>         at
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
>>>>         at
>>>> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
>>>>         at
>>>> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221)
>>>>         at
>>>> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
>>>>         at
>>>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
>>>>         at
>>>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
>>>>         at
>>>> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
>>>>         at
>>>> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
>>>>         at
>>>> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh(AbstractDelegatedExecutionApplicationContext.java:276)
>>>>         at
>>>> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationContextExecutor.java:145)
>>>>         at java.lang.Thread.run(Thread.java:619)
>>>> Caused by: org.springframework.beans.PropertyBatchUpdateException;
>>>> nested
>>>> PropertyAccessExceptions (1) are:
>>>> PropertyAccessException 1:
>>>> org.springframework.beans.MethodInvocationException: Property
>>>> 'serviceBeans'
>>>> threw exception; nested exception is java.lang.NoClassDefFoundError:
>>>> Could
>>>> not initialize class org.apache.cxf.jaxrs.utils.JAXRSUtils
>>>>         at
>>>> org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:104)
>>>>         at
>>>> org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:59)
>>>>         at
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1275)
>>>>         ... 15 more
>>>>
>>>> Same error, different offending class, one is from package
>>>> org.apache.cxf.jaxrs.utils and one is from package javax.ws.rs.core,
>>>> both
>>>> packages are Import-Package-ed from in app's manifest.
>>>>
>>>> What a chronology... I hope you're willing to help me debug this
>>>> problem.
>>>> Thank you.
>>>>
>>>>
>>>> * http://servicemix.apache.org/SMX4/runtime.html contains broken link
>>>> "You can grab a download of the minimum ServiceMix 4 Runtime
>>>> here<http://people.apache.org/repo/m2-snapshot-repository/org/apache/servicemix/runtime/org.apache.servicemix.runtime.minimum/4.0-SNAPSHOT/org.apache.servicemix.runtime.minimum-4.0-SNAPSHOT.tar.gz>."
>>>> It probably should just point to
>>>> http://servicemix.apache.org/SMX4/download.html or SMX4KNL (?)
>>>>
>>>>
>>>> On Sun, Nov 30, 2008 at 3:23 AM, David Bosschaert <
>>>> [EMAIL PROTECTED]> wrote:
>>>>
>>>>
>>>>> Hi Hendy,
>>>>>
>>>>> Not sure what you're exactly trying to do but just to let you know
>>>>> that CXF is already available as an OSGi bundle. E.g. you may want to
>>>>> take a look at cxf-minimal:
>>>>>  http://svn.apache.org/repos/asf/cxf/trunk/distribution/bundle/minimal/
>>>>>
>>>>> If you want to get an easy dsitribution of CXF running inside an OSGi
>>>>> container, have a look at ServiceMix 4
>>>>> (http://servicemix.apache.org/SMX4/download.html). When you start SMX4
>>>>> it will actually launch Felix and run all the functionality in that as
>>>>> OSGi bundles. This includes CXF.
>>>>>
>>>>> Cheers,
>>>>>
>>>>> David
>>>>>
>>>>>
>>> --
>>> Best regards,
>>> Hendy Irawan
>>> http://hendyirawan.com/
>>>
>>>
>>
>>
>>
>>
>
>

-- 
Sent from my mobile device

Best regards,
Hendy Irawan
http://hendyirawan.com/

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to