当前位置: 首页 > 知识库问答 >
问题:

如何更改JAX-WS Web服务的地址位置

许自强
2023-03-14

我们目前已经公开了具有以下URL的JAX-RPC Web服务

http://xx.xx.xx.xx/myservice/MYGatewaySoapHttpPort?wsdl

我们通过从上面的WSDL生成webservice,将webservice迁移到JAX-WS

但是新的网络服务可以从以下网址访问

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

我用OracleEclipseIndigo创建了webservice。

我可以用任何安眠药换吗?

当做

共有3个答案

梁锋
2023-03-14

检查JAX-WSWSDL文件的服务元素。

<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服务。

读这个

凤高澹
2023-03-14

我们错过了非常基本的一点,web中的servlet映射。xml解决了所有问题。有关详细信息,请查看以下链接

http://pic.dhe.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.wsfep.multiplatform.doc/info/ae/ae/twbs_customwebxml.html

何向荣
2023-03-14

这允许在客户端中设置endpoint:

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");

(感谢用户FoGH指出endpoint应该指示服务,而不是WSDL)

编辑:这里有一些关于设置org.codehaus.mojo.jaxws-maven-plugin的更多信息:

在你的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目录。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

所以插件配置中的wsdlPlace引用了jax-ws-catalog.xml文件中的一个条目。该文件使用相对目录表示法指向实际的WSDL文件。

值“MyGatewaySystemId”在生成的web服务代码中作为位置结束。因此,您可以将其更改为WSDL的实际URL。请注意,您需要配置pom,为构建环境(dev、test、prod)设置正确的URL,以使其一致工作。正确的方向是使用maven概要文件。

提示:下载在线WSDL(以及相关XSD)副本的一种简单方法是为其创建一个SoapUI项目,然后转到“WSDL内容”选项卡。

 类似资料:
  • 问题内容: 如何动态更改JAXWS客户端使用的地址?该客户端是由wsimport生成的。 问题答案: 使用Apache CXF解决了该问题。 仅用两行代码!这是代码段:

  • 我正在尝试使用Firebase消息传递(web)。默认情况下,Firebase会搜索包含服务工作者的文件“Firebase messaging sw.js”。 服务工作者脚本应位于应用程序的绝对路径上!例如:http://localhost/firebase-messaging-sw.js 如何更改此默认位置?!搜索官方文档,我发现了这个方法:,它接受服务工作者注册,但试图使用它,我得到一个错误,

  • 我有一个由Apache CXF WS生成的WSDL,如下所示 在application.java中 关于我的服务实现

  • 这里我使用Java第一种方法创建web服务。 我在JBOSS EAP6.0中使用endpointapi公开了一个使用JAX-WS的web服务。 无论我在上面的publish方法中为address字段提供了什么值,这都不重要,也就是说,我没有看到它的影响。上面的是我的Web服务实现类。部署完war文件后,我将获得在以下位置生成的WSDL文件。 %jboss_home%/standalone/data

  • 问题内容: 我正在尝试制作一个可以更改PC /笔记本电脑IP地址和子网掩码的程序。我要输入的内容与Windows(ip / subnet,dns / alternate dns)上IPv4属性的接口相似。 我现在可以想到的是使用netsh命令更改Windows ip。我想做的是在Windows上设置/获取以太网设置 提前致谢 问题答案: 您可以在JAVA中更改注册表,这应该可以解决问题。这些应该有