0

概要

デプロイされた Java Web アプリが接続する中央の LDAP サーバーがあります。私たちの JUnit テストは、LDAP リポジトリ内の特定のデータに依存しているため、サンプル データ セットが準備された組み込みの ApacheDS LDAP サーバーに接続する必要があります。Web アプリケーションをデプロイするときに ApacheDS サーバーが起動しないようにするにはどうすればよいでしょうか?

詳細

Spring セキュリティを使用しており、ldap-context.xml に組み込み LDAP サーバーを起動するための次の行があります。

<security:ldap-server root="dc=test,dc=com" port="33389" ldif="classpath:EmbeddedServerRoot.ldif" />

現在、web.xml は、このテスト コンテキスト ファイルと最上位の application-context.xml の両方を参照しています。

    <context-param>
       <param-name>contextConfigLocation</param-name>
       <param-value>
           classpath:ldap-context.xml
           classpath:application-context.xml 
       </param-value>
   </context-param>

JUnit テストを実行するとき、および Eclipse から (WTP 経由で) 直接 webapp を実行するときに、ldap-context.xml が含まれていることを確認する必要がありますが、war をパッケージ化してサーバーにデプロイするときには除外されます。

ビルドツールとしてmavenを使用しています。コンテキスト構成に両方のスプリング コンテキスト ファイルが含まれていることを確認することで、JUnit テストでこの状況をかなり簡単に処理できます。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:ldap-context.xml", "classpath:application-context.xml" })
public class TestStuff {
}

次に、web.xml には application-context.xml のみが含まれますが、1 つのことを除いて - これは WTP から実行している場合は機能しません - その場合も組み込みサーバーを起動する必要があります。助言がありますか?

4

2 に答える 2

1

If you're using Maven, why not use the Assembly plugin to manage your environment deployments. It seems like your spring file is not that complex, so you can have a common spring file which doesn't have the ldap-context.xml reference, and then a test-specific version which does have the ldap reference. When assembly is configured and run, the environment specific file will overwrite the common version, and then you can deploy your packaged app.

于 2008-10-16T20:26:10.313 に答える
0

別の可能性として、pom でいくつかのプロパティを使用し、フィルタリングされた Spring Bean ファイルを使用して、Bean のエイリアスを定義し、環境を切り替えることができます。ただし、構成で両方の Bean を使用する必要がありますが、どちらか一方を使用します。

于 2008-10-16T22:29:20.957 に答える