【问题标题】:how to develop JAX-WS webservice client?如何开发 JAX-WS webservice 客户端?
【发布时间】:2011-07-26 23:48:50
【问题描述】:

我有一个要求是在使用 Spring 框架的独立 Java 应用程序中开发 Web 服务客户端。我的问题是如何开发一个可用于调用 Web 服务的 java 类。我所拥有的只是 WSDL 和 wsdl 文件的位置?此外,此应用程序应在 diff envt 中运行。其中 WSDL 的 url 是 diff。所以基本上我想尽可能将 url 属性外部化。

我听说过使用 Spring 框架中的 JaxwsproxFactoryBean,但没有找到任何好的工作示例。

【问题讨论】:

    标签: spring jax-ws


    【解决方案1】:

    如果您想使用 Spring,JaxwsProxyFactoryBean 是您的最佳选择。至少我做到了。

    我遵循了这个例子:

    http://krams915.blogspot.com/2010/12/spring-mvc-3-accessing-web-services.html

    我没有尝试过本文提供的确切代码,但我一步一步地进行了操作,并且成功了。而且很方便:本例中使用 wsimport 工具生成类,使用 JaxwsProxyFactoryBean 注入代理:

    <bean id="subscriptionJaxProxyService" class="org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean"
     p:serviceInterface="org.krams.tutorial.oxm.SubscriptionPort"
     p:wsdlDocumentUrl="http://localhost:8081/spring-ws-standalone/krams/ws/subscription.wsdl"
     p:namespaceUri="http://krams915.blogspot.com/ws/schema/oss"
     p:serviceName="SubscriptionPortService"
     p:portName="SubscriptionPortSoap11"/>
    

    最后,通过 spring 注入一个 marshaller/unmarshaller(例如 Jaxb2Marshaller)来反序列化 Web 服务的响应。

    注意事项:

    • 请务必查看开头提到的文章:

    http://krams915.blogspot.com/2010/12/spring-ws-mvc-implementing-client.html

    • 最烦人的部分是让 wsimport 工作。确保使用版本 1.12,来自存储库:

      <pluginRepository>
          <url>http://download.java.net/maven/2</url>
          <id>Java dot Net</id>
          <layout>default</layout>
          <name>Repository for JAX-WS commons</name>
      </pluginRepository>
      

    【讨论】:

      【解决方案2】:

      在我看来,您不一定非要使用 Spring 来创建 Web 服务客户端。

      wsimport 工具可用于此目的。

      打开命令提示符,将dir改成wsimport.bat / ws.import.sh所在的位置,执行下面的命令。

      wsimport -keep -verbose ${你的 wsdl 位置}

      在名为 com.顶层文件夹的名称取决于您在 wsdl 中使用的顶层包的名称。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-09
        • 1970-01-01
        相关资源
        最近更新 更多