Ich versuche, in einer Java EE-Anwendung, die auf Glassfish implementiert ist, zwei Persistenzeinheiten innerhalb derselben Transaktion zu verwenden.
Die 2 Persistenzeinheiten sind wie folgt in persistence.xml definiert:
%Vor%Diese Persistenzeinheiten entsprechen den JDBC-Ressourcen und Verbindungspools, die ich in Glassfish wie folgt definiert habe (schließen Sie hier eine ein, da beide identisch sind mit Ausnahme von Namen und Datenbankverbindungsinformationen):
%Vor%Es gibt drei Stateless Session-Beans, LimsServiceBean, AnalysisServiceBean und AnalysisDataTransformationServiceBean.
Hier sind die relevanten Snippets von LimsServiceBean:
%Vor%Von AnalysisServiceBean:
%Vor%Und von AnalysisDataTransformationServiceBean:
%Vor%Dieser Aufruf von limsService.getLatestLIMSData () verursachte die folgende Ausnahme:
%Vor%Nachdem ich diese Seite Ссылка konsultiert habe (unter vielen anderen), habe ich versucht, die Definition zu ändern der Verbindungspools zu:
%Vor%Ping über die Glassfish-Admin-Konsole ist erfolgreich, aber der Aufruf von analyseService.getAllAnalysisTypes () löst jetzt eine Ausnahme aus:
%Vor%Irgendwelche Ideen?
Um zwei Persistenzeinheiten (und damit zwei Datenquellen) innerhalb einer Transaktion zu verwenden, müssen Sie in der Tat XA-Verbindungen verwenden und Ihre Pools entsprechend konfigurieren (mindestens eine von ihnen unterstützt GlassFish die letzte Agentenoptimierung, die sich registrieren lässt) eine nicht-XA-Ressource, siehe Ссылка ). Das war für den ersten Fehler.
Für den zweiten Fehler scheint es schwierig zu sein, etwas mit dem aktuellen Detaillierungsgrad zu sagen. Können Sie den Stack-Trace bereitstellen (aktivieren Sie bei Bedarf eine feinere Protokollierung)?
Tags und Links multiple-databases persistence-unit transactions glassfish ejb-3.0