web-dev-qa-db-ja.com

Javaプレフィックスjdbc /)からweblogicデータソースにアクセスできません

以下のjndi名でweblogicに2つのデータソースを作成しました

  • jdbc/testDatasource
  • testDatasource1

Javaを使用してデータソースtestDatasource1にアクセスできますが、dataource jdbc/testDatasourceにアクセスしているときに、以下のエラーが発生します

javax.naming.NameNotFoundException: While trying to lookup 'jdbc.testDatasource' didn't find subcontext 'jdbc'. Resolved '' [Root exception is javax.naming.NameNotFoundException: While trying to lookup 'jdbc.testDatasource' didn't find subcontext 'jdbc'. Resolved '']; remaining name 'jdbc/testDatasource'

プレフィックスjdbc /が問題を引き起こしているようです。

9
raoul.nair

場合によっては、サーバーと同じターゲットにないデータソースが原因です。データソースを使用しているサーバーは、同じターゲットに追加する必要があります。

14
bvhoang

私は同じ問題に直面しました。私のアプリケーションは、ローカルのOracle Sql Server(Oracle XE 11g)で実行されるOracleDBに接続しています。他の回答から、Weblogicキャッシュ/ tmp、/ cache、さらには/ logsを削除しても機能する可能性があることがわかりました。私の問題は、ローカルサービスのOracle ServiceXEが停止したことでした。私はそれがばかげていることを知っていますが、それは役立つかもしれません。したがって、次の3つのことを行う必要があります。
- キャッシュの消去;
-DBサーバーサービスが実行されているかどうかを確認します。
-WEBLOGICサーバーを再起動してみてください。上記のことは私のために働いた。

3
bogdan.rusu

ばかげているように聞こえるかもしれませんが、それが私に起こったので、私はそれを共有します。

Weblogic(少なくとも10.3.4)でデータソースを作成するときは、構成プロセス全体を実行することを忘れないでください(終了する前にFinishボタンが有効になっています)。

この最後のページでは、サーバーのデータソースを作成するだけでなく、activateすることができます。

DBが稼働しているかどうかを確認するには、サーバーのJNDIツリーを確認します。

2

Javaは、リソースのルートJNDI名前空間です。

だから多分あなたは必要です

dataSource = (javax.sql.DataSource) context.lookup("Java:jdbc/testDatasource");
1
Scary Wombat

PRODサーバーのセットアップ中に、アプリケーションでも同じ問題が発生しました。

Sol:web-logicコンソール(ノードまたはクラスター)のデータソースを対象としました。わたしにはできる。

ナビゲーション:コンソールの場合:[JDBC]> [JDBCデータソースの概要]> [DataSource1]に移動し、このJDBCデータソースをデプロイするサーバーまたはクラスターを選択します。

1
murali y

私はこの例外に遭遇しました:

javax.naming.NameNotFoundException: While trying to lookup 'jdbc.test_group_ir' didn't find subcontext 'jdbc'. Resolved ''; remaining name 'jdbc/test_group_ir'
    at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.Java:1224)

weblogicコンソールからデータベースへの接続をテストすると:

 Error weblogic.common.resourcepool.ResourceSystemException: Could not create connection for datasource 'test_group_ir_pool'. The returned message is: ORA-01017: invalid username/password;

パスワードが間違っているように見えましたが、これは必ずしもあなたの場合ではありません。最初の例外は一般的であり、さまざまな原因がある可能性があります。以前の回答ですでに説明されているものもあるので、私は私のものを追加しています。

パスワードを修正し、データベース接続をテストすると、次のようになります: enter image description here

0

私の場合、展開中にデータソースが破壊されていたことが原因でした。解決策は、destroyMethod = ""を追加することです

@Bean(name = "dataSource", destroyMethod="")
public DataSource dataSource() {

  JndiDataSourceLookup lookup = new JndiDataSourceLookup();
  return lookup.getDataSource(jndiName);

}
0
Kt Mack

私は同じ問題に直面しました、そしてそれは今修正されました:)

修正は、

        String DATASOURCE_CONTEXT = prop.getProperty("tcDataSourceContext");
        log("DATASOURCE_CONTEXT.."+DATASOURCE_CONTEXT);
        Properties env = new Properties( ); 
        env.put(Context.INITIAL_CONTEXT_FACTORY,                                                                                                "weblogic.jndi.WLInitialContextFactory"); 
        env.put(Context.PROVIDER_URL,"t3://abc.com:8001");
        Context initialContext = new InitialContext(env);
        DataSource datasource =        (DataSource)initialContext.lookup(DATASOURCE_CONTEXT);
        if (datasource != null) {
            conn = datasource.getConnection();
        }
        else{
            log("Failed to lookup datasource.");
        } 

1#。 abc.comは、WebLogicがデプロイされているサーバーのURLです。 2#。 8001は、WebLogic管理サーバーがリッスンしているポート番号です。

3#。以下が正しく構成されていることを確認してください。

間違ったもの:tcDataSourceContext = Java:comp/env/jdbc/datasourcename

正しいもの:tcDataSourceContext = jdbc/datasourcename

4#。また、WebLogicサーバーに移動し、/ Oracle/Middleware/wlserver_10.3/server/lib /に移動して、以下のコマンドを実行します。

コマンド:Java -jar wljarbuilder.jar -profile wlfullclient5

上記のコマンドは、すべてのjarがWebLogicサーバーの/ libフォルダー内にあるjarファイルを作成し、それをクライアントJavaコードビルドパスとserver/libフォルダーにも配置します。

お役に立てれば!ご不明な点がございましたら、お気軽にお問い合わせください。

0
KarthikPon

このエラーは、weblogicの2つのデータソースで同じJNDI名が定義されている場合にも発生します(データソースの異なるプロパティをテストするために2つ作成しました)。そのうちの1つを削除する必要があり、正常に機能しました。

0
vikas.kundz