EJB/WebSphere-Legacy-Lernprojekt und seine Migration auf Spring Boot/Jakarta EE/OpenShift - komplette Doku als navigierbare HTML-Uebersicht.
Bevor es um EJB im Detail geht, lohnt sich der Blick auf die Ebene darueber: Java EE selbst. EJB, JMS, JAX-WS und JPA sind keine unabhaengigen Bibliotheken, die man…
Session Beans sind der Kern der Geschaeftslogik in diesem Projekt. Es gibt drei Spielarten, alle in novaris-policy-core vertreten - jede loest ein anderes Problem.
Beispiel: ClaimIntakeMDB.
Dieses Projekt zeigt beide Modelle nebeneinander, absichtlich an zwei verschiedenen Beans: PolicyManagementBean (CMT, der EJB-Normalfall) und PremiumCalculationBean…
Beispiel: PolicyRenewalTimerBean.
Beispiel: AuditInterceptor, gebunden an PolicyManagementBean und PremiumCalculationBean.
Das ist einer der am haeufigsten missverstandenen Teile des EJB-Modells - und einer der Gruende, warum "EJB verstehen" oft schwerer faellt, als es sein muesste. Dieses…
JNDI (Java Naming and Directory Interface) ist der Mechanismus, ueber den Java-EE-Komponenten Ressourcen (Datenquellen, JMS-Ziele, andere EJBs) per Namen statt per…
Dieses Dokument ist bewusst eigenstaendig und langsamer als docs/10-ejb-konzepte/07-jndi-und-packaging.md - dort wird JNDI vorausgesetzt und im Zusammenspiel mit…
Beispiel: novaris-billing-soap/src/main/resources/wsdl/BillingService.wsdl.
Beispiel: BillingServiceEndpoint in novaris-billing-soap.
Beispiel: BillingRegistrationFault + BillingFaultDetail in novaris-common-legacy, geworfen von BillingServiceEndpoint, behandelt in BillingIntegrationBean.
Bevor es um die konkreten Muster (Request/Reply, Publish/Subscribe) geht, lohnt sich die Grundunterscheidung, auf der alles andere aufbaut.
Beispiele: ClaimSubmissionClient (novaris-claims-mq, Sender/Empfaenger der Antwort), ClaimIntakeMDB.sendReply(...) (novaris-policy-core, Empfaenger der Anfrage/Sender…
Beispiele: PolicyEventPublisherBean (Publisher), PolicyDocumentGenerationMDB + CustomerNotificationMDB (zwei unabhaengige Abonnenten), beide novaris-notification-jms.
Beispiel: IbmMqRequestReplyIT (novaris-integration-tests) gegenueber den ActiveMQ- basierten Tests aus Phase 1-3 (ClaimSubmissionRequestReplyTest…
Die duale Persistenz (Oracle fuer den aktiven Policenbestand, DB2 fuer die Alt-Vertraege) ist bereits in Phase 1 code-seitig erklaert (Policy, LegacyContractDao…
Anders als Oracle (OraclePersistenceIT) und IBM MQ (IbmMqRequestReplyIT) wird DB2 in diesem Projekt nicht gegen einen tatsaechlich laufenden Container verifiziert. Diese…
Beispiel: OraclePersistenceIT (novaris-integration-tests).
Beispiel: NovarisLegacyLoginModule + LegacyUserDirectory (novaris-policy-web-legacy-jsf).
Beispiel: novaris-policy-ear (bundelt novaris-policy-core + novaris-policy-web-legacy-jsf).
Modul: novaris-policy-ear, Maven-Profil liberty-verify (siehe dessen pom.xml-Kommentare fuer alle Details), Konfiguration in src/main/liberty/config/server.xml.
Dieses Kapitel beschreibt, wie eine Aenderung an der Novaris-Landschaft von der Entwicklung bis in den (simulierten) Produktivbetrieb wandert - unabhaengig davon…
Wichtiger Hinweis vorab: Fuer dieses Lernprojekt stand kein echter Jenkins-Server zur Verfuegung - das Jenkinsfile selbst konnte deshalb nicht gegen einen echten Jenkins…
Siehe 01-vier-stages-ueberblick.md fuer die Begruendung, warum LOCAL bewusst kein Jenkins-Job ist. Dieses Kapitel beschreibt, wie die LOCAL-Stage stattdessen aussieht …
novaris-legacy-parent wurde bewusst zuerst vollstaendig als "Vorher"-Zustand gebaut - ein authentisches WebSphere/EJB-Altsystem mit allen typischen Eigenschaften…
Der urspruengliche Wunsch war "Java 11 und Spring Boot und Jakarta EE weg von Java EE" - alles gleichzeitig. Das geht technisch nicht:
Diese Tabelle ist der Kern der Migrationsdoku - fuer jedes EJB-/Java-EE-Konzept aus docs/10-ejb-konzepte/ steht hier die konkrete Entsprechung im modernen Reactor, mit…
Oracle und DB2 bleiben laut 00-uebersicht.md bewusst unveraendert - reine Infrastruktur, kein Grund fuer einen Applikationsumbau. Bei IBM MQ ist die Entscheidung eine…
Spiegelt den bewaehrten Phasenrhythmus des Legacy-Aufbaus (Phase 0-5, je 2-3 thematische Commits pro Phase).
Dokumentiert den tatsaechlich verwendeten git/gh-Workflow - vom lokalen Repo bis zum gemergten Pull Request. Nachtraeglich erstellt (offener Punkt aus der…
"Migration" wird in diesem Projekt oft als Sammelbegriff verwendet, verdeckt dabei aber drei fachlich sehr unterschiedliche Dinge. Diese Doku legt die drei Kategorien…
Letzter Schritt der Migration, wie von Anfang an vom Nutzer verlangt ("zuletzt ... migrieren"). Ersetzt WebSphere-Liberty-EAR-Deployment und Liberty-server.xml durch…
Erste von fuenf Erweiterungen aus M6 - Nachruestung eines in M2 bewusst offen gelassenen Punkts: PolicyApplicationDraft (Ersatz fuer den zustandsbehafteten…
Zweite und dritte Erweiterung aus M6 - beide schliessen einen in fruehen M6-Vorgaenger-Phasen bewusst offen gelassenen Punkt, deshalb hier gemeinsam dokumentiert.
Vierte Erweiterung aus M6. Ein Geschaeftsvorfall (z. B. eine Schadenmeldung) durchlaeuft in der modernen Landschaft mehrere Prozessgrenzen: REST-Aufruf in…
Fuenfte und letzte Erweiterung aus M6. Loest den in SecurityConfigs eigenem Javadoc (aus M4) bereits benannten "naheliegenden naechsten Ausbauschritt" ein: HTTP Basic +…
Nachtraeglich behobener, in 10-observability-tracing.md urspruenglich nur als offener Nebenbefund dokumentierter Bug - plus ein zweiter, strukturell identischer Bug, der…
Loest den seit M0 in 02-component-mapping.md als spaeteres Ziel benannten, aber nie gebauten Punkt ein: ein eigenstaendiges Frontend fuer novaris-policy-core-modern…
Nicht live erreichbare Infrastruktur wird bewusst als „vorbereitet“ und nicht als „verifiziert“ bezeichnet.
Das Projekt verwendet für lokale Infrastruktur die projektübergreifende Umgebung unter ../../shared/enterprise-infrastructure/. Dort laufen gemeinsame Dienste nur einmal…
Die sinnvollste naechste Reihenfolge nach M0-M7 ist:
Beim Arbeiten am Verbesserungsplan kann es passieren, dass mehrere fachliche Themen versehentlich in einem Sammelcommit landen. Das ist kein Grund, die Projektdateien zu…
Podman ist die Container-Runtime fuer die lokale Entwicklung und passt gut zur OpenShift-Zielplattform. Die Bedienung ist Docker sehr aehnlich, Podman arbeitet jedoch…
Dieser Text ist eine allgemeine Grundlagen-Einfuehrung in Podman, unabhaengig vom konkreten Projekt. Wer bereits Docker kennt, findet fast alles wieder; wer noch nie mit…
Das Abrechnungs-/Billing-Partnersystem der Novaris-Landschaft - ein klassischer JAX-WS- SOAP-Service, den novaris-policy-core als Client anspricht (siehe…
Das Schaden-Teilsystem der Novaris-Landschaft - sendet Schadensmeldungen per klassischem JMS-Request/Reply an ClaimIntakeMDB (novaris-policy-core) und wartet synchron…
Geteilte Bausteine, die von mehreren Novaris-Teilsystemen verwendet werden - bewusst als eigenes, sehr kleines Modul gehalten, damit z.B. novaris-billing-soap (Server)…
Verifiziert die Novaris-Landschaft gegen echte Infrastruktur statt Ersatz-Implementierungen:
Zwei unabhaengige Abonnenten des Policy-Events-Topics - zeigt JMS Publish/Subscribe im Kontrast zum Point-to-Point-Request/Reply in novaris-claims-mq. Siehe…
Der EJB-Kern der Policenverwaltung - das zentrale Modul dieses Projekts und der Ort, an dem die meisten EJB-Konzepte konkret zu sehen sind (siehe docs/10-ejb-konzepte/).
Buendelt novaris-policy-core (EJB-Modul) und novaris-policy-web-legacy-jsf (Web-Modul) zu der einen deploybaren Einheit, die WebSphere tatsaechlich als Anwendung…
Das "Novaris-Kundenportal" - JSF/Facelets-Weboberflaeche fuer Policenuebersicht und Antragserfassung, mit klassischem WebSphere-Legacy-Auth. Bewusst mit dem Suffix…
Migrationsziel des Novaris-Lernprojekts: dieselbe fachliche Policen-/Schadenlandschaft wie novaris-legacy-parent, neu gebaut auf Spring Boot statt EJB/WebSphere, auf…
novaris-realm.json enthält nur Realm-, Client- und Rollenstruktur. Es enthält bewusst keine Passwörter und ist nicht als Produktionskonfiguration gedacht.
Spring-Boot-Gegenstueck zu novaris-legacy-parent/novaris-claims-mq. Sendet Schadensmeldungen per Kafka-Request/Reply an ClaimIntakeKafkaListener…
Geteilte Bausteine des modernen Reactors - das funktionale Gegenstueck zu novaris-legacy-parent/novaris-common-legacy.
Spring-Boot-Gegenstueck zu novaris-legacy-parent/novaris-notification-jms. Zwei unabhaengige Abonnenten desselben Kafka-Topics - zeigt Publish/Subscribe im Kontrast zum…
Spring-Boot-Gegenstueck zu novaris-legacy-parent/novaris-policy-core. Baut dieselbe Fachlogik (Policenverwaltung, Praemienberechnung, Audit, Verlaengerungspruefung…
React/TypeScript-SPA fuer novaris-policy-core-modern - Umsetzung der zuvor nur als Ziel benannten novaris-policy-web-modern-spa-Luecke (siehe…
Letzter Schritt der Migration - Deployment des modernen Reactors auf OpenShift, wie von Anfang an geplant ("zuletzt ... auf OpenShift migrieren"). Ersetzt das…