Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java WebSphereApplicationServer中的XAException_Java_Oracle_Hibernate_Websphere_Websphere 8 - Fatal编程技术网

Java WebSphereApplicationServer中的XAException

Java WebSphereApplicationServer中的XAException,java,oracle,hibernate,websphere,websphere-8,Java,Oracle,Hibernate,Websphere,Websphere 8,我遇到了一个难题,希望有人能帮我解决。我在尝试部署到IBMWebSphereApplicationServer实例的一些代码时遇到了这个异常。有趣的是,它在本地工作(使用Atomikos for JTA在Tomcat上运行) 你知道这是怎么回事吗 错误消息 [9/8/13 12:33:53:726 EDT] 0000023e WSRdbXaResour E DSRA0304E: XAException occurred. XAException contents and details a

我遇到了一个难题,希望有人能帮我解决。我在尝试部署到IBMWebSphereApplicationServer实例的一些代码时遇到了这个异常。有趣的是,它在本地工作(使用Atomikos for JTA在Tomcat上运行)

你知道这是怎么回事吗

错误消息

[9/8/13 12:33:53:726 EDT] 0000023e WSRdbXaResour E   DSRA0304E:  XAException occurred. XAException contents and details are: 
The XA Error is            : -3
The XA Error message is    : A resource manager error has occured in the transaction branch.
The Oracle Error code is   : 2045
The Oracle Error message is: Internal XA Error
The cause is               : null.
[9/8/13 12:33:53:757 EDT] 0000023e WSRdbXaResour E   DSRA0302E:  XAException occurred.  Error code is: XAER_RMERR (-3).  Exception is: <null>
[9/8/13 12:33:53:726 EDT]0000023e WSRDBXAResource E DSRA0304E:发生异常。XAException的内容和详细信息如下:
XA错误为:-3
XA错误消息是:事务分支中发生了资源管理器错误。
Oracle错误代码为:2045
Oracle错误消息是:内部XA错误
原因是:空。
[9/8/13 12:33:53:757 EDT]0000023e WSRDBX资源E DSRA0302E:发生异常。错误代码为:XAER_RMERR(-3)。例外情况是:
系统详细信息

[9/8/13 12:33:53:634 EDT]     FFDC Exception:oracle.jdbc.xa.OracleXAException SourceId:com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl.start ProbeId:639 Reporter:com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl@12c29f91
oracle.jdbc.xa.OracleXAException
    at oracle.jdbc.xa.OracleXAResource.checkError(OracleXAResource.java:1110)
    at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:240)
    at com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl.start(WSRdbXaResourceImpl.java:1536)
    at com.ibm.ejs.j2c.XATransactionWrapper.start(XATransactionWrapper.java:1478)
    at com.ibm.ws.Transaction.JTA.JTAResourceBase.start(JTAResourceBase.java:153)
    at com.ibm.tx.jta.impl.RegisteredResources.startRes(RegisteredResources.java:1001)
    at com.ibm.ws.tx.jta.RegisteredResources.enlistResource(RegisteredResources.java:1114)
    at com.ibm.ws.tx.jta.TransactionImpl.enlistResource(TransactionImpl.java:2186)
    at com.ibm.tx.jta.embeddable.impl.EmbeddableTranManagerSet.enlist(EmbeddableTranManagerSet.java:154)
    at com.ibm.ejs.j2c.XATransactionWrapper.enlist(XATransactionWrapper.java:732)
    at com.ibm.ejs.j2c.ConnectionManager.lazyEnlist(ConnectionManager.java:2678)
    at com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl.lazyEnlist(WSRdbManagedConnectionImpl.java:2591)
    at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.beginTransactionIfNecessary(WSJdbcConnection.java:740)
    at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.prepareStatement(WSJdbcConnection.java:2789)
    at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.prepareStatement(WSJdbcConnection.java:2742)
    at sun.reflect.GeneratedMethodAccessor112.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
    at java.lang.reflect.Method.invoke(Method.java:611)
    at org.hibernate.engine.jdbc.internal.proxy.ConnectionProxyHandler.continueInvocation(ConnectionProxyHandler.java:138)
    at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)
    at $Proxy139.prepareStatement(Unknown Source)
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$5.doPrepare(StatementPreparerImpl.java:147)
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:166)
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareQueryStatement(StatementPreparerImpl.java:145)
    at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1854)
    at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1831)
    at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1811)
    at org.hibernate.loader.Loader.doQuery(Loader.java:899)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341)
    at org.hibernate.loader.Loader.doList(Loader.java:2516)
    at org.hibernate.loader.Loader.doList(Loader.java:2502)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2332)
    at org.hibernate.loader.Loader.list(Loader.java:2327)
    at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:355)
    at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:195)
    at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1247)
    at org.hibernate.internal.QueryImpl.list(QueryImpl.java:101)
    at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:264)
    at org.hibernate.ejb.criteria.CriteriaQueryCompiler$3.getResultList(CriteriaQueryCompiler.java:254)
    at ca.statcan.icos.admin.service.WorkAssignmentBusinessService.getOperationalSupervisors(WorkAssignmentBusinessService.java:180)
<snip>
  • WAS版本:8.5.0.0
  • Oracle驱动程序版本:11.2.0.3.0
  • Oracle数据库版本:11.2.0.3.0
  • 操作系统:AIX6.1ppc64
  • Spring版本:3.2.3
  • 休眠版本:4.1.9
  • Javassist版本:3.17.1-GA
堆栈跟踪(在第一次调用我的服务时被截断)

[9/8/13 12:33:53:634 EDT]FFDC异常:oracle.jdbc.xa.oraclexaexException SourceId:com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl.start ProbeId:639 Reporter:com.ibm.ws.rsadapter.spi。WSRdbXaResourceImpl@12c29f91
oracle.jdbc.xa.oraclexException
在oracle.jdbc.xa.oraclexarecource.checkError(oraclexarecource.java:1110)
位于oracle.jdbc.xa.client.oraclexarecource.start(oraclexarecource.java:240)
位于com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl.start(WSRdbXaResourceImpl.java:1536)
位于com.ibm.ejs.j2c.XATransactionWrapper.start(XATransactionWrapper.java:1478)
位于com.ibm.ws.Transaction.JTA.JTAResourceBase.start(JTAResourceBase.java:153)
在com.ibm.tx.jta.impl.RegisteredResources.startRes(RegisteredResources.java:1001)
在com.ibm.ws.tx.jta.RegisteredResources.enstresource(RegisteredResources.java:1114)上
在com.ibm.ws.tx.jta.TransactionImpl.EnsletResource(TransactionImpl.java:2186)上
在com.ibm.tx.jta.embeddeble.impl.embeddedabletranmanagerset.inclist(embeddedabletranmanagerset.java:154)上
位于com.ibm.ejs.j2c.XATransactionWrapper.enlist(XATransactionWrapper.java:732)
在com.ibm.ejs.j2c.ConnectionManager.lazynster(ConnectionManager.java:2678)上
位于com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl.lazyEnlist(WSRdbManagedConnectionImpl.java:2591)
位于com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.BeginTransactionfNecessary(WSJdbcConnection.java:740)
在com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.prepareStatement(WSJdbcConnection.java:2789)
在com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.prepareStatement(WSJdbcConnection.java:2742)
位于sun.reflect.GeneratedMethodAccessor112.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)中
位于java.lang.reflect.Method.invoke(Method.java:611)
位于org.hibernate.engine.jdbc.internal.proxy.ConnectionProxyHandler.continueInvocation(ConnectionProxyHandler.java:138)
位于org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)
价格为$Proxy139.prepareStatement(来源不明)
位于org.hibernate.engine.jdbc.internal.StatementPrepareImpl$5.doPrepare(statementPrepareImpl.java:147)
位于org.hibernate.engine.jdbc.internal.StatementPrepareImpl$StatementPreparationTemplate.prepareStatement(statementPrepareImpl.java:166)
位于org.hibernate.engine.jdbc.internal.statementPrepareImpl.prepareQueryStatement(statementPrepareImpl.java:145)
位于org.hibernate.loader.loader.prepareQueryStatement(loader.java:1854)
位于org.hibernate.loader.loader.executeQueryStatement(loader.java:1831)
位于org.hibernate.loader.loader.executeQueryStatement(loader.java:1811)
位于org.hibernate.loader.loader.doQuery(loader.java:899)
在org.hibernate.loader.loader.doQueryAndInitializeNonLazyCollections(loader.java:341)上
位于org.hibernate.loader.loader.doList(loader.java:2516)
位于org.hibernate.loader.loader.doList(loader.java:2502)
位于org.hibernate.loader.loader.listIgnoreQueryCache(loader.java:2332)
位于org.hibernate.loader.loader.list(loader.java:2327)
位于org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490)
位于org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:355)
位于org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:195)
位于org.hibernate.internal.SessionImpl.list(SessionImpl.java:1247)
位于org.hibernate.internal.QueryImpl.list(QueryImpl.java:101)
位于org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:264)
位于org.hibernate.ejb.CriteriaQueryCompiler$3.getResultList(CriteriaQueryCompiler.java:254)
位于ca.statcan.icos.admin.service.WorkAssignmentBusinessService.getOperationalSupervisors(WorkAssignmentBusinessService.java:180)

提前感谢

在大多数情况下,当您与Oracle和WAS XA数据源有交易时,IBM支持人员建议向Oracle用户授予特殊权限

这需要:

 grant select on pending_trans$ to <user>; 
 grant select on dba_2pc_pending to <user>;
 grant select on dba_pending_transactions to <user>;
 grant execute on dbms_system to <user>;  (If using Oracle 10.2.0.3 or lower JDBC driver)
 grant execute on dbms_xa to <user>; (If using Oracle 10.2.0.4 or higher JDBC driver)
将待决交易的选择权授予;
授予dba_2pc_上的select待定;
将dba_未决_事务上的select授予;
授予在dbms_系统上执行的权限;(如果使用Oracle 10.2.0.3或更低版本的JDBC驱动程序)
将在dbms_xa上执行的权限授予;(如果使用Oracle 10.2.0.4或更高版本的JDBC驱动程序)

事实证明,问题根本不在于WebSphere或Oracle,而在于我们的配置。我们使用SpringAOP进行事务处理。在部署到WebSphere之前,我们还合并了几个web项目。在合并过程中,我们得到了几个(确切地说是9个)applicationContext.xml文件,用于设置AOP。因此,对于一个事务中包装的方法的每次调用,我们有9个事务c