2013-02-21 26 views
0

我有一個JSF 2.0 web項目,我使用Glassfish 3.1.2服務器。在這個項目中,我有其中包括:如何正確地將JSF 2.0 Web應用程序導入戰爭?

  • 一類叫做AjaxServlet註解爲@ javax.servlet.annotation.WebServlet
  • 一個稱爲會話註釋類@ javax.ejb.Stateful

當我從eclipse將這個項目部署到Glassfish時,一切都運行完美:在Glassfish的管理控制檯中,與應用程序相關的引擎是[ejb,jpa,web,weld]。但是當我第一次將項目導出爲戰爭時,然後從管理控制檯部署戰爭,應用程序不起作用:與應用程序關聯的引擎僅限於[web]。

如何在不丟失任何信息(所有引擎)的情況下將應用程序導出爲戰爭?我沒有在web.xml中聲明我的Servlet,因爲在JSF 2.0中,我們不需要這些:註釋就足夠了。有沒有人知道這裏發生了什麼?我很確定這不是Glassfish發行版(Web Profile Vs Full Platform)的問題,因爲同樣的Glassfish服務器用於上述兩種情況。

請注意那些錯誤地認爲我的問題是偏題的人:Jsf是一個編程Java EE Web應用程序的框架。 war是一種封裝Jsf應用程序的方式,與jar一樣是一種封裝Java類的方法。所以我的問題完全是一個編程主題!在StackOverflow中使用它是完全合法的。如果將JSF應用程序導出爲war並不是一個編程問題,那麼將java類編譯爲.class應該不是一個編程主題!所以Pleaze不會因爲這個原因而降級!

+0

JSF是視圖技術,是JEE堆棧的一部分。戰爭和JSF沒有直接關係。你的問題是如何將JEE web應用打包成戰爭。這取決於你使用什麼工具來管理和構建你的項目(一個Eclipse項目,maven ...) – 2013-02-21 19:16:46

+0

我的問題是爲什麼區別?爲什麼當我用eclipse部署我的應用程序時,一切都正常,而不是當我第一次出口戰爭然後部署戰爭? – ouba64 2013-02-21 22:21:48

回答

1

你必須瞭解你的eclipse環境和你的glassfish環境之間的區別。並非所有在eclipse中可用的庫都可能包含在您的外部環境中。有些情況下,程序在eclipse中編譯,但不能從控制檯運行。 這裏是一個提示。

右鍵單擊項目,導航至屬性> Java構建路徑>訂單和導出,並確保將導出所需的所有庫。

相關問題