【发布时间】:2016-09-05 06:09:39
【问题描述】:
我需要将旧版 CORBA 系统迁移到任何最新的 Java 技术。我面临的主要问题是在提议的系统中提供长寿命事务(db)。目前,客户端(Swing App)保留 CORBA 服务对象并在实际提交/回滚所有 txn 之前执行多个 db txn。服务层保持连接对象的状态通过out来完成事务。
我想在我的新系统 (REST/WS) 中重现这种机制,以便 Swing 客户端/Web(future) 都可以正常工作。
例如:
try {
service1.updateXXData(); // --> insert in to table XX
service2.updateUUData() //--> insert in to table UU
service1.updateZZData(); // --> insert in to table ZZ
service2.updateAAData(); // --> insert in to table AA
service1.commit(); // con.commmit();
service2.commit(); // con.commmit();
}
exception(){
service1.rollback(); // con.rollback();
service2.rollback(); // con.rollback();
}
现在我想将 CORBA 迁移到任何现代技术,但我仍然在寻找解决方案。 (担心的是客户不想对服务层或数据库层进行任何更改),他们只是想删除 CORBA。
可供我选择的几个选项是
将 CORBA 迁移到 RMI --> 使当前系统所需的更改最小化,但事务管理、连接池、保持状态需要我自己做。
将 CORBA 迁移到有状态 EJB --> 比较 RMI 需要更多更改,但更好,因为我可以使用容器管理的连接池,以更好的方式维护状态。
将 CORBA 迁移到有状态 Web 服务 (SOAP) --> 更具未来感,但需要进行大量更改 - 如何将 IDL 转换为 WSDL,并将调用委托给实现层
将 CORBA 迁移到 REST --> 如果可能的话,这是最理想的 - 但是迁移所需的时间量很大,代码更改需要从 UI 层到服务层。
非常感谢您
【问题讨论】:
-
不确定这是否对您有用,但您可以尝试调查narayana.io 项目。一般来说,它支持 WS、REST 和 Compensation txn。一些例子,例如在github.com/jbosstm/quickstart
标签: java ejb rmi corba ws-transaction