2016-10-31 2 views
0

다음은 javax.ws을 사용하는 간단한 서비스의 장난감 예입니다. 웹 브라우저 또는 말풍선에서 호출 할 수있는 서비스 URL을 가져 오려고합니다. 이는 장난감 서비스 코드 :간단한 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()); 
    } 
} 

나는 오류없이 떠들썩한 파티를 통해 자바 파일을 실행합니다.

http://localhost:7777/service/test으로 이동하면 test() 기능의 텍스트가 생성되지 않아야합니까? 내 브라우저에서 Server not found 오류가 발생합니다.

아래는 wsdl 파일입니다 (http://localhost:7777/?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.* 패키지를 대표하는 REST API를 당신이 SOAP & REST 웹 서비스의 차이를 이해할 필요가

를 나타냅니다. 이러한 개념에 대한 자세한 내용은 here을 참조하십시오.

당신은 일반적으로 REST 서비스 구현을 찾고 있다고 가정

는 REST 서비스는 (톰캣, 부두, 웹 로직 등) 서버에 배포,하지만 당신은 실행해야하는 경우 그 당신은 완전히 옳다 here

+0

보면 독립되어있다. 더 많은 것은, @npit 프레임 워크를 사용하여 제안하므로 개발이 쉬워진다 : Jersey (https://jersey.java.net/), RESTEasy (http://resteasy.jboss.org/) ... – russellhoff