私は、デバッグしているJBossサーバー上で動作する他の人が書いたJavaコードを持っています。それは、このコードの1行でjavax.sql.DataSource
を取得しています。しかしInitialContext.lookupで取得されたデータソースの場所を検索しますか?
DataSource ds = new InitialContext().lookup("java:/jdbc/WPDS");
、彼らは次の行にds.getConnection()
を使用し、これは、ログに表示:
...
のjavaxを.resource.ResourceException:JDBCの管理接続を取得することができません/ WPDS
...
原因:org.jboss.resource.JBossResourceException:接続を作成できませんでした。 - ネストされたスロー可能:(java.sql.SQLExceptionの:ORA-01017:無効なユーザー名/パスワード、拒否されたため、ログオン)
私は周りを見回したとoracle-xa-ds.xml
という名前のファイルを見つけました。それには次のものが含まれます:
<datasources>
<xa-datasource>
<jndi-name>jdbc/WPDS</jndi-name>
<!-- uncomment to enable interleaving <interleaving/> -->
<isSameRM-override-value>false</isSameRM-override-value>
<xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
<xa-datasource-property name="URL">jdbc:oracle:thin:@hostname.hidden.com:1621:HIDE</xa-datasource-property>
<xa-datasource-property name="User">hidden</xa-datasource-property>
<xa-datasource-property name="Password">hidden</xa-datasource-property>
<!-- Uses the pingDatabase method to check a connection is still valid before handing it out from the pool -->
<valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker</valid-connection-checker-class-name>
<!-- Checks the Oracle error codes and messages for fatal errors -->
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
<!-- Oracles XA datasource cannot reuse a connection outside a transaction once enlisted in a global transaction and vice-versa -->
<no-tx-separate-pools/>
<max-pool-size>50</max-pool-size>
<!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
<metadata>
<type-mapping>Oracle9i</type-mapping>
</metadata>
</xa-datasource>
<mbean code="org.jboss.resource.adapter.jdbc.vendor.OracleXAExceptionFormatter"
name="jboss.jca:service=OracleXAExceptionFormatter">
<depends optional-attribute-name="TransactionManagerService">jboss:service=TransactionManager</depends>
</mbean>
</datasources>
これらの設定がすべて正しいことを確認しました。このファイルで指定されたホスト名、ポート、SID、ユーザー名、およびパスワードを使用してデータベースに接続できます。
私は多分それはどこか別の場所からDataSource
をロードだと思われるが、私はその理論を確認することができるか分からない(とそれが本当ならば、それは実際にそれを取得しています場合には、どのように私は見つけるのでしょうか?)いくつかはありますJNDIの種類のログを有効にすることもできますし、何らかのユーザ名/パスワードを使用しようとしていることを何らかの理由で教えてもらえます(ファイル内のものを使用しているかどうか確認できます)
を[管理コンソール](https://access.redhat.com/documentation/en-US/Red_Hat_JBoss_Data_Virtualization/6/html/Administration_and_Configuration_Guide/chap-JDBC_Data_Sources.html#Create_an_XA_Datasource_with_the_Management_Interfaces)を確認します。 –
@ElliottFrisch - タイプ 'XA Datasource'とステータス' UP'を持つ 'jdbc/WPDS'という名前のデータソースを表示します。このファイルから読み込み中であることを確認することができます。これは、最初に「使用可能な接続数」が50だったからです(元の投稿のファイルのように)。ファイルを60に変更してサーバを再起動したとき、それに応じて続いた。 – ArtOfWarfare
@ravthiru - 私はあなたが今話していることに慣れていない...説明するために気をつけますか?セキュリティコンテキストとは何ですか?どのユーザー名/パスワードを使用しているのか、どのように変更できますか? – ArtOfWarfare