Installation und Einbindung

Ein ISA Modulsystem ist keine Anwendung im üblichen Sinne sondern vielmehr eine Erweiterung von Java und der Anwendungs-Infrastruktur. Daher ist die “Installation” von ISA eher eine individuelle Einbindung – als ein klassischer Installationsvorgang. Dabei können drei Bereiche unterschieden werden

  • Einbindung auf dem Server
  • Einbindung in ein bestehendes Standalone System
  • Nutzung als Standalone System

Ein ISA Server
In Kurzform:

  • Service Broker in Application Server deployen
  • Repository Verzeichnis anlegen
  • Module in das Repository kopieren

Das folgende etwas ausführlichere Beispiel basiert auf einem Linux Server mit einem installierten JDK ab 1.6 und einer standard JBoss 7 Application Server Installation (z.B. in /var/jboss7). Für den Betrieb eines ISA Systems bzw. des dafür notwendigen ISA Service Brokers wird folgendes benötigt

  • Deployment (kopieren) des Brokers in den Application Server (JEE 3.x kompatibel)
    z.B. isa.ServiceBrokerApplication-3.xJEE.ear -> /var/jboss7/standalone/deployments
  • ein ISA Repository Verzeichnis
    z.B. /var/isasystem5 mit einem Unterverzeichnis /var/isasystem5/plugins
  • das ISA Kernel Modul
    z.B. isa.Core-1.0.0.DEV-SNAPSHOT.jar im plugins Verzeichnis. Das Bootstrap Modul befindet sich als einzige Bibliothek im Broker Deployment.
  • sowie ein beliebiges Modul zum Test im plugins Verzeichnis
    z.B. HelloWorld.jar mit einer HelloWorld Klasse und einer sayHello(arg) Methode

Nach dieser Basisinstallation kann das HelloWorld Modul mit HelloWorld:sayHello über alle JEE Kommunikationskanäle (so erlaubt1) aufgerufen werden. Aus einem Browser heraus zum Beispiel mit der URL

http://host:8080/ServiceBrokerWebComponents/BrokerServlet/web/?service=HelloWorld:sayHello[version=]data=World

Der Service Broker findet das Repository über folgende Wege

  • wenn das Standardverzeichnis /var/isasystem5/plugins existiert
  • wenn ein entsprechendes Verzeichnis in der Environment Variablen
    isa.repository.url=file:/var/myDir/ hinterlegt ist
  • oder wenn das Verzeichnis im Manifest des isa.CoreBoostrap Moduls in der Broker .ear neu definiert wird
    PlugIn-Properties: [isa.repository.url=file:/var/myDir/, ... ]

Mit der Kombination Repository Verzeichnis mit Modulen und installierten Service Broker steht ein voll funktionsfähiges, universelles ISA JEE Server System zur Verfügung, dass jetzt vollkommen unabhängig von JEE Notwendigkeiten funktional allein durch Module ausgebaut werden kann (siehe auch Repository-Struktur und Middware Einbindung).

Für diesen fachlich/funktionalen Ausbau bietet das ISA System eine ganze Reihe von optionalen, vorgefertigten Konfigurationsmöglichkeiten und Modulen, mit denen flexible Serveranwendungen oder automatisierte SmartClients realisiert werden können (siehe auch Modul Repository Browser). Grundsätzlich aber ist mit der oben beschriebenen Basiseinbindung der Weg für eine individuelle Nutzung frei.

Einbindung in bestehende Systeme
Ein weiteres Szenario ist die Nutzung des ISA Modulsystems in einer bestehenden Anwendung. – hier sind zwei Fälle zu unterscheiden.

  • innerhalb einer bestehenden JEE Anwendung auf dem Server
  • innerhalb einer Standalone Anwendung

JEE Anwendung
Für eine bestehende JEE Anwendung gilt grundsätzlich das Gleiche wie bei der bereits beschriebenen Server Einbindung insbesondere in Bezug auf das Modul Repository. Der Unterschied besteht jedoch in der Art und Weise wie das isa.Bootsrtrap Modul und die JEE Adapter eingebunden werden.

Bei der beschriebenen Installation des Service Brokers als JEE Application (.ear) werden drei Module installiert

Obligatorisch ist das Bootstrap Modul – es ist der Einstiegspunkt zu einem ISA Modulsystem und muss in dem Bibliotheksbereich der Anwendung (z.B. /lib/ in einer *.ear) eingefügt werden.

Damit ist eine bestehende Anwendung intern fähig Module aus dem Repository zu nutzen und aufzurufen. Die Anwendung kann damit z.B. successive eine eigene interne Modularisierung betreiben. Nach außen jedoch verhält sich die Anwendung genauso wie zuvor. Das bedeutet, dass sie nur über ihre eigenen öffentlichen Schnittstellen von außen ansprechbar bleibt.

Das kann geändert werde, indem auch die JEE Adapter Module in das bestehende Deployment mit aufgenommen werden. Danach kann die bestehende Anwendung genauso genutzt werden wie der ISA Service Broker – wodurch jede bestehende Anwendung ganz einfach selbst zu einem Service Broker für ihre Dienste werden kann.

Standalone Anwendung
Bei Standalone Anwendungen gestaltet sich die Einbindung etwas anders – insbesondere was das Repository betrifft.  Bei Standalone Anwendungen kann das plugins Repository Verzeichnis direkt in das Root Verzeichnis der Anwendung gelegt werden.

Im Minimum müssen dann das ISA Bootstrap und das ISA Kern Modul in diesem Verzeichnis vorhanden sein um ISA Modularität für die Anwendung nutzbar zu machen. Ferner muss das Bootstrap Modul in den Classpath der Anwendung aufgenommen werden (siehe auch Einbindungsbeispiel).

  • …/com.my.Application
    • mylibs
    • plugins
      • isa.CoreBootstrap-1.0.0.DEV-SNAPSHOT.jar
      • isa.Core-1.0.0.DEV-SNAPSHOT.jar
    • run.cmd
      • java -cp ./mylibs;./plugins/isa.CoreBootstrap-1.0.0.DEV-SNAPSHOT.jar com.my.ApplicationMain

ISA Standalone Anwendung
Ist eine noch engere Kopplung an das ISA System akzeptabel oder gewünscht so kann für die Realisierung von Clients oder Standalone Systemen auch einer der ISA Einstiegspunkte für Standalone Anwendungen genutzt werden. Zum Beispiel das Bootstrap isa.Main zusammen mit einer Application config Datei. Ein entsprechendes run.cmd Skript und die config können dann z.B. so aussehen.

run.cmd

set JAVA_OPTS=-Disa.installation=DefaultClient -Disa.config=application.config -Djava.system.class.loader=isa.ContextClassLoader
set APL_CLASSPATH=./plugins/isa.CoreBootstrap-1.0.0.DEV-SNAPSHOT.jar
set APL_MAIN=isa.Main
set APL_ARGS=
java %JAVA_OPTS% -cp %APL_CLASSPATH% %APL_MAIN% %APL_ARGS%

application.config

LogFileName=isa.WorkManager.log
StartupPlugIn=isa.WorkManager:start[version=1.*]
PlugInList=isa.CoreXMLTool[internal=isa.XmlTool, version=1.*];\
isa.esb.ServiceBrokerConnector[internal=isa.ServiceConnector, version=1.0.0.DEV-SNAPSHOT]

Wie auch immer … natürlich ist jede Art von individueller Einbindung möglich, die das Bootstrap Modul in den Classpath bringt und ein Repository zugänglich macht.

ISA Smart Client
Der ISA Smart Client bietet letztendlich eine vollständige, automatisierte Smart Client Lösung auf Basis von Java JNLP (nur für den Start der Workbench) und der ISA Client Workbench.

___________________________
1: Über einen optional installierten Security Handler können Service Aufrufe differenziert gesteuert werden. Wichtig: Http GET Aufrufe z.B. aus einem Browser müssen immer explizit durch einen entsprechenden Property Eintrag im Modulmanifest erlaubt werden (z.B. PlugIn-Properties: [permitget=*]).