6.当形参,返回值类型不是JavaBean式的复合类,Map时,CXF无法处理:服务端发布
2012-07-23 10:47
477 查看
/** * */ package lee; import javax.xml.ws.Endpoint; import org.fkjava.cfx.ws.HelloWorld; import org.fkjava.cfx.ws.impl.HelloWorldWs; /** * @author Kevin * 发布Web Services */ public class ServerMain { /** * 发布Web Services * @param args */ public static void main(String[] args) { // Web Servers的对象 HelloWorld helloWorld = new HelloWorldWs(); // 发布Web Services // 第一个参数指定Web Services的地址,并指定它的名字 // 第二个参数指定服务的提供者,即Web Servers的对象 Endpoint.publish("http://192.168.1.2:9999/HelloWorld", helloWorld); System.out.println("HelloWorld Web Serviecs暴露成功!"); } }
会报如下错误,因为CFX没法自动处理Map数据格式,需要程序员写转换器
2012-7-23 8:57:06 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
信息: Creating Service {http://impl.ws.cfx.fkjava.org/}HelloWorldWs from class org.fkjava.cfx.ws.HelloWorld
Exception in thread "main" javax.xml.ws.WebServiceException: org.apache.cxf.service.factory.ServiceConstructionException
at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:275)
at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:209)
at org.apache.cxf.jaxws.spi.ProviderImpl.createAndPublishEndpoint(ProviderImpl.java:84)
at javax.xml.ws.Endpoint.publish(Endpoint.java:170)
at lee.ServerMain.main(ServerMain.java:27)
Caused by: org.apache.cxf.service.factory.ServiceConstructionException
at org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:281)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:376)
at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromClass(JaxWsServiceFactoryBean.java:523)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:439)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:195)
at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:163)
at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:100)
at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:117)
at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:167)
at org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:346)
at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:259)
... 4 more
Caused by: com.sun.xml.internal.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 org.fkjava.cfx.ws.jaxws_asm.GetAllCatsResponse._return
at org.fkjava.cfx.ws.jaxws_asm.GetAllCatsResponse
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 org.fkjava.cfx.ws.jaxws_asm.GetAllCatsResponse._return
at org.fkjava.cfx.ws.jaxws_asm.GetAllCatsResponse
at com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:91)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:436)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:277)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1100)
at com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:143)
at com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:110)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:202)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:376)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574)
at org.apache.cxf.jaxb.JAXBDataBinding.createJAXBContextAndSchemas(JAXBDataBinding.java:444)
at org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:264)
... 14 more
相关文章推荐
- 9.当形参,返回值类型不是JavaBean式的复合类,Map时,CXF无法处理:服务端发布成功
- 4.当形参,返回值类型不是JavaBean式的复合类,Map时,CXF无法处理:服务端业务逻辑层实现类
- 5.当形参,返回值类型不是JavaBean式的复合类,Map时,CXF无法处理:服务端domain
- 3.当形参,返回值类型不是JavaBean式的复合类,Map时,CXF无法处理:服务端业务逻辑层接口
- 1.当形参,返回值类型不是JavaBean式的复合类,Map时,CXF无法处理:服务器接口
- 11.当形参,返回值类型不是JavaBean式的复合类,Map时,CXF无法处理:客户端主类
- 7.当形参,返回值类型不是JavaBean式的复合类,Map时,CXF无法处理:转换器1
- 8.当形参,返回值类型不是JavaBean式的复合类,Map时,CXF无法处理:转换器2
- 10.当形参,返回值类型不是JavaBean式的复合类,Map时,CXF无法处理:客户端执行wsdl2java
- 2.当形参,返回值类型不是JavaBean式的复合类,Map时,CXF无法处理:服务器实现类
- 处理Map、非javabean式的复合类等CXF无法自动转化的类型 (3)
- 6.当形参,返回值类型是JavaBean式的复合类,List集合,数组等时:服务端发布
- CXF学习04---处理MAP等CXF无法自动转换的复合数据类型的形参和返回值
- Map等CXF无法自动转换的复合数据类型的形参和返回值的处理
- 使用CXF处理JavaBean式的复合类型和List集合类型的形参和返回值
- 5.当形参,返回值类型是JavaBean式的复合类,List集合,数组等时:服务端domain
- CXF-05:使用CXF处理返回值的类型为Map、非JavaBean式的复合类
- 1.当形参,返回值类型是JavaBean式的复合类,List集合,数组等时:服务端接口
- 2.当形参,返回值类型是JavaBean式的复合类,List集合,数组等时:服务端实现类
- 3.当形参,返回值类型是JavaBean式的复合类,List集合,数组等时:服务端业务逻辑层接口