我一直在开发几个 JBoss 应用程序,我的笔记本电脑 (Windows XP) 上运行着所有东西,包括 Oracle 数据库(11g 企业版)。在笔记本电脑上一切正常。
现在我正在设置一台速度更快的新机器(运行 Windows 7 Professional),非 XA JBoss 应用程序运行良好,但需要 XA 连接的应用程序无法连接到 Oracle。我很确定这是我的新 Oracle 安装的问题,因为我可以将应用程序指向外部 Oracle 服务器并且它们可以工作,但是当它们指向我的本地 Oracle 数据库时它们无法连接。
我做了很多谷歌搜索,我能找到的唯一信息是我需要运行脚本$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:无法创建连接;- 嵌套的 throwable: (java.sql.SQLException: Io 异常: 网络适配器无法建立连接)在 org.jboss.resource.adapter.jdbc.xa.XAManagedConnectionFactory.createManagedConnection(XAMangedConnectionFactory.java:144) 在 org.jboss.resource.connectionmanager.InternalManagedConnectionPool.createConnectionEventLisener(InternalManagedConnectionPool.java:577) 在 org.jboss.resource.connectionmanager.InternalManagedConnectionPool.getConnection(InternalManagedConnectionPool.java:262) 在 org.jboss.resource.connectionmanager.JBossManagedConnectionPool$BasePool.getConnection(JBossManagedConnectionPool.java:500) 在 org.jboss.resource.connectionmanager.BaseConnectionManager2.getManagedConnection(BaseConnectionManager2.java:347) 在 org.jboss.resource.connectionmanager.TxConnectionManager.getManagedConnection(TxConnectionManager.java:330) 在 org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnection(BaseConnectionManager2.java:402) 在 org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.allocateConnection(BaseConnectionManager2.java:849) 在 org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:90) 在 org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:46) 在 org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:84)
我知道这不是一个真正的编程问题,但我希望有人以前见过这个。任何帮助将非常感激。