Ich habe die Anforderung, ein CORBA-Legacy-System auf die neueste Java-Technologie zu migrieren. Das Hauptproblem, dem ich gegenüberstehe, ist die Bereitstellung langlebiger Transaktionen (db) im vorgeschlagenen System. Momentan behält der Client (Swing App) das CORBA-Dienstobjekt und führt mehrere db txn aus, bevor er tatsächlich alle txn festlegt/zurückrollt. Service-Schicht hält den Zustand des Verbindungsobjekts durch, um die Transaktion abzuschließen.Migration der CORBA-Anwendung auf moderne Java-Technologien (Rest/SOAP/EJB)
Ich wollte diesen Mechanismus in meinem neuen System (REST/WS) reproduzieren, so dass entweder Swing Client/Web (Future) in der gleichen Weise funktionieren kann.
zB:
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();
}
Nun wollte ich CORBA zu jeder modernen Technolgie wandern, aber immer noch ich bin im Allgemeinen eine Lösung dafür zu finden. (Das Problem ist, dass der Client keine Änderungen an der Dienstschicht oder der Db-Schicht vornehmen möchte), sie wollten nur CORBA entfernen.
paar Optionen für mich verfügbar sind
Migrate CORBA RMI -> damit den aktuellen System erforderlichen Änderungen sind minimal, aber das Transaktionsmanagement, Connection Pooling, müssen Haltezustand mich selbst zu tun.
CORBA zu Stateful EJB migrieren -> RMI vergleichen mehr Änderungen erforderlich, aber besser, da ich Container-Managed-Verbindungspooling verwenden kann, Zustand besser zu erhalten.
Migrate CORBA Stateful Webservice (SOAP) -> Mehr futuristisch, aber viele Änderungen erforderlich - Wie immer kann ich IDL zu WSDL konvertieren und übertragen den Anruf bis zur Umsetzung Schicht
Migrate CORBA REST -> Am meisten gewünscht, wenn möglich - aber die Zeit, die für die Migration benötigt wird, ist enorm, Codeänderungen würden von der UI-Schicht zur Service-Schicht erfordern.
Vielen Dank im Voraus
Nicht sicher, ob dies ein wertvoller Tipp für Sie, aber Sie können versuchen http://narayana.io Projekt zu untersuchen. Im Allgemeinen unterstützt es WS, REST und Compensation txn. Einige Beispiele, z.B. unter https://github.com/jbosstm/quickstart – chalda