Apache Ignite 在启动时抛出无法使用给定的 class 加载程序反序列化对象(客户端 - 服务器)
Apache Ignite throws Failed to deserialize object with given class loader on startup ( Client - Server )
我正在尝试将自定义事务管理器与 ignite 结合使用,但它会导致在启动时无法使用给定的 class 加载程序反序列化对象。
事务管理器工厂实现为
public class TransactionManagerFactory implements Factory<TransactionManager> {
private static final long serialVersionUID = 1L;
private TransactionManager txMgr;
public TransactionManagerFactory(TransactionManager txMgr) {
this.txMgr=txMgr;
}
@Override
public TransactionManager create() {
return this.txMgr;
}
}
工厂附加到客户端配置如下:
TransactionConfiguration txConfiguration=new TransactionConfiguration();
txConfiguration.setDeadlockTimeout(acquireTimeout);
txConfiguration.setDefaultTxIsolation(TransactionIsolation.READ_COMMITTED);
txConfiguration.setDefaultTxConcurrency(TransactionConcurrency.PESSIMISTIC);
txConfiguration.setTxManagerFactory(new TransactionManagerFactory(txMgr));
this.clientConfig.setTransactionConfiguration(txConfiguration);
错误表明传递给工厂的事务管理器本身不可序列化:
原因:java.io.NotSerializableException:org.infinispan.transaction.tm.EmbeddedBaseTransactionManager
但是事务管理器本身不应该是可序列化的。
我们如何通过现有的事务管理器来点燃客户端?
BR
尤连奥法
您的事务管理器工厂持有事务管理器实例,而不是在远程节点上的 create()
方法中创建它。它应该是这样工作的。
可序列化对象的所有非瞬态字段也必须是可序列化的。
我正在尝试将自定义事务管理器与 ignite 结合使用,但它会导致在启动时无法使用给定的 class 加载程序反序列化对象。 事务管理器工厂实现为
public class TransactionManagerFactory implements Factory<TransactionManager> {
private static final long serialVersionUID = 1L;
private TransactionManager txMgr;
public TransactionManagerFactory(TransactionManager txMgr) {
this.txMgr=txMgr;
}
@Override
public TransactionManager create() {
return this.txMgr;
}
}
工厂附加到客户端配置如下:
TransactionConfiguration txConfiguration=new TransactionConfiguration();
txConfiguration.setDeadlockTimeout(acquireTimeout);
txConfiguration.setDefaultTxIsolation(TransactionIsolation.READ_COMMITTED);
txConfiguration.setDefaultTxConcurrency(TransactionConcurrency.PESSIMISTIC);
txConfiguration.setTxManagerFactory(new TransactionManagerFactory(txMgr));
this.clientConfig.setTransactionConfiguration(txConfiguration);
错误表明传递给工厂的事务管理器本身不可序列化: 原因:java.io.NotSerializableException:org.infinispan.transaction.tm.EmbeddedBaseTransactionManager
但是事务管理器本身不应该是可序列化的。 我们如何通过现有的事务管理器来点燃客户端?
BR 尤连奥法
您的事务管理器工厂持有事务管理器实例,而不是在远程节点上的 create()
方法中创建它。它应该是这样工作的。
可序列化对象的所有非瞬态字段也必须是可序列化的。