我创建了一个数据源
@DataSourceDefinition
(
name="java:app/env/myDataSource",
className="org.apache.derby.jdbc.EmbeddedXADataSource40",
databaseName="myDB",
properties=
{
// Vendor properties for Derby Embedded JDBC driver:
"createDatabase=create",
"connectionAttributes=upgrade=true",
// Custom properties for WebSphere Application Server:
"connectionTimeout=60",
"dataStoreHelperClass=com.ibm.websphere.rsadapter.DerbyDataStoreHelper",
"validateNewConnection=true",
"validateNewConnectionRetryCount=5"
},
serverName=""
)
然后我将它放入启动代码中。
@Startup
@Singleton
public class StartUp {
@Resource(lookup = "java:app/env/myDataSource")
private javax.sql.DataSource dataSource;
...
当websphere服务器启动时,我得到以下错误和更多
[12/12/16 15:05:28:13 EST] 0000003b J2CXAResource W J2CA0061W: 创建XA连接和资源java.lang.Exception时出错: 参数xaResInfo缺少RA包装器,RA包装器不能 使用RA密钥解决。在 com.ibm.ejs.j2c.J2CXAResourceFactory $ 1.run(J2CXAResourceFactory.java:264) 在 com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:118) 在 com.ibm.ejs.j2c.J2CXAResourceFactory.getXAResource(J2CXAResourceFactory.java:199) 在 com.ibm.ws.Transaction.JTA.XARecoveryData.getXARminst(XARecoveryData.java:492) 在 com.ibm.ws.Transaction.JTA.XARecoveryData.recover(XARecoveryData.java:658) 在 com.ibm.tx.jta.impl.PartnerLogTable.recover(PartnerLogTable.java:432) 在 com.ibm.tx.jta.impl.RecoveryManager.resync(RecoveryManager.java:1543) 在 com.ibm.tx.jta.impl.RecoveryManager.performResync(RecoveryManager.java:2276) 在 com.ibm.ws.tx.jta.RecoveryManager.performResync(RecoveryManager.java:119) 在com.ibm.tx.jta.impl.RecoveryManager.run(RecoveryManager.java:2229) 在java.lang.Thread.run(Thread.java:798)
有什么想法?我认为嵌入式德比不需要J2C。
答案 0 :(得分:1)
正如aguibert所说,服务器正在尝试执行失败的XA恢复。这是一个链接,其中包含有关从恢复失败中恢复的信息:
如果记录的事务无关紧要,您只需停止应用程序服务器,导航到tranlog和partnerlog目录并删除两个目录的内容(log1& log2),然后重新启动应用服务器。
作为参考,除非您的配置更改,否则默认目录通常位于路径中:
C:的WebSphere \ AppServer的\型材\ AppSrv01 \ tranlog \ MyNode01Cell \ MyNode02 \ SERVER1 \交易\ partnerlog \
C:的WebSphere \ AppServer的\型材\ AppSrv01 \ tranlog \ MyNode01Cell \ MyNode02 \ SERVER1 \交易\ tranlog \