2015-12-12 103 views
1

我有一個工作的Web應用程序,我已經成功部署到Heroku並運行良好。但是,我試圖調整服務器/ servlet配置,那時候我意識到我不知道我的應用程序實際上在做什麼。使用Glassfish servlet配置Jetty服務器

對於GlassFish,this is the config that's needed

然而,碼頭,this is the config that's needed

我意識到我有上面我的應用程序實際上是用不知道,所以我就開始在我的代碼挖掘,發現如下:

主要方法,通過Heroku的被稱爲被實例化下面的Jetty服務器/ webappcontext。

import org.eclipse.jetty.server.Server; 
import org.eclipse.jetty.webapp.WebAppContext; 

然而,碼頭配置似乎依賴於大量的文件(如等/的jetty.xml,web應用文件夾或war文件),這我的項目並沒有在所有的。

另外,我的web.xml文件定義瞭如下的servlet:

<servlet> 
    <servlet-name>Jersey Web Application</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 

,我的應用程序定義一個Jetty服務器,但Glassfish的servlet的關心我頗有幾分事實。在努力圍繞碼頭一切都標準化,我嘗試添加該碼頭的servlet我的pom.xml的依賴,改變了以上:

<servlet-class>org.eclipse.jetty.servlet.DefaultServlet</servlet-class> 

然而,這一變化引起了我的應用程序突破。它仍然編譯成功,所有基於測試集的測試仍然在本地成功。但是當我真正運行服務器時,沒有任何路由可以工作。

一些問題:

  1. 它是一個不明智的有Glassfish的servlet的(容器)一起使用Jetty服務器?

  2. 如果有,是什麼的servlet(容器?)我應該代替Glassfish的有,什麼我需要做的就是在新碼頭的servlet的工作?

  3. 如果沒有,我應該使用我的當前設置是什麼配置?我應該執行Glassfish config還是Jersey config

我花了很多時間試圖通過各種文檔,教程,閱讀和堆棧溢出線程,但他們都承擔任何關於servlet,JavaEE的和相關主題(其中沒有我熟悉的先驗知識),或者他們傾向於從頭開始構建全新的hello-world應用程序(而不是將現有的工作應用程序移植過來,這正是我正在嘗試做的)。任何你可以給予的解釋,而不假定事先知道,與上述情況相關,將不勝感激。


編輯:我想我現在開始明白,一個Servlet是產生一個請求的響應代碼,以及ServletContainer就是提供了Servlet的基礎設施。我從來沒有必須直接處理Servlets來構建我的Web應用程序。這裏是一個什麼樣的路徑看起來像我的應用程序的例子:

@Path(Ping.REST_PREFIX) 
public class Ping { 
    static final String REST_PREFIX = "/ping"; 

    @GET 
    public static Response get(@DefaultValue("getPing") @QueryParam("param") String param) { 
     return Response.ok().entity(param).build(); 
    } 

    @Path("/pong") 
    @GET 
    public static Response getPong(@DefaultValue("getPong") @QueryParam("param") String param) { 
     return Response.ok().entity(param).build(); 
    } 
} 

我怎麼能口代碼像上面到碼頭ServletContainer,無需重寫我的應用程序的龐大的板塊?

回答

1

您未使用「Glassfish Servlet容器」,而是使用「Jersey Servlet容器」。

澤西島是您正在使用的項目。

Glassfish是幫助管理/維護澤西島項目(以及數十個其他項目)的傘式組織(有時稱爲「僞造」)。

Difference com.sun.jersey and org.glassfish.jersey

Jersey項目現在可以在java.net組織中找到。

https://jersey.java.net/

相關問題