Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 如何开发JAX-WSWebService客户端?_Spring_Jax Ws - Fatal编程技术网

Spring 如何开发JAX-WSWebService客户端?

Spring 如何开发JAX-WSWebService客户端?,spring,jax-ws,Spring,Jax Ws,我有一个需求是在独立的java应用程序中开发web服务客户端,该应用程序使用spring框架。我的问题是如何开发一个可用于调用web服务的java类。我所拥有的只是WSDL和WSDL文件的位置?此外,此应用程序还应在不同的环境中运行。其中WSDL的url是不同的。所以基本上,如果可能的话,我希望将url属性外部化 我从spring框架中听说了使用JaxwsproxFactoryBean,但没有找到任何好的工作示例。在我看来,创建web服务客户端不一定要使用spring wsimport工具可用于

我有一个需求是在独立的java应用程序中开发web服务客户端,该应用程序使用spring框架。我的问题是如何开发一个可用于调用web服务的java类。我所拥有的只是WSDL和WSDL文件的位置?此外,此应用程序还应在不同的环境中运行。其中WSDL的url是不同的。所以基本上,如果可能的话,我希望将url属性外部化


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

在我看来,创建web服务客户端不一定要使用spring

wsimport工具可用于此目的

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

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


在名为com的文件夹中(很可能)将生成多个源文件。顶级文件夹的名称取决于您在wsdl中使用的顶级包的名称。

在我看来,您不必使用Spring来创建web服务客户端

wsimport工具可用于此目的

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

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


在名为com的文件夹中(很可能)将生成多个源文件。顶级文件夹的名称取决于您在wsdl中使用的顶级包的名称。

如果您想使用Spring,JaxwsProxyFactoryBean就是一种选择。至少我做到了

我举了一个例子:

我还没有尝试过本文提供的确切代码,但我一步一步地遵循了这一步骤,并使其发挥了作用。而且无需麻烦:本例中使用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(例如Jaxb2Marshaller)注入一个marshaller/unmarshaller来反序列化web服务的响应

注:

  • 确保检查文章开头提到的内容:

  • 最烦人的是让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>
    
    
    http://download.java.net/maven/2
    Java点网
    违约
    JAX-WS公共资源库
    

如果您想使用Spring,JaxwsProxyFactoryBean是一个不错的选择。至少我做到了

我举了一个例子:

我还没有尝试过本文提供的确切代码,但我一步一步地遵循了这一步骤,并使其发挥了作用。而且无需麻烦:本例中使用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(例如Jaxb2Marshaller)注入一个marshaller/unmarshaller来反序列化web服务的响应

注:

  • 确保检查文章开头提到的内容:

  • 最烦人的是让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>
    
    
    http://download.java.net/maven/2
    Java点网
    违约
    JAX-WS公共资源库