gpt4 book ai didi

Java Web 服务 - 定义服务器位置

转载 作者:行者123 更新时间:2023-11-30 09:48:25 25 4
gpt4 key购买 nike

我还有最后一个障碍要克服我正在使用的 Web 服务应用程序;我需要能够覆盖用于在生成的 WSDL 文件中设置模式位置和 soap 地址位置的默认设置。

当我部署应用程序(Red Hat linux 上的 GlassFish v2.1)时,它在 URL 中使用本地服务器名称,但它需要使用公共(public)域名。我能够在本地保存 WSDL 文件,更改 URL,将其公开,从文件外部生成测试应用程序,最后能够成功运行测试。

我现在已经进入了 JAX-WS 自定义绑定(bind)领域,但我希望我要么忽略了一个更简单的解决方案,要么绑定(bind)并不像乍看起来那么复杂。 Web 服务实现是通过无状态 EJB(例如下面的 MyWS.java)实现的。生成的 WSDL 文件看起来像 MyWSDL.wsdl(见下文)。

在 xsd:import 标签中,我需要将 schemaLocation 更改为

    http://test.mycompany.com/MyWSService/MyWS?xsd=1 

代替

    http://local-server-name/MyWSService/MyWS?xsd=1 

并且在 soap:address 标签中,我需要将位置更改为

    http://test.mycompany.com/MyWSService/MyWS 

代替

    http://local-server-name/MyWSService/MyWS.

MyWS.java

@WebService(name="MyWS",
portName="MyWSPort",
serviceName="MyWSService",
targetNamespace="http://test.mycompany.com/")
@Stateless()
public class MyWS {

@WebMethod(operationName="testLogin")
public String testLogin(@WebParam(name="username") String username,
@WebParam(name="password") String password) {
String retVal = "Test Failed.";

//do some stuff

return retVal;
}

...
}

MyWSDL.wsdl

<definitions targetNamespace="http://test.mycompany.com/" name="MyWSService">

<types>
<xsd:schema>
<xsd:import namespace="http://test.mycompany.com/" schemaLocation="http://local-server-name/MyWSService/MyWS?xsd=1"/>
</xsd:schema>
</types>

<service name="MyWSService">
<port name="MyWSPort" binding="tns:MyWSPortBinding">
<soap:address location="http://local-server-name/MyWSService/MyWS"/>
</port>
</service>
</definitions>

最佳答案

我能够通过更改 GlassFish HTTP 服务的配置来解决问题。对于用于 Web 服务应用程序的 HTTP 监听器,我将服务器的别名设置为 test.mycompany.com:80。通常我们的 Web 服务器中有这种配置,所以最初我什至没有考虑应用程序服务器配置。

关于Java Web 服务 - 定义服务器位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6271785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com