簡體   English   中英

JBoss應用程序無法與Oracle 11g建立XA連接

[英]JBoss application cannot make XA connection to Oracle 11g

我一直在研究幾個JBoss應用程序,其中所有東西都在筆記本電腦(Windows XP)上運行,包括Oracle數據庫(11g企業版)。 在筆記本電腦上一切正常。

現在,我正在設置一台新的,更快的計算機(運行Windows 7 Professional),並且非XA JBoss應用程序可以正常運行,但是需要XA連接的應用程序無法連接到Oracle。 我很確定這是我安裝的新Oracle的問題,因為我可以將這些應用程序指向外部Oracle服務器並且它們可以工作,但是當將它們指向我的本地Oracle數據庫時它們無法連接。

我已經做了很多Google搜索,唯一能找到的信息是我需要運行腳本$ORACLE_HOME/rdbms/admin/xaview.sql來創建一些XA視圖,並且需要向用戶授予以下權限:

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)

我知道這並不是一個真正的編程問題,但我希望有人以前見過。 任何幫助將非常感激。

通過確保LISTENER.ORA文件和TNSNAMES.ORA文件中的主機名和域名設置匹配,我能夠解決此問題。 例如,如果一個主機的名稱為HOST = localhost,而另一個主機的名稱為HOST = myhost.xyz.com,則可能會對XA產生問題,但對於普通的Java JDBC連接則不會。 我的理論是XA堆棧的某些部分需要進行OCI連接以讀取TNSNAMES.ORA文件,但由於與偵聽器配置不匹配而無法連接。 普通的Java JDBC連接並不關心TNSNAMES.ORA文件,因為它們使用自己的配置設置直接連接到偵聽器。

我還必須將某些文件夾從xxx_localhost_yyy重命名為xxx_myhost_yyy才能使企業管理器正常工作。

要使TOAD正常工作,我必須安裝32位客戶端,因為它不能與64位客戶端一起使用,並且必須在Windows注冊表中的HKEY_LOCAL_MACHINE \\ SOFTWARE \\ Wow6432Node \\ Oracle下配置它的ORACLE_HOME變量。 顯然Wow6432Node是Windows注冊表中的一個特殊位置,用於定義只有32位應用程序才能看到的值。

無論如何,我都感到放心。

好吧,您可以使用sql客戶端連接到該數據庫嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM