gpt4 book ai didi

java - 生成Apache CXF客户端时,为什么实例化客户端时还需要WSDL?

转载 作者:搜寻专家 更新时间:2023-11-01 01:46:24 25 4
gpt4 key购买 nike

我想使用 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,然后指定服务的位置。

最佳答案

这个问题的几个部分:

1) 根据 JAX-WS 规范,生成的代码没有ALL 请求所需的信息。因此,技术上需要 wsdl。使用 CXF,您可以为 wsdl URL 传递“null”,然后使用 ((BindingProvider)port).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://localhost/....") 来设置地址和许多用例,它将起作用。

2) wsdl2java 工具确实有一个 -wsdlLocation 标志,可用于生成具有特定位置的服务对象。 -wsdlLocation ""应该不会在代码中产生任何内容。不过,该代码实际上并不是可移植的。 (JAXWS ri/metro 需要 wsdl)

关于java - 生成Apache CXF客户端时,为什么实例化客户端时还需要WSDL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8945780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com