如何改变JAX-WS Web服务的地址位置(How to change address locati

2019-07-30 12:05发布

目前,我们已经暴露的JAX-RPC web服务具有以下URL

HTTP://xx.xx.xx.xx/myservice/MYGatewaySoapHttpPort WSDL

我们通过上面的WSDL生成WebService的Web服务迁移到JAX-WS

但是,新的Web服务是从以下URL访问

HTTP://xx.xx.xx.xx/myservice/MYGateway WSDL

我怎样才能让我的JAX-WS Web服务是通过首先提到的相同的URL访问? 使我们的客户不要有任何问题。

更新:

从我创建WSDL的服务元素是按照期望

<WL5G3N0:service name="MyGateway">
    <WL5G3N0:port binding="WL5G3N2:MyGatewaySoapHttp" name="MyGatewaySoapHttpPort">
      <WL5G3N3:address location="http://xx.xx.xx/myservice/MyGatewaySoapHttpPort"/>
    </WL5G3N0:port>
  </WL5G3N0:service>

但是JAX-WS的WSDL是不相同的,这WSDL是自动生成的。

<WL5G3N0:service name="MyGateway">
- <WL5G3N0:port binding="WL5G3N2:MyGatewaySoapHttp" name="MyGatewaySoapHttpPort">
  <WL5G3N3:address location="http://xx.xx.xx/myservice/MyGateway" /> 
  </WL5G3N0:port>
 </WL5G3N0:service

我创建Web服务与Oracle Eclipse的靛蓝。

我可以与任何annotaion改变?

问候,

Answer 1:

这允许设置在客户端的端点:

MYGateway service = new MYGateway();
MYGatewaySoapServiceHttpPort port = service=.getMYGatewaySoapServiceHttpPort();
BindingProvider bp = (BindingProvider) port;
bp.getRequestContext().put(
    BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
    "http://xx.xx.xx.xx/myservice/MYGateway");

(感谢用户福格用于指出端点应注明服务,而不是WSDL)

编辑:这是关于建立org.codehaus.mojo.jaxws,Maven的插件一些更多的信息:

在你的pom.xml:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxws-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>MyGateway</id>
            <goals>
                <goal>wsimport</goal>
            </goals>
            <configuration>
                <wsdlDirectory>src/main/resources/META-INF/wsdl</wsdlDirectory>
                <wsdlFiles>
                    <wsdlFile>MyGateway.wsdl</wsdlFile>
                </wsdlFiles>
                <wsdlLocation>MyGatewaySystemId</wsdlLocation>
                <!-- Line below to avoid regeneration bug if you have multiple executions -->   
                <staleFile>${project.build.directory}/jaxws/stale/wsdl.MyGateway.done</staleFile>
            </configuration>
        </execution>
    </executions>
</plugin>

在./src/main/resources/META-INF/jax-ws-catalog.xml:

<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
    <system systemId="MyGatewaySystemId" uri="wsdl/MyGateWay.wsdl"/>
</catalog>

把你的WSDL中./src/main/resources/META-INF/wsdl/MyGateway.wsdl

所以在插件配置的wsdlLocation是指在JAX-WS-catalog.xml文件中的条目。 该文件指出了使用相对目录符号实际的WSDL文件。

值“MyGatewaySystemId”中所生成的网络服务的代码,作为位置结束。 所以,你可以改变这一点的WSDL的实际URL。 请注意,您将需要配置您的POM来设置编译环境(开发,测试,正式版)这个工作始终正确的URL。 在这个正确的方向指针是使用Maven的配置文件。

提示:一个简单的方法来下载一个网上WSDL(以及相关的XSD的)的副本是为它创建了SoapUI项目,然后进入“WSDL内容”选项卡。



Answer 2:

我们错过了非常基本的点,在web.xml servlet映射做了所有的把戏。 有关详细信息,请看看下面的链接

http://pic.dhe.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=%2Fcom.ibm.websphere.wsfep.multiplatform.doc%2Finfo%2Fae%2Fae%2Ftwbs_customwebxml.html



Answer 3:

检查您Service您的JAX-WS WSDL文件的元素。

<service name="Hello_Service">
      <documentation>WSDL File for HelloService</documentation>
      <port binding="tns:Hello_Binding" name="Hello_Port">
         <soap:address
            location="http://www.examples.com/SayHello/">
      </port>
   </service>

位置元素指定通过哪个端口访问Web服务。

读此



文章来源: How to change address location of JAX-WS webservice