Websphere 環境を起動せずに EJB クラスを (ユニット) テストしようとしています。現在、私はOpen EJBを使用していますが、EJB 内で使用されている他の EJB の JNDI 名を解決する際にいくつかの問題があり、現在、テストからモック クラスを注入する方法がありません。
InitialContext の取得
final Properties properties = new Properties();
properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory");
properties.setProperty("log4j.category.OpenEJB.options ", "debug");
properties.setProperty("log4j.category.OpenEJB.startup ", "debug");
properties.setProperty("log4j.category.OpenEJB.startup.config ", "debug");
properties.setProperty("MyOwnDatasource.JdbcDriver ", "com.ibm.as400.access.AS400JDBCDriver");
properties.setProperty("MyOwnDataSource.JdbcUrl ", "jdbc:as400:MYHOSTNAME;database name=MYDATABASE;libraries=MYDEFAULTTABLE");
ic = new InitialContext(properties);
テスト中のクラス内にルックアップがありjava:comp/env/ejb/PrefixEjbNameLocalHome
、その形式で JNDI 名を生成するように Open EJB を設定できません。
JNDI 名形式の追加プロパティ
次のようにフォーマットルールを設定してみました:
properties.setProperty("openejb.jndiname.format ", "comp/env/ejb/{interfaceClass}");
プロパティが使用されていませんか?
また、ロギング構成は使用されません。DEBUGまたはTRACEなどを設定しましたが、Open EJB からのINFOおよびWARNメッセージしか表示されません。log4j.category.OpenEJB.*