如何动态更改JAXWS客户端使用的地址? 该客户端由wsimport生成。
答案 0 :(得分:99)
您可以使用BindingProvider接口实现此目的。
/**
* The following snippets shows how to set a custom endpoint for a JAX-WS generated WebClient on runtime
*/
// Get the service and the port
SampleService service = new SampleService();
Sample port = service.getESamplePort();
// Use the BindingProvider's context to set the endpoint
BindingProvider bp = (BindingProvider)port;
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://www.aviramsegal.com/ws/sample");
/* Optional credentials */
bp.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "user");
bp.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "password");
port.callSampleMethod();
答案 1 :(得分:12)
使用Apache CXF解决了这个问题。
只需两行代码!这是片段:
URL url_wsdl = new URL("http://myserver/myservice?wsdl");
Service service = Service.create(url_wsdl, new QName("http://myaddress...", "ServiceName"));
return service.getPort(MyJAXWSPortClass.class);
答案 2 :(得分:2)
我是PayPal集成的新手,我不确定Adaptive Payment api。 但我们有权使用 GetVerifiedStatus 方法检查特定电子邮件ID是否在PayPal中拥有帐户。
请使用以下沙箱wsdl网址验证电子邮件
网址:https://svcs.sandbox.paypal.com/AdaptiveAccounts?wsdl
响应将如下所示
update="amount"
注意:创建存根时不要忘记设置端点,如下所示。 如果我们不设置这个,我们就无法获得预期的输出。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<ns2:GetVerifiedStatusResponse xmlns:ns2="http://svcs.paypal.com/types/aa">
<responseEnvelope>
<timestamp>2015-07-20T23:42:46.661-07:00</timestamp>
<ack>Success</ack>
<correlationId>5cea9a8575ab9</correlationId>
<build>17345626</build>
</responseEnvelope>
<accountStatus>UNVERIFIED</accountStatus>
<countryCode>IN</countryCode>
<userInfo>
<emailAddress>anandg.saga@gmail.com</emailAddress>
<accountType>PERSONAL</accountType>
<accountId>6KD7EVWM2E2AQW</accountId>
<name>
<salutation/>
<firstName>anand</firstName>
<middleName/>
<lastName>anand</lastName>
<suffix/>
</name>
<businessName/>
</userInfo>
</ns2:GetVerifiedStatusResponse>
</soapenv:Body>
</soapenv:Envelope>
使用以下方法添加端点
String endpointURL = "https://svcs.sandbox.paypal.com/AdaptiveAccounts/GetVerifiedStatus";
答案 3 :(得分:0)
如果您使用wsimport,我不知道如何做到这一点。我有同样的问题,所以我使用Intellij IDEA(版本9)为我创建客户端代码。它提供了一个服务端点构造函数,它接受wsdl url。