【发布时间】:2012-08-04 22:28:23
【问题描述】:
我正在尝试找到一种方法来明确指定部署到 Glassfish 3.1.2.2 的 Web 应用程序的上下文路径,但到目前为止我还没有运气。任何人都可以提供这方面的指导吗?其背景如下:
我有一个由两个独立的 Netbeans (7.0) 项目组成的 Web 应用程序。第一个是 Web 服务,称为 FooWS。第二个是使用 FooWS 网络服务的面向用户的网络应用程序。它被称为 FooApp。
我最近将 glassfish 升级到 3.1.2.2,希望能解决一些其他问题,现在当我部署 FooWS 应用程序时,它部署成功,但使用上下文路径 /web 而不是 /FooWS。这不是我特别关心的事情,除了当我尝试部署 FooApp 时,glassfish 也尝试将其部署到 /web 导致以下错误:
严重:加载应用程序时出现异常:java.lang.Exception:WEB0113:虚拟服务器 [server] 已经在 [/web] 处加载了 Web 模块 [FooWS];因此无法在此虚拟服务器上的此上下文路径中加载 Web 模块 [FooApp]。
FooApp 的 web.xml 如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<context-param>
<param-name>defaultWebRootId</param-name>
<param-value>2631</param-value>
</context-param>
<listener>
<listener-class>com.foo.service.AppInitialiser</listener-class>
</listener>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
</web-app>
FooWS 的配置类似。两者都没有提到应用程序上下文,所以我的期望是它应该使用 /FooWS 而不是默认使用 /web。
显而易见的解决方案似乎是覆盖 web.xml 中的上下文路径,但我找不到任何这样做的方法。有什么建议?
只是一些跟进,我不小心将上下文路径更改为 /FooW。这次它按预期部署到 /FooW。如果 /FooWS 导致旧行为返回,则将其更改回来,也就是说,它再次部署到 /web。看来我目前有一个解决方法。
为了任何关注此内容的人的利益,我在 3.1.2 中得到了相同的行为。我现在已经返回到 3.1 (b43),它的行为符合预期。
【问题讨论】:
-
您在 netbeans 中部署?右键单击项目-> 属性-> 运行-> 查看上下文路径字段。如果你通过asadmin部署,可以显示命令吗?
-
是的,我正在从 netbeans 进行部署。上下文路径显示 /FooWS 正如我所期望的那样,但它似乎没有被使用。我尝试重新创建该项目,但它也没有帮助。
-
“web”是否可能是域(默认为“domain1”)?
-
域名肯定是domain1,你问的是这个吗?上面的日志消息还表明 /web 是上下文路径,而不是域名。
标签: java jakarta-ee glassfish glassfish-3