3

現在、これをJBossに使用していますが、外部Tomcatにも何かが必要です。

Properties props = new Properties();
props.put(Context.PROVIDER_URL, "jnp://localhost:1099");
props.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
props.put(Context.URL_PKG_PREFIXES, "org.jboss.naming.client");
props.put("j2ee.clientName", "abtest");

Googleで検索すると、これが見つかりましたが、JNDI接続を受け入れるように構成されているTomcatのポートがわかりません...

props.put(Context.INITIAL_CONTEXT_FACTORY,
"org.apache.naming.java.javaURLContextFactory");
props.put(Context.PROVIDER_URL, "http://localhost:???");

助けてくれますか?

4

2 に答える 2

6

私の知る限り、TomcatはJNDIツリーへのリモートアクセスをサポートしていないため、Tomcatプロセスからのみアクセスできます。そのため、TomcatはデフォルトのInitialConextのすべての初期化パラメーターを設定し、次のように使用できます。

// Obtain our environment naming context
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");

// Look up our data source
DataSource ds = (DataSource)
  envCtx.lookup("jdbc/EmployeeDB");

// Allocate and use a connection from the pool
Connection conn = ds.getConnection();
... use this connection to access the database ...
conn.close();

このリンクで、TomcatのJNDIの詳細を学ぶこともできます

于 2009-04-14T10:31:25.853 に答える
1

Tomcatで使用するためのこの便利なリンクを見つけました:Tomcatから呼び出されたJbossのEJB

ばかげているように見えますが、実際、そのトピックのアプローチは検討するのに十分です。主なアイデアは次のとおりです。Tomcatサーバーには独自のJNDIシステムがあるため、内部Webアプリは最初に使用するJNDIを宣言し、次にその宣言を使用してリモートサーバーのオブジェクト(JbossのEJB)を検索する必要があります。

それがあなたを助けることを願っています、

よろしく、

于 2009-12-24T10:04:11.590 に答える