0


は現在、Spring ベースの Web アプリケーションを使用しています。このアプリケーションには、DAO Bean の 2 つの異なる実装があります。

  • 実際の DB アクセスの実装 (DB からデータを取得するための JDBC に基づく)。
  • テスト実装 (各メソッドが偽のデータを返す)。

    これらの実装は、applicationContext ファイルを使用してマップされます (上記のケースごとに 1 つずつ、2 つあります)。どちらか一方を使用する方法は、2 つの異なる web.xml ファイルを持ち、次のようなものを含む 2 番目のファイル (「web-test.xml」など) を持つことです。

    <context-param>
       <param-name>contextConfigLocation</param-name>
       <param-value>classpath:{...}/applicationContext-test.xml</param-value>
    </context-param>
    

    jetty プラグインの構成では、web.xml をオーバーライドできます。

    <webAppConfig>
     <contextPath>/${projectName}-test</contextPath>
     <overrideDescriptor>${basedir}/web/WEB-INF/web-test.xml</overrideDescriptor>
    </webAppConfig>
    

    これは、どちらか一方の applicationContext を使用しても問題なく機能しますが、統合テストでは両方を使用する必要があります。DB アクセスが必要なテストもあれば、偽のデータを処理するテストもあるためです。

    質問
    使用する contextPath に応じて「web.xml」または「web-test.xml」を使用できるように、複数の webAppConfig を定義することは可能ですか?
    次のように、異なる URL にアクセスする 2 つのケースを区別したいと思います。

  • localhost:8080/myWebApp (実際の DB アクセス用)
  • localhost:8080/myWebApp-test (偽データのシミュレーション用)

    pom.xml で次のようなことを試しました。

    <webAppConfig>
     <contextPath>/${projectName}</contextPath>
    </webAppConfig>
    
    <webAppConfig>
     <contextPath>/${projectName}-test</contextPath>
     <overrideDescriptor>${basedir}/web/WEB-INF/web-int-test.xml</overrideDescriptor>
    </webAppConfig>
    

    しかし、その結果、webAppConfig は 2 番目の定義によってオーバーライドされます。同じ Jetty インスタンスで 2 つのコンテキストにアクセスできるようにする方法はありますか?

    よろしくお願いいたします。

  • 4

    0 に答える 0