Vorbereitungen
Sie müssen über eine benutzerdefinierte Erweiterung verfügen, die in C geschrieben ist. Dies kann einer der unter Beispielknotendateien beschriebenen bereitgestellten Beispielknoten, der unter Beispiel-Parser-Dateien beschriebene Beispiel-Parser oder ein Knoten oder Parser sein, den Sie selbst mit Hilfe der Anweisungen unter Nachrichtenverarbeitungs- oder Sendeknoten in C erstellen, Empfangsknoten in C erstellen oder Parser in C erstellen erstellt haben. Der Name des benutzerdefinierten Knotens muss das Format <Knotenname>.lil haben.
Dieser Abschnitt enthält Informationen zur Vorgehensweise bei der Kompilierung von benutzerdefinierten Erweiterungen für alle unterstützten Plattformen.
Die in diesen Anweisungen verwendeten Dateinamen entsprechen den Dateinamen der bereitgestellten Beispiele. Wenn Sie Ihre eigenen benutzerdefinierten Erweiterungen kompilieren, müssen Sie diese Dateinamen durch Ihre eigenen Dateinamen ersetzen.
Bevor Sie versuchen, Ihre benutzerdefinierte Erweiterung zu kompilieren, stellen Sie sicher, dass Sie über einen geeigneten Compiler verfügen, der von Ihrem Betriebssystem unterstützt wird. Beispiele für geeignete Compiler:
Für Windows, Microsoft Visual Studio Version 7.1
Für AIX, VisualAge C++ for AIX Version 5.0.2
Für HP-UX: HP ANSI C 03.37
Für Linux, gcc Version 2.95.3
Für Solaris: SparcCompiler SC6.2
Für z/OS: z/OS Version 1.3 oder Version 1.4
Vorhandene, von Kunden oder Fremdanbietern bereitgestellte Bibliotheken für benutzerdefinierte Erweiterungen werden auf einem WebSphere Message Broker-Broker ohne Änderung oder Neukompilierung ausgeführt, Sie müssen sie jedoch manuell in der Workbench erstellen.
Durch die Kompilierung der Quelle für Ihre benutzerdefinierte Erweiterung auf den einzelnen unterstützten Plattformen wird die LIL-Datei (Loadable Implementation Library, ladbare Implementierungsbibliothek) erstellt, die der Broker für die Implementierung der benutzerdefinierten Erweiterung benötigt.
cd Installationsverzeichnis\sample\extensions\nodes\ (Windows) cd Installationsverzeichnis/sample/extensions/nodes (Linux- und UNIX-Plattformen)
cl /VERBOSE /LD /MD /Zi /I. /I..\..\..\include\plugin SwitchNode.c BipSampPluginUtil.c Common.c NodeFactory.c TransformNode.c -link /DLL ..\..\..\lib\imbdfplg.lib /OUT:SwitchNode.lil
xlc_r \ -I. \ -I /opt/IBM/mqsi/6.0/include/plugin \ -c SwitchNode.c \ -o SwitchNode.o xlc_r \ -I. \ -I /opt/IBM/mqsi/6.0/include/plugin \ -c BipSampPluginUtil.c \ -o BipSampPluginUtil.o xlc_r \ -I. \ -I /opt/IBM/mqsi/6.0/include/plugin \ -c Common.c \ -o Common.o xlc_r \ -I. \ -I /opt/IBM/mqsi/6.0/include/plugin \ -c NodeFactory.c \ -o NodeFactory.o xlc_r -qmkshrobj \ -bM:SRE \ -bexpall \ -bnoentry \ -o SwitchNode.lil SwitchNode.o BipSampPluginUtil.o Common.o NodeFactory.o \ -L /opt/IBM/mqsi/6.0/lib -l imbdfplg chmod a+r SwitchNode.lil
cc +z \ -I. \ -I<Installationsverzeichnis>/include \ -I<Installationsverzeichnis>/include/plugin \ -c BipSampPluginUtil.c \ -o <Ausgabeverzeichnis>/BipSampPluginUtil.o cc +z \ -I. \ -I<Installationsverzeichnis>/include \ -I<Installationsverzeichnis>/include/plugin \ -c Common.c \ -o <Ausgabeverzeichnis>/Common.o cc +z \ -I. \ -I<Installationsverzeichnis>/include \ -I<Installationsverzeichnis>/include/plugin \ -c NodeFactory.c \ -o <Ausgabeverzeichnis>/NodeFactory.o cc +z \ -I. \ -I<Installationsverzeichnis>/include \ -I<Installationsverzeichnis>/include/plugin \ -c SwitchNode.c \ -o <Ausgabeverzeichnis>/SwitchNode.o cc +z \ -I. \ -I<Installationsverzeichnis>/include \ -I<Installationsverzeichnis>/include/plugin \ -c TransformNode.c \ -o <Ausgabeverzeichnis>/TransformNode.o ld -b \ -o <Ausgabeverzeichnis>/SwitchNode.lil \ <Ausgabeverzeichnis>/BipSampPluginUtil.o \ <Ausgabeverzeichnis>/Common.o \ <Ausgabeverzeichnis>/NodeFactory.o \ <Ausgabeverzeichnis>/SwitchNode.o \ <Ausgabeverzeichnis>/TransformNode.o \ -L <Installationsverzeichnis>/lib \ -L <Installationsverzeichnis>/xml4c/lib \ -L <Installationsverzeichnis>/merant/lib \ -L <Java_Stammverzeichnis>/jre/lib/PA_RISC2.0 \ -L <Java_Stammverzeichnis>/jre/lib/PA_RISC2.0/server \ -l imbdfplg chmod a+r <Ausgabeverzeichnis>/SwitchNode.lil
Kompilieren und verknüpfen Sie den benutzerdefinierten Knoten unter Linux wie folgt mit einem unterstützten C-Compiler. Beachten Sie, dass die Zeilen zur besseren Lesbarkeit umgebrochen wurden. Geben Sie jeden Befehl als einzelne Eingabezeile ein.
/usr/bin/gcc -c -fpic -MD -trigraphs -I. -I/opt/mqsi/include -I/opt/mqsi/include/plugin -DLINUX -D__USE_GNU -D_GNU_SOURCE TransformNode.c /usr/bin/gcc -c -fpic -MD -trigraphs -I. -I/opt/mqsi/include -I/opt/mqsi/include/plugin -DLINUX -D__USE_GNU -D_GNU_SOURCE SwitchNode.c /usr/bin/gcc -c -fpic -MD -trigraphs -I. -I/opt/mqsi/include -I/opt/mqsi/include/plugin -DLINUX -D__USE_GNU -D_GNU_SOURCE BipSampPluginUtil.c /usr/bin/gcc -c -fpic -MD -trigraphs -I. -I/opt/mqsi/include -I/opt/mqsi/include/plugin -DLINUX -D__USE_GNU -D_GNU_SOURCE Common.c /usr/bin/gcc -c -fpic -MD -trigraphs -I. -I/opt/mqsi/include -I/opt/mqsi/include/plugin -DLINUX -D__USE_GNU -D_GNU_SOURCE NodeFactory.c /usr/bin/gcc -o samples.lil TransformNode.o SwitchNode.o BipSampPluginUtil.o Common.o NodeFactory.o -shared -lc -lnsl -ldl -L/opt/mqsi/lib -limbdfplgMit diesen Befehlen wird die Datei 'samples.lil' erstellt, die die Objekte 'Umsetzungsknoten' und 'Umschaltungsknoten' bereitstellt. Wenn im Knoten eine Ausnahmebedingung auftritt, wird er nicht richtig verarbeitet, und der Broker wird abnormal beendet und erneut gestartet.
cc -mt \ -I. \ -I<Installationsverzeichnis>/include \ -I<Installationsverzeichnis>/include/plugin \ -c SwitchNode.c \ -o <Ausgabeverzeichnis>/SwitchNode.o cc -mt \ -I. \ -I<Installationsverzeichnis>/include \ -I<Installationsverzeichnis>/include/plugin \ -c BipSampPluginUtil.c \ -o <Ausgabeverzeichnis>/BipSampPluginUtil.o cc -mt \ -I. \ -I<Installationsverzeichnis>/include \ -I<Installationsverzeichnis>/include/plugin \ -c NodeFactory.c \ -o <Ausgabeverzeichnis>/NodeFactory.o cc -mt \ -I. \ -I<Installationsverzeichnis>/include \ -I<Installationsverzeichnis>/include/plugin \ -c Common.c \ -o <Ausgabeverzeichnis>/Common.o cc -G \ -o <Ausgabeverzeichnis>/SwitchNode.lil \ <Ausgabeverzeichnis>/SwitchNode.o \ <Ausgabeverzeichnis>/BipSampPluginUtil.o \ <Ausgabeverzeichnis>/NodeFactory.o \ <Ausgabeverzeichnis>/Common.o \ -L <Installationsverzeichnis>/lib / -l imbdfplg chmod a+r <Ausgabeverzeichnis>/SwitchNode.lil
export _CC_STEPS=-1Sie können auch die folgenden zwei Zeilen zu Ihrer Makefile hinzufügen, um sie zu exportieren:
_CC_STEPS=-1 .EXPORT : _CC_STEPS
Kompilieren und verknüpfen Sie den benutzerdefinierten Knoten unter z/OS wie folgt mit einem unterstützten C-Compiler:
cc -c \ -Wc,DLL -g -W0,long,langlvl\(extended\),EXPORTALL,TARGET\(OSV2R8\) \ -W0,LIST\(./SwitchNode.lst\) \ -I. -I${Installationsverzeichnis}/include \ -I${Installationsverzeichnis}/include/plugin \ -I${Installationsverzeichnis}/sample/include \ -I${Installationsverzeichnis}/sample/plugin \ -o ./SwitchNode.o ./SwitchNode.c
cc -c \ -Wc,DLL -g -W0,long,langlvl\(extended\),EXPORTALL,TARGET\(OSV2R8\) \ -W0,LIST\(./SwitchNode.lst\) \ -I. -I${Installationsverzeichnis}/include \ -I${Installationsverzeichnis}/include/plugin \ -I${Installationsverzeichnis}/sample/include \ -I${Installationsverzeichnis}/sample/plugin \ -o ./BipSampPluginUtil.o ./BipSampPluginUtil.c
cc -c \ -Wc,DLL -g -W0,long,langlvl\(extended\),EXPORTALL,TARGET\(OSV2R8\) \ -W0,LIST\(./SwitchNode.lst\) \ -I. -I${Installationsverzeichnis}/include \ -I${Installationsverzeichnis}/include/plugin \ -I${Installationsverzeichnis}/sample/include \ -I${Installationsverzeichnis}/sample/plugin \ -o ./Common.o ./Common.c
cc -c \ -Wc,DLL -g -W0,long,langlvl\(extended\),EXPORTALL,TARGET\(OSV2R8\) \ -W0,LIST\(./SwitchNode.lst\) \ -I. -I${Installationsverzeichnis}/include \ -I${Installationsverzeichnis}/include/plugin \ -I${Installationsverzeichnis}/sample/include \ -I${Installationsverzeichnis}/sample/plugin \ -o ./NodeFactory.o ./NodeFactory.c
cc \ -Wl,DLL -g -Wl,p,map -Wl,LIST=ALL,MAP,XREF,REUS=RENT \ -o ./SwitchNode.lil ./SwitchNode.o ./BipSampPluginUtil.o \ ./Common.o ./NodeFactory.o \ ${Installationsverzeichnis}/lib/libimbdfplg.x
Erteilen Sie der Gruppe die Dateiberechtigungen der benutzerdefinierten Erweiterung zum Lesen und Ausführen, indem Sie folgenden Befehl aufrufen:
chmod a+rx {Ausgabeverzeichnis}/SwitchNode.lil