プロジェクトは Hibernate を使用し、Jboss 5.1 にデプロイします。Hibernate は JNDI を使用してデータソースを取得します。
DAO レイヤーの JUnit テストを作成したいので、Jboss を実行せずにテストするために JNDI データ ソースとトランザクション マネージャーを作成する必要があります。
このために、私はコードを書きました:
System.out.println(LocateRegistry.getRegistry());
Registry reg = LocateRegistry.createRegistry(1099);
Properties properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
properties.put(Context.URL_PKG_PREFIXES, "org.jboss.naming");
properties.put(Context.PROVIDER_URL, "localhost:1099");
InitialContext initialContextcontext = new InitialContext(properties);
名前付きオブジェクト アプリケーションをルックアップまたはバインドしようとすると、縮みます。そしてしばらくすると、タイムアウト例外がスローされます。Bind サブコンテキストが同じ例外をスローする
Mavenには依存関係が含まれています:
<groupId>org.jboss.client</groupId>
<artifactId>jbossall-client</artifactId>
<version>4.2.3.GA</version>
調査の後、私はこの記事http://something-about-tech.blogspot.com/2008/12/injecting-jndi-datasource-for-junit.htmlに直面しました。しかし、このような行Registry reg = LocateRegistry.createRegistry(1099);
が見落とされています..私は混乱しています...
関連記事 ( Registering MySQL DataSource with JNDI for Hibernate ) で、レジストリ データソースに興味がありましたが、
Context.INITIAL_CONTEXT_FACTORY="com.sun.jndi.rmi.registry.RegistryContextFactory"
助けてください。