繁体   English   中英

如何通过javax.xml.ws.Service进行调用

[英]How to do a call through a javax.xml.ws.Service

在Eclipse中创建了一个新的标准java 7项目,并成功设法获取javax.xml.ws.Service的实例,如下所示:

  String wsdlURL = "http://example.com:3000/v1_0/foo/bar/SomeService?wsdl";
  String namespace = "http://foo.bar.com/webservice";
  String serviceName = "SomeService";
  QName serviceQN = new QName(namespace, serviceName);

  Service service = Service.create(new URL(wsdlURL), serviceQN);

这在主方法中运行良好,所以据我所知,该部分有效。 但我无法弄清楚如何实际使用它。 在SoapUI中,我使用如下所示的请求调用此相同的服务:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://foo.bar.com/webservice">
   <soapenv:Header/>
   <soapenv:Body>
      <web:SomeWebServiceRequest acAccountName="name" acAccountPassword="password">
         <SomeRequest>
            <id>012345678901234</id>
            <action>Fix</action>
         </SomeRequest>
      </web:SomeWebServiceRequest>
   </soapenv:Body>
</soapenv:Envelope>

如何在Java中执行相同的请求? 我的目标是我有一个很长的这些id列表,我需要为每个id运行这样的请求。 在SoapUI中手动执行它有点烦人,因此我想使用简单的Java控制台应用程序自动执行它。

下一步是从您的服务获取Port

Service service = Service.create(new URL(wsdlURL), serviceQN); // this is where you are.
QName portQName = new QName(portNamespace, portName);
YourPortInterface port = service.getPort(portQName, YourPortInterface.class);

YourPortInteface将在wsimport期间生成,或者如果您有足够的“阅读”wsdl经验,您可以自己创建和注释它。

您可以将JAX-WS用作客户端。

基本上,您使用wsimport创建包装Web服务的存根java类,然后在Java代码中使用这些存根。 存根处理所有XML转换,包括您的请求和响应。

教程在这里: http//docs.oracle.com/javaee/5/tutorial/doc/bnayn.html
寻找名为“简单的JAX-WS客户端”的部分

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM