2016-10-31 2 views
0

Ниже приведен пример простой игры с использованием javax.ws. Я хочу получить URL-адрес службы, вызываемый из веб-браузера или завиток. Это код игрушки службы:Как получить простой javax.ws URL-адрес службы REST

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()); 
    } 
} 

я запускаю файл Java с помощью Баш без ошибок.

Не следует переходить на http://localhost:7777/service/test, чтобы создать текст функции test()? Я получаю сообщение об ошибке «Сервер не найден» в моем браузере.

Ниже представлен файл 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

Вы смешиваете API SOAP и REST, что НЕ является правильным. Вы не можете использовать их вместе для одной и той же конечной точки.

javax.jws.* пакет (так называемый, как JAX-WS) представляет собой SOAP API

javax.ws.rs.* пакет (так называемый, как JAX-RS) представляет REST API

Вы должны понимать разницу между SOAP & REST веб-служб. Вы можете посмотреть на here для получения более подробной информации об этих концепциях.

Предполагая, что вы ищете для реализации REST сервисов, в общем, REST сервисы развернуты в сервера (например, Tomcat, Jetty, Weblogic), но если вам нужно запустить их автономными выглядеть here

+0

Вы совершенно правы. Более того, я бы предложил @npit использовать фреймворк, так что разработка станет проще: Джерси (https://jersey.java.net/), RESTEasy (http://resteasy.jboss.org/) ... – russellhoff

Смежные вопросы