嵌入式德比以J2C错误开始

时间:2016-12-12 21:50:56

标签: java websphere derby

我创建了一个数据源

    @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。

1 个答案:

答案 0 :(得分:1)

正如aguibert所说,服务器正在尝试执行失败的XA恢复。这是一个链接,其中包含有关从恢复失败中恢复的信息:

https://www.ibm.com/developerworks/community/blogs/aimsupport/entry/recovering_from_failed_transaction_recovery_websphere_application_server?lang=en

  

如果记录的事务无关紧要,您只需停止应用程序服务器,导航到tranlog和partnerlog目录并删除两个目录的内容(log1& log2),然后重新启动应用服务器。

     

作为参考,除非您的配置更改,否则默认目录通常位于路径中:

     

C:的WebSphere \ AppServer的\型材\ AppSrv01 \ tranlog \ MyNode01Cell \ MyNode02 \ SERVER1 \交易\ partnerlog \

     

C:的WebSphere \ AppServer的\型材\ AppSrv01 \ tranlog \ MyNode01Cell \ MyNode02 \ SERVER1 \交易\ tranlog \