Die Plattformunabhängigkeit

Die Plattformunabhängigkeit des ISA Modulsystems bzw. dessen Module ist ein wichtiger Bestandteil im Konzept leichtgewichtiger Technik. Denn hierdurch entsteht eine wirklich klare Trennung zwischen fachlicher Funktion und benötigter Technik, die ISA Module zum einen überall integrierbar machen und zum anderen deren Entwicklung von den Rahmenbedingungen und Notwendigkeiten ihrer Einsatzumgebung befreien.

Ein ISA Modul ist von außen betrachtet einfach ein Standard Java Programm, das mit Standard Java Mitteln und Methoden realisiert und das in jeder Umgebung genutzt werden kann.

Beispiel:

//original source code :)
public class HelloWorld {

	public String sayHello(String someOne){
		return "Hello: "+someOne;
	}
}

Diese bekannte Klasse ist ein ISA Modul:

  • wenn sie in einer Jar Datei mit dem Namen “HelloWorld.jar” in einem ISA Repository Verzeichnis liegt.

Wenn dieses Repository zudem mit einem ISA JEE Service Broker verbunden ist, dann ist diese Klasse nicht nur ein ISA Modul, sondern auch eine “JEE Komponente”, die über alle zur Verfügung stehenden Middleware Technologien (z.B. EJB, WebService, Servlet, REST etc.) genutzt werden kann.

Test: http://integrating-architecture.de/ServiceBroker/web/?service=HelloWorld:sayHello[version=org]data=Visitor

Gleichzeitig kann diese Klasse aber auch Bestandteil einer von ISA völlig unabhängigen Anwendung oder Funktionalität sein – weil sie KEINE Abhängigkeiten zu ISA oder zur JEE hat.

Wie auch immer – ISA ist u.a. deshalb “leichtgewichtig”, weil es die Module zu nichts zwingt – sie aber gleichzeitig überall verfügbar machen kann (siehe auch Einbindung).

Eine weitere Möglichkeit, von ISA völlig unabhängige Funktionalitäten zu nutzen bzw. einzubinden ist, ein ISA Modul zu erstellen, dessen eigentlichen Funktionalitäten in unabhängigen Bibliotheken liegen, die als solche in das Modul eingebunden werden. Das Modul fungiert dabei nur als Wrapper und damit als Gateway zu diesen Bibliotheken – besitzt aber gleichzeitig alle Möglichkeiten und Fähigkeiten eines ISA Moduls. Mögliche Anwendungen sind z.B. eine proprietäre Datenbankschnittstelle, eine proprietäre Middlewaretechnologie, nicht Java Systemschnittstellen oder die gleichzeitige Nutzung unterschiedlicher ORM bzw. Persistenz Frameworks in einem Migrationsszenario usw..

Sollte es daher nicht möglich sein, bestehende Klassen in eine entsprechende Modul.jar Datei zu verpacken – dann ist das kein Problem. Eine einfache Manifestdatei hier z.B. “HelloWorld.mf”, ohne jede Implementierung, ist ausreichend.

Manifest-Version: 1.0
PlugIn-Name: HelloWorld
PlugIn-Libraries: existingLib/MySpecialLibWithHelloWorldClass
PlugIn-Exports: HelloWorld

Diese Beispieldatei definiert ein ISA Modul “HelloWorld” und macht so die “HelloWorld” Klasse zugänglich, die hier z.B. in einer bestehenden Bibliothek  mit dem Namen MySpecialLibWithHelloWorldClass.jar liegt.