我想使用SOAP服务但是离线提供给我的WSDL,从而导致客户端使用WSDL的本地路径生成。
public class SoSo extends Service {
public final static URL WSDL_LOCATION;
public final static QName SERVICE = new QName("http://tempuri.org/", "SoSo");
public final static QName SoSoSoap12 = new QName("http://tempuri.org/", "SoSoSoap12");
public final static QName SoSoSoap = new QName("http://tempuri.org/", "SoSoSoap");
static {
URL url = null;
try {
url = new URL("file:/c:/Dev/Java/workspace/service-individualreport/src/main/resources/wsdl/SoSo.wsdl");
} catch (MalformedURLException e) {
java.util.logging.Logger.getLogger(SoSo.class.getName())
.log(java.util.logging.Level.INFO,
"Can not initialize the default wsdl from {0}", "file:/c:/Dev/Java/workspace/service-individualreport/src/main/resources/wsdl/SoSo.wsdl");
}
WSDL_LOCATION = url;
}
从我的角度来看,我想只构建一次WSDL,然后指定服务的位置。
答案 0 :(得分:8)
对这个问题的几个部分:
1)根据JAX-WS规范,生成的代码没有 ALL 请求所需的信息。因此,技术上需要wsdl。使用CXF,您可以为wsdl URL传递“null”,然后使用((BindingProvider)端口).getRequestContext()。put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,“http:// localhost / ....”)来设置地址和许多用例,它将起作用。
2)wsdl2java工具确实有一个-wsdlLocation标志,可用于生成具有特定位置的服务对象。 -wsdlLocation“”应该导致代码中没有任何内容。然而,代码实际上并不是可移植的。 (JAXWS ri / metro需要wsdl)