0

以下は、 を使用した簡単なサービスのおもちゃの例ですjavax.ws。Web ブラウザーまたは curl から呼び出し可能なサービス URL を取得したいと考えています。これはおもちゃのサービス コードです。

package packagename;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.ws.rs.GET;
import javax.ws.rs.Path;

@WebService
@Path("/service")
public class testserver
{
    @GET
     @Path("/test")
     @WebMethod
     public   String test()
    {
        return "<html>Test text here</html>";
    }
}

これがサービス デプロイヤー関数です。

package packagename;
import javax.xml.ws.Endpoint;

    public class deploy
{
    public static void main(String [] args)
    {

        String endpointURL = "http://localhost:7777/";
        Endpoint.publish(endpointURL,new testserver());
    }
}

エラーなしでbash経由でJavaファイルを実行します。

関数http://localhost:7777/service/testのテキスト を生成するためにナビゲートするべきではありませんか? test()ブラウザからサーバーが見つかりませんというエラーが表示されます。

以下は、 にある wsdl ファイルですhttp://localhost:7777/?wsdl。私が探している情報はここにありますか? 以下(testserverServiceなど)から情報を取得していくつかのURLを試しましたが、成功しませんでした。

  <!-- Published by JAX-WS RI (http://jax-ws.java.net). RI's version is JAX-WS RI 2.2.9-b130926.1035 svn-revision#5f6196f2b90e9460065a4c2f4e30e065b245e51e. 
-->
<!-- Generated by JAX-WS RI (http://jax-ws.java.net). RI's version is JAX-WS RI 2.2.9-b130926.1035 svn-revision#5f6196f2b90e9460065a4c2f4e30e065b245e51e. 
-->
<definitions targetNamespace="http://packagename/" name="testserverService">
    <types>
        <xsd:schema>
            <xsd:import namespace="http://packagename/" schemaLocation="http://localhost:7777/?xsd=1"/>
        </xsd:schema>
    </types>
    <message name="test">
        <part name="parameters" element="tns:test"/>
    </message>
    <message name="testResponse">
        <part name="parameters" element="tns:testResponse"/>
    </message>
    <portType name="testserver">
        <operation name="test">
            <input wsam:Action="http://packagename/testserver/testRequest" message="tns:test"/>
            <output wsam:Action="http://packagename/testserver/testResponse" message="tns:testResponse"/>
        </operation>
    </portType>
    <binding name="testserverPortBinding" type="tns:testserver">
        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
        <operation name="test">
            <soap:operation soapAction=""/>
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>
    </binding>
    <service name="testserverService">
        <port name="testserverPort" binding="tns:testserverPortBinding">
            <soap:address location="http://localhost:7777/"/>
        </port>
    </service>
</definitions>

答えは非常に単純であるか、コードで重大な構文エラーを犯していると推測しています。手伝ってくれますか ?

4

1 に答える 1

4

SOAP と REST API の両方を混在させていますが、これは正しくありません。同じエンドポイントにそれらを一緒に使用することはできません。

javax.jws.*パッケージ (JAX-WS と呼ばれる) は SOAP API を表します

javax.ws.rs.*パッケージ (JAX-RS と呼ばれる) は REST API を表します

SOAP と REST Web サービスの違いを理解する必要があります。これらの概念の詳細については、こちらを参照してください

REST サービスの実装を探していると仮定すると、通常、REST サービスはサーバー (Tomcat、Jetty、Weblogic など) にデプロイされますが、それらをスタンドアロンで実行する必要がある場合は、こちらを参照してください。

于 2016-10-31T14:39:39.153 に答える