2013-07-29 164 views
3

我使用CXF作为我的Web服务后端/客户端存根控件。 当客户端调用Web服务,我得到以下错误:CXF客户端返回NullPointerException

java.lang.NullPointerException 
    at org.apache.cxf.jaxb.JAXBDataBinding.createContext(JAXBDataBinding.java:559) 
    at org.apache.cxf.jaxb.JAXBDataBinding.createJAXBContextAndSchemas(JAXBDataBinding.java:497) 
    at org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:324) 
    at org.apache.cxf.service.factory.AbstractServiceFactoryBean.initializeDataBindings(AbstractServiceFactoryBean.java:86) 
    at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:442) 
    at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromClass(JaxWsServiceFactoryBean.java:680) 
    at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:505) 
    at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:242) 
    at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:202) 
    at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:101) 
    at org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactoryBean.java:90) 
    at org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:144) 
    at org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create(JaxWsProxyFactoryBean.java:133) 
    at com.amazonws.AmazonWS.createAmazonWS(AmazonWS.java:49) 

线49分以下指令:

AmazonWS client = (AmazonWS) factory.create(); 

其中涉及以下块之后:

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); 
factory.getInInterceptors().add(new LoggingInInterceptor()); 
factory.getOutInterceptors().add(new LoggingOutInterceptor()); 
factory.setServiceClass(AmazonWS.class); 
factory.setAddress("http://localhost:9000/helloAmazon"); 

我做错了什么?似乎我的客户甚至无法访问Web服务。 为什么?

谢谢

+0

,你有没有收到任何结果? –

+0

没关系:当我输入:'http:// localhost:9000/helloAmazon?wsdl'时,我可以拥有我的wsdl – Raphael

+1

CXF的哪个版本?看起来像CXF的一个古老版本,JAXBDataBinding的第559行有任何可以使NPE使用一年的代码。尝试更新版本的CXF。 –

回答

0

请问您可以发布想要的CXF版本吗?

还要确保你导入所有您需要的CXF XML:

<import resource="classpath:META-INF/cxf/cxf.xml" /> 
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /> 
<import resource="classpath:META-INF/cxf/cxf-extension-http.xml" /> 
<import resource="classpath:META-INF/cxf/osgi/cxf-extension-osgi.xml" /> 

和尝试,如果你在地址在你的网页浏览器中键入使用http://localhost:9000/helloAmazon?wsdl代替http://localhost:9000/helloAmazon