JNDIを手動設定する

普段はアプリケーションサーバーとかに設定してもらっているJNDIを、手動で設定するとなるとちょっと難しい感じです。
が、spring-mockにorg.springframework.mock.jndi.SimpleNamingContextBuilderがありました。(今回はspring-mock-2.0.5.jar)
これで、楽チン設定できます。

たとえば、JNDI設定、JNDI取得は以下のようにして。

import javax.naming.InitialContext;
import org.springframework.mock.jndi.SimpleNamingContextBuilder;

public class TestJNDI {

  public static void main(String[] args) {
    try {
      // JNDI設定
      SimpleNamingContextBuilder builder = SimpleNamingContextBuilder.emptyActivatedContextBuilder();
      builder.bind("java:comp/env/myparameter", "MyValue");
      builder.activate();
      
      // JNDI取得
      System.out.println(new InitialContext().lookup("java:comp/env/myparameter"));
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

実行するとこんな感じで出力されます。

myparameter = MyValue

今回は、MyValueというStringですが、DataSourceとか突っ込んじゃえばアプリケーションサーバーを起動しないでテストができたりしますね。

JNDI設定の処理は、ほぼ以下の2クラスだけでやっているので、新たにspring-mockのjarを導入したくない場合でも、コピペですぐ作れちゃいます。

  • org.springframework.mock.jndi.SimpleNamingContext
  • org.springframework.mock.jndi.SimpleNamingContextBuilder