使用GlassFish 3中glassfish-web.xml的context-root

时间:2013-04-25 13:39:22

标签: glassfish war asadmin contextroot

我们最近切换到Glassfish 3.1.2.2并将多个Web应用程序打包为war文件。有时,这些应用程序的所需上下文根与文件名不同。

当我们使用Weblogic时,我们通过在weblogic.xml中声明context-root来实现这一点

<context-root>path/to/our/App</context-root>

我们注意到glassfish-web.xml中存在相同的Tag。但无论我们在那里定义什么,服务器总是将文件名确定为context-root。

现在我们在asadmin实用程序中找到了选项--contextroot,它允许我们在部署时覆盖文件名,但是我们更愿意直接在存档本身中定义它,以便最终将它部署到谁不需要知道所需的contex-root。

有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:10)

在GlassFish 3和GlassFish 4中,Web应用程序的配置是通过glassfish-web.xml完成的。在您的情况下,所需的配置文件如下所示:

<!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>/path/to/our/App</context-root>
</glassfish-web-app>

您可以在 Oracle GlassFish Server应用程序部署指南 GlassFish服务器部署描述符文件部分找到更多详细信息。可在http://docs.oracle.com/cd/E18930_01/html/821-2417/找到此文档的在线版本。

答案 1 :(得分:4)

通常这应该与glassfish-web.xml一起使用,如下所示:

<!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>/path/to/App</context-root>
</glassfish-web-app>

但是在这里看起来你需要一个名为sun-web.xml的文件来完成你的任务。

以下是一个例子:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-web-app PUBLIC 
     "-//Sun Microsystems, Inc.//DTD GlassFish Application Server 3.0 Servlet 3.0//EN"   
     "http://www.sun.com/software/appserver/dtds/sun-web-app_3_0-0.dtd">
<sun-web-app error-url="">
    <context-root>/path/to/our/App</context-root>
</sun-web-app>