1

@WebService でクラスにアノテーションを付け、@WebMethod でパブリック メソッドにアノテーションを付けて、OpenShift に Web サービスをデプロイしました。次に、クラスを WildFly8 コンテナーにデプロイすると、サーバーがサービスを開始しました。WSDL ファイルにアクセスできるようにするには、WEB-INF フォルダー内に「jboss-web.xml」というファイルを作成し、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 に置き換える必要があります。どうやってやるの?変更できる唯一のファイルは、最初に注釈を付けたクラスです。

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 に答える