1

我在 OpenShift 上部署了一个 Web 服务,方法是用 @WebService 注释一个类,用 @WebMethod 注释一个公共方法。然后,我在 WildFly8 容器中部署了该类,服务器启动了该服务。为了能够访问 WSDL 文件,我必须在 WEB-INF 文件夹中创建一个文件“jboss-web.xml”并更改上下文根目录。

现在我可以访问 WSDL 文件,但不能访问服务本身。问题出在 wsdl 文件的这一行:

<wsdl:service name="PlotterService">
    <wsdl:port binding="tns:PlotterServiceSoapBinding" name="PlotterPort">
      <soap:address location="http://127.8.173.1:8080/Plotter"/>
    </wsdl:port>
</wsdl:service>

地址位置设置为内部 IP,应替换为我的应用程序的 URL。我怎样才能做到这一点?我唯一能够修改的文件是我在开始时注释的类。

4

1 回答 1

1

我设法解决了这个问题:

Openshift默认没有Web服务设置,所以我们需要修改服务器配置。为此,请在编辑器中打开 .openshift/config/standalone.xml(此文件可能被隐藏)并添加以下内容:

如果 webservices 子系统未在该元素下配置如下,请复制以下内容并替换 webservices 子系统以启用和配置 Web 服务:

<subsystem xmlns="urn:jboss:domain:webservices:1.1">
    <modify-wsdl-address>true</modify-wsdl-address>
    <wsdl-host>${env.OPENSHIFT_APP_DNS}</wsdl-host>
    <wsdl-port>80</wsdl-port>
    <endpoint-config name="Standard-Endpoint-Config"/>
    <endpoint-config name="Recording-Endpoint-Config">
    <pre-handler-chain name="recording-handlers" protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM">
        <handler name="RecordingHandler" class="org.jboss.ws.common.invocation.RecordingServerHandler"/>
    </pre-handler-chain>
    </endpoint-config>
</subsystem>
于 2014-06-20T12:21:18.817 回答