7

Glassfish 3.1.2.2にデプロイされているWebアプリケーションのコンテキストパスを明示的に指定する方法を見つけようとしていますが、これまでのところうまくいきませんでした。誰かがこれについてのガイダンスを提供できますか?これの背景は以下の通りです:

2つの別々のNetbeans(7.0)プロジェクトで構成されるWebアプリケーションがあります。1つはWebサービスで、FooWSと呼ばれます。2つ目は、FooWSWebサービスを使用するユーザー向けのWebアプリケーションです。それはFooAppと呼ばれています。

最近、他の問題を解決するためにGlassfishを3.1.2.2にアップグレードしました。現在、FooWSアプリをデプロイすると、正常にデプロイされますが、/FooWSではなくコンテキストパス/webが使用されます。これは私が特に気にすることではありませんが、FooAppをデプロイしようとすると、glassfishもそれを/ webにデプロイしようとし、次のエラーが発生します。

重大:アプリのロード中に例外が発生しました:java.lang.Exception:WEB0113:仮想サーバー[サーバー]にはすでに[/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の構成も同様です。どちらにもアプリケーションコンテキストの記述が含まれていないため、デフォルトで/webではなく/FooWSを使用する必要があると思います。

明らかな解決策は、web.xmlのコンテキストパスをオーバーライドすることであるように思われますが、これを行う方法が見つかりません。助言がありますか?

フォローアップのほんの一部ですが、誤ってコンテキストパスを/FooWに変更しました。今回は/FooWに期待通りに展開しました。/ FooWSによって古い動作が返される場合、つまり/ webに再度デプロイされる場合は、これを元に戻します。今のところ回避策があるようです。

これをフォローしている人のために、3.1.2でも同じ動作をしました。3.1(b43)に戻り、期待どおりに動作します。

4

1 に答える 1

17

web.xml と同じフォルダーに 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 error-url="">
    <context-root>/FooWS</context-root>
</glassfish-web-app>
于 2012-08-08T16:22:43.343 に答える