Контекстный путь для веб-приложения на Glassfish 3.1.2.2
Я пытаюсь найти способ явно указать контекстный путь веб-приложения, развертываемого на Glassfish 3.1.2.2, но пока мне не повезло. Кто-нибудь может дать руководство по этому вопросу? Справочная информация об этом ниже:
У меня есть веб-приложение, которое состоит из двух отдельных проектов Netbeans (7.0). Первый - это веб-сервис, который называется FooWS. Второе - это пользовательское веб-приложение, которое использует веб-сервис FooWS. Это называется FooApp.
Я недавно обновил glassfish до 3.1.2.2 в надежде решить какую-то другую проблему, и теперь, когда я развертываю приложение FooWS, оно успешно разворачивается, но с контекстным путем /web, а не /FooWS. Это не то, что меня особенно волнует, за исключением того, что когда я пытаюсь развернуть FooApp, glassfish также пытается развернуть это в /web, что приводит к следующей ошибке:
SEVERE: исключение при загрузке приложения: java.lang.Exception: WEB0113: на виртуальном сервере [сервер] уже есть веб-модуль [FooWS], загруженный в [/web]; поэтому веб-модуль [FooApp] не может быть загружен по этому контекстному пути на этом виртуальном сервере.
Файл web.xml для FooApp выглядит следующим образом:
<?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), и он ведет себя как ожидалось.
1 ответ
Добавьте файл glassfish-web.xml в ту же папку, что и 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 error-url="">
<context-root>/FooWS</context-root>
</glassfish-web-app>