Service.create方法之间的区别

时间:2015-10-08 17:27:15

标签: java web-services service wsdl

我正在使用包装SOAP服务的第三方库。

它使用以下习语

String url = SOME_URL
QName SERVICE_NAME = new QName("http://www.example.com/Webapp/1", "WS")
QName PORT_NAME = new QName("http://www.example.com/Webapp/1", "WSPort")
Service service = Service.create(SERVICE_NAME)
service.addPort(PORT_NAME, "http://schemas.xmlsoap.org/wsdl/soap/http", url)
SomeWebService port = service.getPort(SomeWebService.class)

这不起作用我收到以下错误

WSDL Metadata not available to create the proxy, either Service instance or ServiceEndpointInterface

但是,如果我稍微更改惯用语以使用服务创建中的URL

String url = SOME_URL
QName SERVICE_NAME = new QName("http://www.example.com/Webapp/1", "WS")
QName PORT_NAME = new QName("http://www.example.com/Webapp/1", "WSPort")
Service service = Service.create(new URL(url), SERVICE_NAME)
SomeWebService port = service.getPort(SomeWebService.class)

然后它工作正常。不幸的是,这是第三方jar,我只知道这是因为反编译。我可能有一个依赖罐子的坏版本吗?其他人似乎遇到了同样的问题,但他们能够做出上述改变。我不是。

1 个答案:

答案 0 :(得分:0)

这个问题似乎是由于我正在使用的第三方jar是针对Java 1.5编写的,而Java 1.5不包含自己的CXF,JAXB等版本,在我的pom文件中覆盖这些版本以便使用Java 1.5提供的那些解决了这个问题。