2016-10-31 9 views
0

javax.wsを使用する簡単なサービスのおもちゃの例を以下に示します。私はサービスのURLを取得したい、Webブラウザやカールから呼び出すことができます。 これは、おもちゃのサービスコードです:単純なjavax.ws RESTサービス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()のテキストが生成されますか?私のブラウザからサーバーにエラーが見つかりません。

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

<!-- 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

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

javax.jws.*パッケージのSOAP APIを表し(JAX-RSと呼ばれる)

javax.ws.rs.*パッケージあなたはSOAP & REST Webサービスの違いを理解する必要があるのREST API

を表します。これらの概念の詳細についてはhereをご覧ください。あなたはRESTサービスの実装を探していると仮定すると

は、一般的には、RESTサービスは、(Tomcatの、突堤、Weblogicのように)サーバに配備されていますが、あなたは完全に正しいですhere

+0

を見て、スタンドアロンそれらを実行する必要がある場合。さらに、私はフレームワークを使って@npitを提案し、開発が容易になるようにします:Jersey(https://jersey.java.net/)、RESTEasy(http://resteasy.jboss.org/)... – russellhoff