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 Beispielparserdateien 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.
In diesem Abschnitt finden Sie alle Informationen zur Kompilierung von benutzerdefinierten Erweiterungen auf allen unterstützten Plattformen.
Die in diesen Anweisungen verwendeten Dateinamen beziehen sich auf die angegebenen Beispiele. Wenn Sie Ihre eigenen benutzerdefinierten Erweiterungen kompilieren, müssen Sie diese Dateinamen durch Ihre eigenen Dateinamen ersetzen.
Stellen Sie vor dem Kompilieren von benutzerdefinierten Erweiterungen sicher, dass Sie über einen Compiler verfügen, der von Ihrem Betriebssystem unterstützt wird. Hier finden Sie einige Beispiele geeigneter Compiler:
Für Windows, Microsoft Visual C++ .NET 2003
Für AIX, VisualAge C++ for AIX Version 6.0
Für HP-UX, HP ANSI C 03.52
Für Linux (x86-Plattform) und Linux (zSeries-Plattform) 2.4 Kernel und 2.6 Kernel, Gnu g++, minimale Versionsnummer 3.2
Für Linux (POWER-Plattform), Gnu g++, minimale Versionsnummer 3.3
Für Solaris x86-64, Sun Studio 10
Für z/OS Language Environment (LE) z/OS 1.5, z/OS 1.6, z/OS C/C++ 1.5 oder höher
Vorhandene Kunden oder benutzerdefinierte Erweiterungsbibliotheken von anderen Anbietern können auf einem WebSphere Message Broker-Broker ohne Änderungen oder erneute Kompilierungen ausgeführt werden. Sie müssen jedoch manuell in der Workbench erstellt werden.
Durch das Kompilieren der Quelle für Ihre benutzerdefinieren Erweiterungen auf jeder der unterstützten Plattformen wird die LIL-Datei (Loadable Implementation Library) erstellt, die für den Broker zur Implementierung der benutzerdefinierten Erweiterung erforderlich ist.
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 <Installationsverzeichnis>/jre/lib/PA_RISC2.0 \ -L <Installationsverzeichnis>/jre/lib/PA_RISC2.0/server \ -l imbdfplg chmod a+r <Ausgabeverzeichnis>/SwitchNode.lil
Kompilieren und verknüpfen Sie benutzerdefinierte Knoten unter Linux mit Hilfe eines unterstützten C-Compilers wie im folgenden Beispiel beschrieben. Beachten Sie, dass die Zeilen aus Gründen der Lesbarkeit getrennt wurden. Geben Sie jeden Befehl in einer einzigen Zeile ein.
/usr/bin/g++ -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/g++ -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/g++ -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/g++ -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/g++ -o samples.lil TransformNode.o SwitchNode.o BipSampPluginUtil.o Common.o NodeFactory.o -shared -lc -lnsl -ldl -L/opt/mqsi/lib -limbdfplgDurch diese Befehle wird die Datei 'samples.lil' erstellt, die 'TransformNode'- und 'SwitchNode'-Objekte bereitstellt.
#ifdef __cplusplus extern "C"{ #endif void LilFactoryExportPrefix * LilFactoryExportSuffix bipGetParserFactory() { ... ... } #ifdef __cplusplus } #endif
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=-1Alternativ dazu können Sie diese zwei Zeilen für den Export zur Makefile hinzufügen. Gehen Sie dazu folgendermaßen vor:
_CC_STEPS=-1 .EXPORT : _CC_STEPS
Kompilieren und verknüpfen Sie benutzerdefinierte Knoten unter z/OS mit Hilfe eines unterstützten C-Compilers folgendermaßen:
cc -c \ -Wc,DLL -g -W0,long,langlvl\(extended\),EXPORTALL,TARGET\(OSV2R8\),float\(ieee\) \ -Wc,xplink \ -W0,LIST\(./SwitchNode.lst\) \ -I. -I${Installationsverzeichnis}/include \ -I${Installationsverzeichnis}/include/plugin \ -I${install_dir}/sample/include \ -I${install_dir}/sample/plugin \ -o ./SwitchNode.o ./SwitchNode.c
cc -c \ -Wc,DLL -g -W0,long,langlvl\(extended\),EXPORTALL,TARGET\(OSV2R8\),float\(ieee\) \ -Wc,xplink \ -W0,LIST\(./SwitchNode.lst\) \ -I. -I${Installationsverzeichnis}/include \ -I${Installationsverzeichnis}/include/plugin \ -I${install_dir}/sample/include \ -I${install_dir}/sample/plugin \ -o ./BipSampPluginUtil.o ./BipSampPluginUtil.c
cc -c \ -Wc,DLL -g -W0,long,langlvl\(extended\),EXPORTALL,TARGET\(OSV2R8\),float\(ieee\) \ -Wc,xplink \ -W0,LIST\(./SwitchNode.lst\) \ -I. -I${Installationsverzeichnis}/include \ -I${Installationsverzeichnis}/include/plugin \ -I${install_dir}/sample/include \ -I${install_dir}/sample/plugin \ -o ./Common.o ./Common.c
cc -c \ -Wc,DLL -g -W0,long,langlvl\(extended\),EXPORTALL,TARGET\(OSV2R8\),float\(ieee\) \ -Wc,xplink \ -W0,LIST\(./SwitchNode.lst\) \ -I. -I${Installationsverzeichnis}/include \ -I${Installationsverzeichnis}/include/plugin \ -I${install_dir}/sample/include \ -I${install_dir}/sample/plugin \ -o ./NodeFactory.o ./NodeFactory.c
cc \ -Wl,DLL -g -Wl,p,map -Wl,LIST=ALL,MAP,XREF,REUS=RENT \ -Wl,xplink \ -o ./SwitchNode.lil ./SwitchNode.o ./BipSampPluginUtil.o \ ./Common.o ./NodeFactory.o \ ${install_dir}/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