Java 嵌入式derby从J2C错误开始
我创建一个数据源作为Java 嵌入式derby从J2C错误开始,java,websphere,derby,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: "createDataba
@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;
...
当websphereserver启动时,我得到了以下错误以及更多信息
[12/12/16 15:05:28:136东部时间]000000 3B J2CXAResource W J2CA0061W:
创建XA连接和资源java.lang.Exception时出错:
参数xaResInfo缺少RA包装,并且无法创建RA包装
使用RA密钥解决。在
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.getxarmist(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)
运行(Thread.java:798)
有什么想法吗?我认为嵌入式derby不需要J2C。正如aguibert所说,服务器正在尝试执行XA恢复,但失败了。以下是有关从失败恢复中恢复的信息的链接: 如果记录的事务不重要,您只需停止应用程序服务器,导航到tranlog和partnerlog目录并删除两个目录的内容(log1和log2),然后重新启动应用程序服务器 作为参考,除非根据您的配置进行更改,否则默认目录通常位于以下路径中: C:WebSphere\AppServer\profiles\AppSrv01\tranlog\MyNode01Cell\MyNode02\server1\transaction\partnerlog\ C:WebSphere\AppServer\profiles\AppSrv01\tranlog\MyNode01Cell\MyNode02\server1\transaction\tranlog\
正如aguibert所说,服务器正在尝试执行XA恢复,但失败了。以下是有关从失败恢复中恢复的信息的链接: 如果记录的事务不重要,您只需停止应用程序服务器,导航到tranlog和partnerlog目录并删除两个目录的内容(log1和log2),然后重新启动应用程序服务器 作为参考,除非根据您的配置进行更改,否则默认目录通常位于以下路径中: C:WebSphere\AppServer\profiles\AppSrv01\tranlog\MyNode01Cell\MyNode02\server1\transaction\partnerlog\ C:WebSphere\AppServer\profiles\AppSrv01\tranlog\MyNode01Cell\MyNode02\server1\transaction\tranlog\
这是传统还是自由?我在Liberty上试用了这个精确的设置,效果很好。您想要XA功能吗?如果没有,您可以简单地降级到非XA数据源,例如:
className=“org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource40”
@aguibert这是传统的。它应该像以前那样工作。但突然间,当我今天启动服务器时,它给出了错误。我想知道发生了什么事?是的,我需要xa。我不确定到底发生了什么,但服务器正在尝试执行xa恢复,但失败了。您正在运行的版本是什么?我发现了您看到的确切错误消息,但它似乎是在was 7.0(大约2011年)中修复的。我的版本是WebSphere Platform 8.5.5.10。这是WebSphere traditional还是Liberty?我在Liberty上试用了这个精确的设置,效果很好。您想要XA功能吗?如果没有,您可以简单地降级到非XA数据源,例如:className=“org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource40”
@aguibert这是传统的。它应该像以前那样工作。但突然间,当我今天启动服务器时,它给出了错误。我想知道发生了什么事?是的,我需要xa。我不确定到底发生了什么,但服务器正在尝试执行xa恢复,但失败了。您正在运行的版本是什么?我发现了您看到的确切错误消息,但它似乎是在was 7.0(大约2011年)中修复的。我的版本是WebSphere Platform 8.5.5.10,您确定了它。这可能是因为我没有提前正确关闭eclipse。那肯定会成功的。我以前丢失过工作区,因为我没有正确关闭eclipse。你搞定了。这可能是因为我没有提前正确关闭eclipse。那肯定会成功的。我以前丢失过工作区,因为我没有正确关闭eclipse。