oco*_*or0 16 java wsdl web-services jax-ws
我有一个Web服务,我有JAX-WS生成的客户端绑定,如下所示:
// web service client generated by JAX-WS
@WebServiceClient( ... )
public class WebService_Service extends Service {
public WebService_Service(URL wsdlLocation, QName serviceName) {
super(wsdlLocation, serviceName);
}
WebService getWebServiceSOAP() {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
我希望能够创建一个指向远程服务的实例,例如:
WebService_Service svc = new WebService_Service(
new URL("http://www.example.com/ws?wsdl"),
new QName("http://www.example.com/ws", "WebService"));
Run Code Online (Sandbox Code Playgroud)
但是下载了http://www.example.com/ws?wsdl我不想做的WSDL .
有没有办法停止下载该WSDL,但仍然指向同一个端点?
Jos*_*vis 19
我通过在客户端中为WSDL URL指定null来解决此问题,并明确指定端点地址:
WebService_Service svc = new WebService_Service(
null,
new QName("http://www.example.com/ws", "WebService"));
WebService port = svc.getPort(WebService.class);
BindingProvider bindingProvider = (BindingProvider) port;
bindingProvider.getRequestContext()
.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
"http://www.example.com/real_endpoint_url_goes_here");
Run Code Online (Sandbox Code Playgroud)
请参阅:http: //shrubbery.homeip.net/c/display/W/Consuming+a+Web+Service+with+Java+6+and+JAX-WS#ConsumingaWebServicewithJava6andJAX-WS-IgnoringtheWSDLCompletely
小智 1
我遇到了同样的问题,我解决了这个问题,但我无法用您的示例来揭示它,因为它取决于 wsdl。
这是我的代码,跟踪解决方案:
//This is the input object for the webservice
GetDocumentInfoInput input = new GetDocumentInfoInput();
input.setBarcode(barcode);
//I instantiate the WS
MAKSpcIntSpcWFSpcScannerInfo_Service service = new MAKSpcIntSpcWFSpcScannerInfo_Service();
//I get the WS port
MAKSpcIntSpcWFSpcScannerInfo port = service.getMAKSpcIntSpcWFSpcScannerInfo();
WSBindingProvider provider = (WSBindingProvider)port;
//This is the row what set the URL for the WS
provider.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, url);
//This is the WS calling
GetDocumentInfoOutput output = port.getDocumentInfo(input);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17311 次 |
| 最近记录: |