2

Tomcat サーバー (v5.5 & v6) にデプロイされた個人用のJava ライブラリがあります。このライブラリは多くの Web アプリケーションで共有されているため、tomcat ディレクトリの shared/lib にデプロイされています。

例外的に、JNDI 経由で jdbc データソースをルックアップする新しいクラスをこのライブラリに作成する必要があります。

そのために、ここに私のコード:

Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource dataSource = (DataSource) envCtx.lookup("jdbc/corp.xx.xx.xxxxDS");

すべてのコンテキストは問題なくインスタンス化されます。しかし、jdbc データソースを検索すると、例外があります: Name jdbc not Found in Context

私たちはウェブアプリではありませんが、問題はありますか? ResourceLink で context.xml を宣言することは可能ですか? どうやって ?

注意: jndi は server.xml (GlobalNamingResources のリソース) に設定されています。

4

1 に答える 1

2
<Context ...>
  ...
  <ResourceLink name="linkToGlobalResource"
            global="simpleValue"
            type="java.lang.Integer"
  ...
</Context>

nameは新しい名前(java:comp/env に関連する名前)、globalは server.xml で構成されたグローバル jndi 名です。

したがって、コードから、リンクされたグローバル リソースを提供するlinkToGlobalResourceを検索します。

参照: http://tomcat.apache.org/tomcat-5.5-doc/config/context.html#Resource_Links

回答が更新されました:

スタンドアロン jar にはコンテキストの概念がないため、JNDI アクセスは共有 jar ではなく Web アプリから行われます。

于 2013-04-21T13:40:36.437 に答える