I created a JIRA issue #CXF-3771 for this.
I also upgraded javax.xml.ws to 2.2.5 and it seemed to make no difference.
Barry
On 8/26/2011 11:09 PM, Freeman Fang wrote:
Hi,
Just answer your karaf question on karaf mailling list.
And about this cxf in OSGi issue, could you please create a cxf jira
tickets and append your testcase there?
Thanks
Freeman
On 2011-8-27, at 上午2:40, Barry Hathaway wrote:
Dan,
Thanks for your suggestion. I downloaded TSF, but unfortunately I got
the exact same result.
I also tried upgrading javax.xml.ws (in both SMX and TSF), but that
didn't work - see my posting on
karaf-user:
http://karaf.922171.n3.nabble.com/Starting-bundle-ignores-exports-td3285286.html
Barry
On 8/23/2011 3:32 PM, Daniel Kulp wrote:
On Tuesday, August 23, 2011 3:15:36 PM Barry Hathaway wrote:
I added those couple of lines and got the same result.
Could part of the problem be that the stack trace is referring to
com.sun.xml.bind.v2.runtime.*
and not javax.*?
Likely not. If the WebMethod(exclude=true) stuff was being picked
up, the
Map wouldn't be sent into JAXB and that exception wouldn't be raised.
I'm not sure what to suggest at this point. Can you create a testcase?
Another option that may be worth at least attempting is to try a
different
OSGi container. You could download the Talend Service Factory from:
http://www.talend.com/download_form.php?cont=sfact&src=ResourcePage
and try deploying into there. I've tested a bunch of CXF related
things
there so I'm pretty sure the CXF and JAXB and JAX-WS things are
setup OK
there. If it works there but not SMX, we'll at least know there is
an issue
with the CXF in SMX setup and we can start looking deeper there. If it
doesn't work with Talend, then it a more fundamental issue.
Dan
On 8/23/2011 1:44 PM, Daniel Kulp wrote:
The most common cause of this is to import the javax.jws annotations
from a different place than where CXF is importing them from. You
may want to try updating your bundle's manifest to use a version
like:
javax.jws*;version="[1.0,3)",
javax.xml.ws*;version="[1.0,3)",
etc... to make sure you get the versioned kind and not the versions
exported from the JRE. Likewise for jaxb and similar.
Dan
On Tuesday, August 23, 2011 11:33:06 AM Barry Hathaway wrote:
I thought I had figured out how to exclude web service methods.
In my interface file I specified:
@WebService(name="SadlService",targetNamespace="http://sadlserver.sadl
.resea rch.ge.com") public interface ISadlServiceProvider {
In this file I specified a @WebMethod annotation on all the methods
with
the exception of
getServiceNameMap() and setServiceNameMap(Map<String,String[]>
serviceNameMap).
In the implementation file I specified:
@WebService(serviceName="SadlService",name="SadlService",
targetNamespace="http://sadlserver.sadl.research.ge.com",
endpointInterface="com.ge.research.sadl.sadlserver.cxf.provider.ISadlS
ervice Provider") public class SadlServiceProvider implements
ISadlServiceProvider {
In this file I used no annotations with the exception of:
@WebMethod(exclude=true)
public Map<String,String[]> getServiceNameMap() {
and
@WebMethod(exclude=true)
public void setServiceNameMap(Map<String,String[]>
serviceNameMap) {>>
Both will get called by Spring during bean creation. That is why I
don't
expose them.
Well this worked just fine when running CXF under Tomcat.
Now I tried to port this service to a OSGi (ServiceMix) environment.
When I start the bundle
it complains about those 2 excluded methods:
Caused by:
com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 2
counts of IllegalAnnotationExceptions
java.util.Map is an interface, and JAXB can't handle interfaces.
this problem is related to the following location:
at java.util.Map
at private java.util.Map
com.ge.research.sadl.sadlserver.cxf.provider.jaxws_asm.SetServiceNameM
ap.arg 0 at
com.ge.research.sadl.sadlserver.cxf.provider.jaxws_asm.SetServiceNameM
ap
java.util.Map does not have a no-arg default constructor.
this problem is related to the following location:
at java.util.Map
at private java.util.Map
com.ge.research.sadl.sadlserver.cxf.provider.jaxws_asm.SetS
erviceNameMap.arg0
at
com.ge.research.sadl.sadlserver.cxf.provider.jaxws_asm.SetServiceNameM
ap
at
com.sun.xml.bind.v2.runtime.IllegalAnnotationsException$Builder.check(
Illega lAnnotationsE xception.java:102)
at
com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContext
Impl.j ava:472) at
com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.jav
a:302) at
com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(J
AXBCon textImpl.java
:1140)
:
at
com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:1
54)
Any ideas?
Thanks
Barry Hathaway
---------------------------------------------
Freeman Fang
FuseSource
Email:[email protected]
Web: fusesource.com
Twitter: freemanfang
Blog: http://freemanfang.blogspot.com