GlassFish 3.1,如何在服务器的根目录下部署带有WAR的EAR



我有一个EAR与WAR,我在GlassFish 3.1上部署

当前,应用程序运行在localhost:8080/myapp/index.jsf

我想让它运行在localhost:8080/index.jsf

为此,我将EAR中的application.xml从上下文根"myapp"更改为上下文根="/"

当我使用GlassFish管理UI部署我的EAR时,它给了我一个部署错误,然后当我尝试浏览到管理UI时,它向我显示默认的GlassFish主页。为了恢复,我必须从命令行使用asadmin取消部署我的EAR,然后执行restart-domain来重新启动服务器。

我的理论是,我的应用程序和GlassFish管理UI都运行在根"/"。

问题:在GlassFish 3.1的根中部署我的web应用程序的正确方法是什么?或者这是不好的做法?

谢谢!

Rob

Rob,

如果您从命令行部署,您可以使用参数asadmin来选择上下文根。这从来没有给我你描述的问题。

$ASADMIN deploy——contextroot "/" your.war

你的另一个选择是在虚拟服务器设置下选择一个默认的web模块,但我个人更喜欢只设置一个应用程序到/.

凯文

最简单的方法是有一个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>

作为提示,你应该考虑使用war而不是ear。Glassfish 3。它是JavaEE6的参考实现,具有与EJB使用war的特性。也就是说,您可以在没有ear bundle的情况下轻松地使用war和ejb。它不仅可以显著减小应用程序的大小,还可以让您在类加载问题,内存占用等方面有一个良好的实践…