C ユーザー定義拡張機能のコンパイル

始める前に

ユーザー定義拡張機能は C で作成しなければなりません。 この拡張機能は、 サンプル・ノード・ファイルで説明されている提供されているサンプル・ノード、 サンプル・パーサー・ファイルで説明されているサンプル・パーサー、 またはC でのメッセージ処理ノードの作成C での入力ノードの作成C でのパーサーの作成の指示を利用して独自に作成したノードかパーサーのいずれかにすることができます。プラグイン・ノードの名前は、 <nodename>.lil の形式で指定する必要があります。

このセクションでは、 サポートされているすべてのプラットフォームでのユーザー定義拡張機能のコンパイル方法について説明します。

この説明の中で使用されているファイル名は、提供されているサンプルの名前です。 独自のユーザー定義拡張機能をコンパイルする場合は、これらのファイル名を自分のファイル名に置き換えてください。

前提条件

ユーザー定義拡張機能をコンパイルする前に、 ご使用のオペレーティング・システムでサポートされている適切なコンパイラーがあることを確認してください。 適切なコンパイラーの例について、以下に示します。

Windows の場合、Microsoft Visual Studio Version 6.0 (Service Pack 5)

AIX の場合、VisualAge C++ for AIX Version 5.0.2

HP-UX の場合、HP ANSI C 03.37

Linux の場合、 Linux Version 2.95.3

Solaris の場合、SparcCompiler SC6.2

z/OS の場合、z/OS Version 1.3 または Version 1.4

ヘッダー・ファイル

C インターフェースは、以下のヘッダー・ファイルで定義されます。
BipCni.h
メッセージ処理ノード
BipCpi.h
メッセージ・パーサー
BipCci.h
ノードのパーサーの両方に共通のインターフェース
BipCos.h
プラットフォーム固有の定義

既存のカスタマーまたはサード・パーティー提供のユーザー定義拡張機能ライブラリーは、 変更または再コンパイルせずに、WebSphere Business Integration Message Broker ブローカーで実行されます。 ただし、これらはワークベンチで手動で作成する必要があります。

コンパイル

サポートされている各プラットフォーム上でユーザー定義拡張機能のソースをコンパイルすると、 ロード可能インプリメンテーション・ライブラリー (LIL) ファイルが作成されます。 このファイルは、ブローカーがユーザー定義拡張機能をインプリメントするために必要なファイルです。

ユーザー定義拡張機能コードが置かれているディレクトリーに移動します。 以下に例を示します。 変更の始まり
  cd install_dir\sample\extensions\nodes\  (Windows)
 
  cd install_dir/sample/extensions/nodes  (UNIX プラットフォーム)
変更の終わり

Windows でのコンパイル

Windows (Microsoft Visual Studio C++ Version 6.0 で使用可能な、 Microsoft 32-bit C/C++ Compiler を想定しています) 上で、 以下のコマンドを使用して、ユーザー定義ノードをコンパイルします。
    cl /VERBOSE /LD /MD /Zi /I..\plugin /I..\..\include\plugin
          SwitchNode.c BipSampPluginUtil.c Common.c NodeFactory.c TransformNode.c
          -link /DLL ..\..\lib\imbdfplg.lib
     /OUT:SwitchNode.lil

AIX でのコンパイル

以下のように AIX 上でサポートされる C コンパイラーを使用し、 ユーザー定義ノードをコンパイルしてリンクします。
xlc_r -I <install_dir>/include
      -I <install_dir>/include/plugin
            -c SwitchNode.c
	    -o <outputdir>/SwitchNode.o

xlc_r -I <install_dir>/include
      -I <install_dir>/include/plugin
            -c BipSampPluginUtil.c
	    -o <outputdir>/BipSampPluginUtil.o

xlc_r -bM:SRE
            -bexpall
            -bnoentry
            -o SwitchNode.lil <outputdir>/SwitchNode.o
                  <outputdir>/BipSampPluginUtil.o
      -L <install_dir>/lib
         -l imbdfplg

chmod a+r SwitchNode.lil
変更の始まり

HP-UX でのコンパイル

以下のように HP-UX 上でサポートされる C コンパイラーを使用し、 ユーザー定義ノードをコンパイルしてリンクします。
cc +z \
-I. \
   -I<install_dir>/include \
   -I<install_dir>/include/plugin \
   -c BipSampPluginUtil.c \
      -o <output_dir>/BipSampPluginUtil.o

cc +z \
-I. \
   -I<install_dir>/include \
   -I<install_dir>/include/plugin \
   -c Common.c \
   -o <output_dir>/Common.o

cc +z \
-I. \
   -I<install_dir>/include \
   -I<install_dir>/include/plugin \
   -c NodeFactory.c \
   -o <output_dir>/NodeFactory.o

cc +z \
-I. \
   -I<install_dir>/include \
   -I<install_dir>/include/plugin \
   -c SwitchNode.c \
      -o <output_dir>/SwitchNode.o

cc +z \
-I. \
   -I<install_dir>/include \
   -I<install_dir>/include/plugin \
   -c TransformNode.c \
   -o <output_dir>/TransformNode.o


ld -b \
      -o <output_dir>/SwitchNode.lil \
   <output_dir>/BipSampPluginUtil.o \
   <output_dir>/Common.o \
   <output_dir>/NodeFactory.o \
   <output_dir>/SwitchNode.o \
   <output_dir>/TransformNode.o \
   -L <install_dir>/lib \
   -L <java_home>/jre/lib/PA_RISC2.0 \
   -L <java_home>/jre/lib/PA_RISC2.0/server \
      -l imbdfplg

chmod a+r <output_dir>/SwitchNode.lil
変更の終わり
変更の始まり

Linux でのコンパイル

以下のように Linux 上でサポートされる C コンパイラーを使用し、 ユーザー定義ノードをコンパイルしてリンクします。 なお、注意していただきたい点として、このページのコマンドは読みやすくするために行が分割されていますが、 実際に入力する際は、各コマンドを 1 行に入力してください。

/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 -limbdfplg
これらのコマンドでは、TransformNode オブジェクトと SwitchNode オブジェクトを含む、ファイル samples.lil が作成されます。ノードで例外が発生すると、例外は正しく処理されません。 ブローカーは異常終了し、再始動します。
変更の終わり

Solaris でのコンパイル

以下のように Solaris 上でサポートされる C コンパイラーを使用し、 ユーザー定義ノードをコンパイルしてリンクします。
cc -mt \
	-I. \
   -I<install_dir>/include \
   -I<install_dir>/include/plugin \
   -c SwitchNode.c \
      -o <output_dir>/SwitchNode.o

cc -mt \
	-I. \
   -I<install_dir>/include \
   -I<install_dir>/include/plugin \
   -c BipSampPluginUtil.c \
      -o <output_dir>/BipSampPluginUtil.o

cc -G ¥
      -o <output_dir>/SwitchNode.lil \
      		<output_dir>/SwitchNode.o \
      		<output_dir>/BipSampPluginUtil.o \
   -L <install_dir>/lib /
      -l imbdfplg

chmod a+r <output_dir>/SwitchNode.lil

z/OS でのコンパイル

次のように、_CC_STEPS 変数を -1 に設定して、 プリリンカーまたはリンカーを使用することをリンクに強制します。
export _CC_STEPS=-1
別の方法として、 次のように、以下の 2 行を MAKE ファイルに追加してエクスポートすることができます。
_CC_STEPS=-1
.EXPORT : _CC_STEPS

以下のように z/OS 上でサポートされる C コンパイラーを使用し、 ユーザー定義ノードをコンパイルしてリンクします。

cc -c ¥
  -Wc,DLL -g -W0,long,langlvl¥(extended¥),EXPORTALL,TARGET¥(OSV2R8¥) ¥
  -W0,LIST¥(${output_dir}/SwitchNode.lst¥) ¥
  -I./-I${install_dir}/include -I${install_dir}/include/plugin  ¥
  -I${install_dir}/sample/include ¥
  -I${install_dir}/sample/plugin ¥
  -o ${output_dir}/SwitchNode.o ¥
 ${install_dir}/sample/plugin/SwitchNode.c
cc -c ¥
  -Wc,DLL -g -W0,long,langlvl¥(extended¥),EXPORTALL,TARGET¥(OSV2R8¥) ¥
  -W0,LIST¥(${output_dir}/BipSampPluginUtil.lst¥) ¥
  -I./-I${install_dir}/include -I${install_dir}/include/plugin  ¥
  -I${install_dir}/sample/include ¥
  -I${install_dir}/sample/plugin ¥
  -o ${output_dir}/BipSampPluginUtil.o ¥
 ${install_dir}/sample/plugin/BipSampPluginUtil.c
cc \
  -Wl,DLL -g  -Wl,p,map -Wl,LIST=ALL,MAP,XREF,REUS=RENT
-o ${output_dir}/SwitchNode.lil ¥
${output_dir}/SwitchNode.o ${output_dir}/BipSampPluginUtil.o 
${install_dir}/lib/libimbdfplg.x
chmod a+r {output_dir}/SwitchNode.lil
注: 最適化された作成の場合、-g-2 になります。

関連概念
ユーザー定義拡張機能

関連タスク
ユーザー定義拡張機能の開発
ワークベンチでのユーザー定義ノードのユーザー・インターフェース表現の作成
ユーザー定義ノードのテスト
ユーザー定義ノードの配布

関連資料
ユーザー定義拡張機能