Контекстный путь для веб-приложения на 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>
Другие вопросы по тегам