Frage

Wir haben eine JCA wurden unter Verwendung von mit einem Low-Level-Netzwerk-Ressource-Schnittstelle aus WebSphere, aber wir haben eine Anforderung der Lage sein, die gleiche Netzwerkressource von Tomcat extern zuzugreifen (das heißt nicht in einer verwalteten Umgebung). Die Netzwerk-Kommunikation und Protokoll-Layout ist sehr ausführlich, so würden wir eher nicht kopieren / mehrere tausend Zeilen Code einfügen (und sie dann getrennt halten müssen).

Von der JCA-Spezifikation zu lesen, gibt es angeblich eine gewisse Unterstützung den Code in einer nicht verwalteten Umgebung (wie Tomcat) auszuführen. Leider habe ich keine Ahnung, was die Schnittstellen tun sollen, oder wie man sie nennen von außerhalb einer verwalteten Umgebung (die Spezifikation ist ziemlich vage).

Gibt es Beispiele für die Implementierung gibt, die zeigen, wie eine JCA ändern in einer nicht verwalteten Umgebung verwendbar sein?

Danke!

War es hilfreich?

Lösung

Wir hatten ähnlichen Fall, wo wir einen Anschluss für den Zugriff externer WebDav Speicher entwickelt und ihn benutzen wollten auch von einem Stand-alone-Anwendung (nicht verwaltet).

Ich glaube, dass der einfachste Weg, dies auf der Design-Ebene zu lösen ist, und der Code in einer Weise zu organisieren, dass die Kernlogik des Verbinders JCA-agnostisch ist und leicht wiederverwendet werden. Dann können Sie diese mit JCA-spezifischen Code wickeln, die den Anschluss an den AS aussetzt. Es könnte wahrscheinlich sogar in zwei Gläsern verpackt werden. - das ist zumindest die Lösung, die wir wählten (aber wir alle in einem .jar verpackt)

Ansonsten ein JCA-Anschluss ist der „Klebstoff“ zwischen den folgenden drei Parteien:

  1. der Application Server
  2. das EIS
  3. die Anwendungskomponente.

Es sollte möglich sein, die AS mit einer leichten Umsetzung der notwendigen Klassen zu simulieren und dann den JCA-Connector verwendet direkt.

Eine Hauptaufgabe des AS in Bezug auf einen JCA-Anschluss ist die Bündelung von Verbindungen zu verwalten, und von dem, was ich mich erinnere, die entsprechende Schnittstelle, die Sie dann implementieren sollten, ist ConnectionManager.

Die JCA-Anschluss erhält einen Verweis auf einen ConnectionManager, aber die Umsetzung ist AS-spezifisch. Schreibe eine leichte Implementierung, die rudimentäre Pooling bietet (oder keine Pooling überhaupt) klingt machbar.

hatte ich geschrieben einmal Sequenzdiagramm des Mechanismus Anschlussbelegung. Vielleicht finden Sie es nützlich. Eine weitere Schnittstelle ist ResourceAdapter, wo Sie die Start / Stop definieren, aber das ist einfach manuell aufrufen.

(Es ist wahrscheinlich ein bisschen mehr als das, und es hängt natürlich davon ab, was Ihre JCA-Connector verwendet. Zum Beispiel, wenn es Work und die WorkManager verwendet, dann ist es viel wird zu mock komplizierter. Gleicher Bemerkung, wenn die Stecker ist transaktionale. Aber es scheint nicht Ihr Fall zu sein.)

Ansonsten denke ich, dass Frühling eine gewisse Unterstützung für JCA hat, kann es sich lohnen, einen Blick, wie sie es taten.

Von der JCA-Spezifikation zu lesen, gibt es angeblich eine gewisse Unterstützung auszuführen die Code in einer nicht verwalteten Umgebung

Können Sie erwähnen den spezifischen Teil der Spezifikation über die Sie sich beziehen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top