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.ISadlService
> 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.SetServiceNameMap.arg
> 0 at
> com.ge.research.sadl.sadlserver.cxf.provider.jaxws_asm.SetServiceNameMap
> 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.SetServiceNameMap
> 
>          at
> com.sun.xml.bind.v2.runtime.IllegalAnnotationsException$Builder.check(Illega
> lAnnotationsE xception.java:102)
>          at
> com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.j
> ava:472) at
> com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:302)
> at
> com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBCon
> textImpl.java
> :1140)
> 
>          at
> com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:154)
> 
> Any ideas?
> Thanks
> 
> Barry Hathaway
-- 
Daniel Kulp
[email protected]
http://dankulp.com/blog
Talend - http://www.talend.com

Reply via email to