2017-04-07 140 views
4

我想用JAX-RS對RESTful Web服務進行編碼,並且我想在本地主機上發佈它,如http://localhost:[port]。我閱讀本answer以下:如何在Java SE環境中部署JAX-RS應用程序?

Java的SE 7(JSR 336)和Java SE 8(JSR 337)規格 不摻入JAX-RS組件。但是,JAX-RS應用程序 可以在Java SE環境中發佈(使用RuntimeDelegate)和 JAX-RS實現也可以支持通過JAX-WS發佈。

提到了RuntimeDelegate。我如何使用它?如果有關於如何實現它的任務有很好的例子,請與我分享。

+0

我不想用tomcat glassfish和其他...只有ednpoint – Andrey

回答

4

要在Java SE環境中部署JAX-RS應用程序,可以使用RuntimeDelegate和JAX-RS實現支持的HTTP服務器。一個servlet容器不是必需的。

JSR 339狀態如下:

在Java SE環境的端點類的配置實例可以使用的RuntimeDelegatecreateEndpoint方法獲得。該應用程序提供Application的實例和所需的端點類型。實現可以支持任意類型的零個或多個端點類型。

如何使用生成的端點類實例來發布應用程序超出了本規範的範圍。

新澤西州,在JAX-RS參考實現,支持range of HTTP servers,您可以使用部署在Java SE JAX-RS應用程序。

例如,GrizzlyRuntimeDelegate,你可以有以下幾種:

public class Example { 

    public static void main(String[] args) { 

     ResourceConfig resourceConfig = new ResourceConfig(); 
     resourceConfig.register(GreetingsResource.class); 

     HttpHandler handler = RuntimeDelegate.getInstance() 
       .createEndpoint(resourceConfig, HttpHandler.class); 

     HttpServer server = HttpServer.createSimpleServer(null, 8080); 
     server.getServerConfiguration().addHttpHandler(handler); 

     try { 
      server.start(); 
      System.out.println("Press any key to stop the server..."); 
      System.in.read(); 
     } catch (Exception e) { 
      System.err.println(e); 
     } 
    } 

    @Path("/greetings") 
    public static class GreetingsResource { 

     @GET 
     @Produces(MediaType.TEXT_PLAIN) 
     public String getGreeting(){ 
      return "Hello from the other side."; 
     } 
    } 
} 

的應用將可在http://localhost:8080/greetings

以下相關性所需要的上面示出的例子:

<dependency> 
    <groupId>org.glassfish.grizzly</groupId> 
    <artifactId>grizzly-http-server</artifactId> 
    <version>2.3.30</version> 
</dependency> 
<dependency> 
    <groupId>org.glassfish.jersey.containers</groupId> 
    <artifactId>jersey-container-grizzly2-http</artifactId> 
    <version>2.25.1</version> 
</dependency> 

支持的其他實現方式包括:

Jersey documentation還描述了用於Java SE環境的其他部署備選方案,沒有RuntimeDelegate

-1

爲了構建REST Web服務,您不僅可以使用Java SE。我錯了,Cassio提到JAX RS可以用Java SE來實現。我建議您閱讀關於Java SE和Java EE之間差異的更多信息,例如在此discussion上。

要回答你的問題,你可以很容易地創建REST Web服務,只需添加javaee 7 API依賴項,然後將Web Archive(war)項目部署到Application Server中,例如wildfly,payara或glashfish,以及一些示例建立REST Web Service with Java EE 7。使用Spring框架構建REST Web服務的另一種方法是提供有關REST with Spring的簡單而好的教程。

+0

我不想用tomcat glassfish和其他...只有ednpoint – Andrey

+0

你的回答是不正確的。 JAX-RS資源類可以在Java SE中部署。 –

相關問題