我们最近切换到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。
有没有办法实现这个目标?
答案 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>