2011-10-17 71 views
5

我有一個WAR的EAR說我部署在GlassFish 3.1GlassFish 3.1,如何在服務器根目錄中部署帶有WAR的EAR?

目前,該應用程序運行在本地主機:8080/MyApp的/ index.jsf

我希望它在本地主機上運行:8080/index.jsf

要做到這一點,我改變的application.xml從上下文根「的myapp」耳朵上下文根=「/」

當我部署使用GlassFish管理UI我的耳朵,它給了我一個部署錯誤,那麼當我嘗試瀏覽到管理界面時,它會顯示默認的GlassFish主頁。要恢復,我必須從命令行使用asadmin取消部署EAR,然後執行重新啓動域以重新啓動服務器。

我的理論是我的應用程序和GlassFish管理界面都在根目錄「/」上運行。

問題:在GlassFish 3.1的根目錄中部署我的web應用的正確方法是什麼?或者這是不好的做法?

謝謝!

羅布

+0

我想我跟着你的'步驟',我不能複製這個問題你看到了。我在Mac OS X 1.7.2,GF 3.1.1上。你的步驟對我來說工作得很好......雖然他們有點模糊,我可能會錯誤地解釋它們,因此我無法複製這個問題。有關'它給我一個部署錯誤'的更多細節可能是對這個問題的有益補充。 – vkraemer

+0

@vkraemer - 我爲我的問題開始了一個新的更詳細的問題,請訪問它,任何幫助非常感謝! http://stackoverflow.com/questions/7878645/errors-deploying-war-in-root-context-on-glassfish-3-1 –

回答

2

羅布,

如果在命令行中你的部署中,可以使用參數的asadmin選擇上下文根。這從來沒有給你我描述的問題。

$ asadmin的部署--contextroot「/」 your.war

你的另一個選擇是在虛擬服務器設置來選擇一個默認Web模塊,但我個人更喜歡只設置一個應用程序/。

凱文

+0

我不知道--contextroot與ear文件一起工作... – vkraemer

+0

@凱文 - 我已經詳細說明了我的問題,請採取以下措施:http://stackoverflow.com/questions/7878645/errors-deploying-war-in-root-context-on-glassfish-3-1 –

+0

doesn' t爲EAR工作... – Damian

3

的easisest方式具有glassfish-web.xml

這是我的配置,它位於我的WEB-INF目錄中。

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd"> 
<glassfish-web-app> 
    <context-root>/myapplication</context-root> 
</glassfish-web-app> 

作爲一個說明,你應該考慮使用戰爭而不是耳朵。作爲JavaEE6參考實現的Glassfish 3.x具有與EJB一起使用的特性。這就是說,你可以輕鬆地使用你的ejb沒有耳朵捆綁你的戰爭。它不僅會顯着減少你的應用程序的大小,而且還可以讓你在類加載問題,內存佔用等方面有一個良好的做法...

相關問題