2012-09-26 21 views
5

我正在考慮使用「light」組件而不是完整的堆棧框架開發新的Web應用程序。使用Guice-servlet/Jetty/Jersey的輕型Java web堆棧 - 一些問題

This article是我的主要靈感!

Jetty:Web服務器。我可能會使用一個可嵌入的版本進行開發,但可以選擇將應用程序導出爲.war,並將外部Jetty服務器用於生產環境。

Guice/Guice-Servlet:用於依賴注入和servlet映射+過濾器。

Jersey:用於路由請求/響應json(de)序列化。

的重要說明:我知道有些人會用這種棧中的新澤西州爲Web服務層只,並會使用JavaScript框架(骨幹,AngularJS等)使用這些服務和在JavaScript中執行大部分表示邏輯。我還沒有準備好這種客戶端的東西。我仍然樂於使用JSP,並且能夠將純HTML發送給JavaScript禁用的客戶端。

所以,我的問題:

  • 什麼是使用澤西管理形式的最佳方式?使用Spring MVC(我在其他項目中使用過),有這種「支持對象」的概念,其中提交的POST數據自動綁定到後臺對象,然後便於使用。澤西島有沒有類似的東西?

  • 我喜歡一個具體路線來定義我的所有路由文件,不是到處爲@Path註釋這是,在我看來,更難管理。我很確定Jersey需要使用這些硬編碼的JAX-RS的@Path註釋,並且不允許外部路由配置系統,這是否正確?你有沒有看到我可以用Jersey將所有路線集中起來?

  • 我喜歡的概念,反向路由(就像Play框架提供的一樣)。而且,我認爲澤西不能提供這種功能,這是否正確?

  • 考慮到我以前的問題,也許澤西島不是正確的技術使用?你知道其他庫可以用於我的堆棧中的路由部分嗎?

  • 這種輕型Java Web堆棧的任何其他建議/提示?

UPDATE:

我目前看UrlRewriteFilter的路由部分。

我也在看看ActiveWeb framework,這是一個「全棧」框架,但似乎很輕,也似乎提供了我正在尋找的一些功能:集中路由配置和反向路由。

+3

您可能會發現DropWizard很有趣:http://dropwizard.codahale.com/getting-started/ –

+0

是的,我見過(並且收藏了!)DropWizard,確實很有趣。這幾乎是我想要使用的那種堆棧。但是我在這裏問的問題仍然有效,有或沒有DropWizard!此外,DropWizard似乎並沒有整合一個依賴注入庫(我發現有一個[Guice附加](https://github.com/jaredstehler/dropwizard-guice))? – electrotype

+0

你爲什麼需要Guice? Servlet 3.0不夠嗎? – keuleJ

回答

0

解釋一些術語。 Guice和Spring解決了依賴注入的相同問題域。所以,同時使用Guice和SpringMVC是不可能的,或者至少是相反的。

要Guice和春天之間的差異,以及說:

陡!更接近血腥的不可能。我覺得Guice就像是一個女孩回家過夜。春天是一定的婚姻,如果不小心,離婚痛苦。 - 蜘蛛10月7'11日16:25

guice的確是非常輕量級的DI框架。但是不支持路由和模板。你必須通過自己來綁定servlet和使用tempaltes引擎。或者你可以使用Sitebricks。你可以把所有的路由到SitebrickModule配置方法是這樣的:

public class MyAppConfig extends SitebricksModule { 
@Override 
protected void configureSitebricks() { 
    at("/movies").show(MoviesPage.class); // basic page 
    at("/actors").serve(ActorsPage.class); // service 
    embed(SoundtrackPage.class).as("Soundtrack"); // brick 
} 

}

Sitebricks還支持多種tempalting系統:MVEL,的Freemarker,...

此外,您可以輕鬆地建立起自己的REST services for javascript usage:

Reply<Product> view() { 
    return Reply.with(new Product("Anti-ageing cure")) 
       .as(Json.class); 
} 

試試看。