java - Apache Ignite 在启动时抛出 Failed to deserialize object with given class loader (Client - Server)
问题描述
我正在尝试使用带有 ignite 的自定义事务管理器,但是它导致无法在启动时使用给定的类加载器反序列化对象。事务管理器工厂实现为
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 Yulian Oifa
解决方案
您的事务管理器工厂保留事务管理器实例,而不是在create()
远程节点上的方法中创建它。这就是它应该如何工作的方式。
可序列化对象的所有非瞬态字段也必须是可序列化的。
推荐阅读
- slack-api - 如何确定通过交互式消息向用户提示了哪个问题?
- excel - 将一个单元格与工作簿中的单元格区域进行比较,并将结果设置为另一个单元格区域
- css - 网格高度问题
- rest - REST API GET 不返回任何内容的正确响应状态是什么?
- r - 修改分配变量的正确程序
- java - 有人可以用Java解释这个方法吗:
- java - Spring Data JPA findAll 之间有表(PropertyReferenceException)
- php - PHP - 从数组中获取str
- java - 在 Java 中使用 F3 或 Ctrl+单击时,黄瓜功能文件场景步骤不会将我带到相应的步骤定义
- c - 当指针被分配一个地址时,地址的分配是否会更新地址本身?