首页 文章

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

提问于
浏览
6

我有一个带有WAR的EAR,我正在GlassFish 3.1上部署

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

我希望它在localhost:8080 / index.jsf上运行

为此,我将EAR中的application.xml从contextRoot“myapp”更改为contextRoot =“/”

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

我的理论是我的应用程序和GlassFish管理员UI都在root“/”上运行 .

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

谢谢!

2 回答

  • 3

    抢,

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

    $ ASADMIN deploy --contextroot“/”your.war

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

    凯文

  • 3

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

    作为一个注释,你应该考虑使用战争而不是耳朵 . Glassfish 3.x是JavaEE6的参考实现,它具有与EJB一起使用war的功能 . 也就是说,你可以轻松地使用你的ejb与没有耳塞的战争 . 它不仅可以显着减少您的应用程序大小,还可以让您在类加载问题,内存占用等方面有一个很好的实践......

相关问题