我已经在OpenShift上部署了一个Web服务,方法是使用@WebService注释一个类,使用@WebMethod注释一个公共方法。然后,我在WildFly8容器中部署了该类,服务器启动了该服务。为了能够访问WSDL文件,我必须创建一个文件" jboss-web.xml"在WEB-INF文件夹中并更改context-root。
现在我可以访问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。我怎样才能做到这一点?我能够修改的唯一文件是我在开头注释的类。
答案 0 :(得分:0)
我设法解决了这个问题:
默认情况下,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>