【问题标题】:GlassFish 3.1, how to deploy an EAR with a WAR in root of server?GlassFish 3.1,如何在服务器根目录中部署带有 WAR 的 EAR?
【发布时间】:2011-10-18 16:07:10
【问题描述】:

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

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

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

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

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

我的理论是我的应用程序和 GlassFish 管理 UI 都在根目录“/”上运行。

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

谢谢!

罗伯

【问题讨论】:

  • 我想我遵循了您的“步骤”,无法复制您看到的问题。我在 Mac OS X 1.7.2、GF 3.1.1 上。你的步骤对我来说很好......虽然它们有点模糊,我可能会错误地解释它们,因此我无法复制这个问题。有关“它给我一个部署错误”的更多详细信息可能是对这个问题的有用补充。
  • @vkraemer - 我为我的问题开始了一个新的更详细的问题,请访问它,非常感谢任何帮助! stackoverflow.com/questions/7878645/…

标签: glassfish ear


【解决方案1】:

罗伯,

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

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

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

凯文

【讨论】:

【解决方案2】:

最简单的方法是使用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.x 是 JavaEE6 的参考实现,具有使用与 EJB 的战争的特性。也就是说你可以很容易地用你的ejb来使用你的war而不需要ear bundle。它不仅会显着减少您的应用程序大小,还可以让您在类加载问题、内存占用等方面有一个良好的实践......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-12
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-27
    • 2018-04-23
    相关资源
    最近更新 更多