2

Weblogic(12c)で定義されたJNDIデータソースをローカルのjndi名にマッピングするのに問題があります。

weblogic mysqlデータソースに「mysqltestds」として定義されたデータソースがあり、Webアプリケーション内のiをローカル名「localds」にマップしたい

私のweb.xmlプロパティは

<resource-ref>
   <res-ref-name>localds</res-ref-name>
   <res-type>javax.sql.DataSource</res-type>
   <res-auth>Container</res-auth>
</resource-ref>

weblogic.xmlを使用

<weblogic-web-app>
   <resource-description>
      <res-ref-name>localds</res-ref-name>
      <jndi-name>mysqltestds</jndi-name>lls
   </resource-description>
</weblogic-web-app>

グローバル名「mysqltestds」を使用してデータソースを取得すると、正しく機能します。

Context initialContext = new InitialContext();
Object resource = initialContext.lookup("mysqltestds");
dataSource = (DataSource) resource; 

ただし、「localds」を試してみると、次のエラーで失敗します。

Context initialContext = new InitialContext();
Object resource = initialContext.lookup("localds");
dataSource = (DataSource) resource; 

javax.naming.NameNotFoundException:「localds」を解決できません。解決済み''; 残りの名前'localds'

誰でも助けることができます。このstackOverflowの質問TomcatとWeblogicJNDIルックアップの指示に従いましたが、成功していません。

4

3 に答える 3

1

いくつかのこと。
最初に確認することは、アクセスしているサーバーにデータソースを実際にデプロイしたことを確認することです。あなたが持っていない場合、あなたはその正確なメッセージを受け取るでしょうから。

また、コンソールを見てサーバーページに移動し、使用しているサーバーをクリックした場合も同様です。

次に、jndiViewerのようなものと呼ばれるページ上のリンクがあり、データソースを参照してその場所を確認できるはずです。

于 2012-07-18T01:06:05.943 に答える
1

試行錯誤しながらこれを解決してしまいました。

ローカルリソース参照を使用している場合は、「java:comp / env / ..」プレフィックスを使用して参照する必要があるようです。そのため、次の変更を行ったときにJavaコードが機能しました。

Context initialContext = new InitialContext();
Object resource = initialContext.lookup("java:comp/env/localds");
dataSource = (DataSource) resource; 

他の誰かが同様の問題を抱えている場合、これが役立つことを願っています

于 2012-07-18T23:29:52.247 に答える
0

このエラーに関連するトピックは実際には多くありません。最近、古いJbossバージョンからWildFly10に移行するときにこのエラーに直面しました。

server.logをgrepして、で使用する正しい文字列を見つけることができることがわかりましたlookup

于 2018-05-18T12:01:13.727 に答える