2012-05-11 7 views
0

私は、Oracleデータベース(11g Enterprise Edition)を含むラップトップ(Windows XP)上で実行されているすべてのJBossアプリケーションで作業しています。すべてがラップトップで正常に動作します。JBossアプリケーションはOracle 11gにXA接続できません

新しい高速マシン(Windows 7 Professionalを実行しています)とXA以外のJBossアプリケーションはうまく動作しますが、XA接続が必要なアプリケーションはOracleに接続できません。私はそれが私のローカルOracleデータベースを指しているときに接続するのに失敗したので、私は新しいOracleのインストールで問題があると確信しています。

私はGoogleの検索をたくさんやったと私は見つけることができる唯一の情報は、私はいくつかのXAビューを作成するためのスクリプト$ORACLE_HOME/rdbms/admin/xaview.sqlを実行する必要があると私は、ユーザーに次の権限を付与する必要があるということです。

GRANT SELECT ON sys.dba_pending_transactions TO <user>; 
GRANT SELECT ON sys.pending_trans$ TO <user>; 
GRANT SELECT ON sys.dba_2pc_pending TO <user>; 
GRANT EXECUTE ON sys.dbms_xa TO <user>; 

しかし、すべてのことをした後、私はまだアプリケーションを接続することができません。 これは私が取得しています例外です:

 
org.jboss.resource.JBossResourceException: Could not create connection; - nested throwable: (java.sql.SQLException: Io exception: 
The Network Adapter could not establish the connection)  at 
org.jboss.resource.adapter.jdbc.xa.XAManagedConnectionFactory.createManagedConnection(XAMangedConnectionFactory.java:144) at 
org.jboss.resource.connectionmanager.InternalManagedConnectionPool.createConnectionEventLisener(InternalManagedConnectionPool.java:577) at 
org.jboss.resource.connectionmanager.InternalManagedConnectionPool.getConnection(InternalManagedConnectionPool.java:262) at 
org.jboss.resource.connectionmanager.JBossManagedConnectionPool$BasePool.getConnection(JBossManagedConnectionPool.java:500) at 
org.jboss.resource.connectionmanager.BaseConnectionManager2.getManagedConnection(BaseConnectionManager2.java:347) at 
org.jboss.resource.connectionmanager.TxConnectionManager.getManagedConnection(TxConnectionManager.java:330) at 
org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnection(BaseConnectionManager2.java:402) at 
org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.allocateConnection(BaseConnectionManager2.java:849) at 
org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:90) at 
org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:46) at 
org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:84) 

私はこれは本当にプログラミングの問題ではないですけど、私は誰かが前にこれを見ていた期待していました。どんな助けでも大歓迎です。

+0

スタックトレースにoracle jdbcはありませんか? – Nicholas

+0

外部システムから接続するポートが開いているかどうかを確認し、シンプルなJDBCプログラムを使用して接続できるかどうかを確認します。 – Phani

答えて

1

LISTENER.ORAファイルとTNSNAMES.ORAファイルのホスト名とドメイン名の設定が一致していることを確認することで、この問題を解決できました。たとえば、HOST = localhostを持っていて、もう1つがHOST = myhost.xyz.comを持っていたら、XAでは問題が発生しますが、通常のJava JDBC接続では問題になります。私の理論では、XAスタックの一部は、TNSNAMES.ORAファイルを読み取るが、リスナー構成との不一致のために接続できないOCI接続を作成する必要がありました。通常のJava JDBC接続では、TNSNAMES.ORAファイルは、独自の構成設定でリスナーに直接接続するため、気にしません。

また、Enterprise Managerを動作させるために、xxx_localhost_yyyからxxx_myhost_yyyにいくつかのフォルダの名前を変更する必要がありました。

TOADを動作させるには64ビットクライアントでは動作しないため、32ビットクライアントをインストールしなければならず、HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ OracleのWindowsレジストリにORACLE_HOME変数を設定する必要がありました。どうやらWow6432Nodeは、32ビットアプリケーションだけが見る値を定義するためのWindowsレジストリの特別な場所です。

とにかく、私はそれがすべて働いていることを願っています。

0

まあ、このデータベースにSQLクライアントを使用して接続できますか?

関連する問題