我试图使用Apache CXF 2.7.11构建一个WS客户端。我使用< code>wsdl2java工具创建了示例类。我有一个Eclipse项目:
我基本上遵循本教程:http://cxf.apache.org/docs/developing-a-consumer.html
当我运行wsdl2java
创建的示例代码时,我会得到以下错误:
Exception in thread "main" java.lang.NullPointerException
at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:98)
at org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:204)
at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:149)
at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:101)
at javax.xml.ws.Service.<init>(Service.java:67)
at com.twinfield.Session.<init>(Session.java:46)
at com.twinfield.SessionSoap_SessionSoap_Client.main(SessionSoap_SessionSoap_Client.java:48)
使用调试器,我发现问题中的null是由< code > cxfbusimpl . get extension(wsdl manager . class)引起的。WSDLServiceFactory.java的第98行写道:
definition = getBus().getExtension(WSDLManager.class).getDefinition(url);
我认为问题出在我的wsdl位置,但是根据上面的情况,可能不是这样?我已经尝试将本地文件和URL作为< code>wsdl2java的-wsdlLocation开关的值。(目前我根本不使用这个参数)
网络搜索只发现了2.0和2.4版本的一些非常老的问题。这里有一个类似的问题:WSDServiceFactory 中的空指针异常 - Apache CXF 库,但答案只是使用旧版本......
这可能是配置问题吗?我的项目中需要任何配置文件吗?
这个错误显然是由不兼容的库版本引起的。似乎至少wsdl2java
生成的WS客户端代码可以在Domino 9.0.1中运行,而无需从CXF添加任何jar(我已经在项目中添加了一些jar)。