TIBCO EBX® モジュールのパッケージ化
Related information
モジュール構造
EBX® モジュールには次のファイルが含まれています。
/WEB-INF/ebx/module.xml
|
この必須ドキュメントは、モジュールの主なプロパティとサービスを定義します。モジュール宣言 を参照してください。
|
/WEB-INF/web.xml
|
これは標準の Jakarta EE 展開記述子です。アプリケーションサーバーの起動時に EBX® モジュールの登録を実行できます。モジュール登録 を参照してください。
|
/META-INF/MANIFEST.MF
|
オプション。存在する場合、EBX® は「実装タイトル」と「実装バージョン」の値を [管理] > [技術構成] > [モジュールとデータモデル] に報告します。
|
/www/
|
このオプションのディレクトリには、パブリック URL 経由でアクセスできるすべてのパッケージ化されたリソースが含まれます。パッケージ化されたリソース を参照してください。
|
モジュール宣言
モジュールは、ドキュメント
/WEB-INF/ebx/module.xml を使用して宣言されます。以下はその例です。
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:ebx-schemas:module_2.4"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:ebx-schemas:module_2.4 https://schema.orchestranetworks.com/module_2.4.xsd">
<name>moduleTest</name>
</module>
各プロパティに関するドキュメントについては、関連スキーマ を参照してください。主なプロパティは次のとおりです。
| エレメント | 説明 | 必須 |
|---|---|---|
name |
サーバーインスタンス内のモジュールの一意の識別子を定義します。モジュール名は通常、Web アプリケーションの名前 (ディレクトリの名前) に対応します。 | はい |
publicPath |
パブリック URL で Web アプリケーションを識別するモジュール名以外のパスを定義します。このパスは、絶対 URL を計算するときにモジュールの外部リソースの URL に追加されます。このフィールドが定義されていない場合、パブリック パスは上記で定義されたモジュールの 名前 になります。 |
いいえ |
services |
レガシー API を使用してユーザーサービスを宣言します。レガシーユーザーサービスの 宣言と構成 を参照してください。バージョン 5.8.0 からは、新しいユーザーサービスを使用することを強くお勧めします。 | いいえ |
beans |
再利用可能な Java Bean コンポーネントを宣言します。ワークフローパッケージ を参照してください。 | いいえ |
ajaxComponents |
Ajax コンポーネントを宣言します。Java API の モジュールでの Ajax コンポーネントの宣言 を参照してください。 | いいえ |
モジュール登録
EBX® によって識別されるためには、アプリケーションサーバーの起動時にモジュールを登録する必要があります。Web アプリケーションの場合、すべての EBX® モジュールは次の条件を満たす必要があります。
-
クラス
ModuleRegistrationListenerを拡張するアノテーション@WebListenerを持つ Java クラスが含まれます。注意:@WebListenerアノテーションを使用する場合は、Web アプリケーションのサーブレット 3.0 アノテーションスキャンをアクティブにするようにアプリケーションサーバーが構成されていることを確認してください。詳細については、JSR 315: JavaTM Servlet 3.0 仕様 を参照してください。または -
クラス
ModuleRegistrationServletを拡張するサーブレットを含みます。 -
展開記述子
/WEB-INF/web.xmlでこのサーブレットの標準宣言を行います。 -
展開記述子に次の標準エレメントを追加して、このサーブレットがサーバーの起動時に登録されるようにします -
<load-on-startup>1</load-on-startup>追加の推奨事項と情報 -
ModuleRegistrationServletのメソッドhandleRepositoryStartupを使用すると、モジュールに関連付けられたロガーを設定したり、一般的な JavaScript や CSS リソースなどの追加の動作を定義したりできます。 -
ModuleRegistrationServletを拡張する特定のクラスは、Web アプリケーション内に配置する必要があります (/WEB-INF/classesまたは/WEB-INF/libの下。このクラスは、モジュールに関連付けられたデータモデルで使用される Java クラスをロードするために、アプリケーションのクラスローダーへのフックとして内部的に使用されるため)。 -
アプリケーションサーバーの起動プロセスは非同期で、Web アプリケーション / EBX® モジュールは動的に検出されます。EBX® リポジトリの初期化はこのプロセスに依存しており、使用されているすべてのモジュールの登録を最大無制限の時間待機します。その結果、使用されているモジュールが何らかの理由で展開されていない場合は、EBX® メイン構成ファイルで宣言する必要があります。詳細については、プロパティ モジュールの展開解除宣言 を参照してください。
-
すべてのモジュールの登録と登録解除は、
log.kernelカテゴリに記録されます。 -
モジュールのロード中に例外が発生した場合、その原因はアプリケーションサーバーログに書き込まれます。
-
サーブレットがサービスを停止すると、モジュールは登録解除され、データモデルと関連するデータセットは使用できなくなります。ホットデプロイメント/アンデプロイメントは サポートされません。
展開記述子の例
以下は、Jakarta EE 展開記述子 (
/WEB-INF/web.xml) の例です。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
version="6.0">
<servlet>
<servlet-name>InitEbxServlet</servlet-name>
<servlet-class>com.foo.RegisterServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
</web-app>
登録例
以下は
ModuleRegistrationServlet の実装例です。
package com.foo;
import jakarta.servlet.*;
import jakarta.servlet.http.*;
import com.onwbp.base.repository.*;
public class RegisterServlet extends ModuleRegistrationServlet
{
public void handleRepositoryStartup(ModuleContextOnRepositoryStartup aContext)
throws OperationException
{
// Perform module-specific initializations here
...
// Declare custom resources here
aContext.addExternalStyleSheetResource(MyCompanyResources.COMMON_STYLESHEET_URL);
aContext.addExternalJavaScriptResource(MyCompanyResources.COMMON_JAVASCRIPT_URL);
aContext.addPackagedStyleSheetResource("myModule.css");
aContext.addPackagedJavaScriptResource("myModule.js");
}
public void handleRepositoryShutdown()
{
// Release resources of the current module when the repository is shut down here
...
}
public void destroyBeforeUnregisterModule()
{
// Perform operations when this servlet is being taken out of service here
...
}
}
パッケージ化されたリソース
パッケージ化されたリソースは、クライアントブラウザーから直接アクセスでき、
osd:resource フィールドまたは Java API 経由で管理および指定できるファイルとドキュメントです。さまざまなタイプがあり、ローカライズすることもできます。
以下も参照してください。:
ディレクトリ構造
パッケージ化されたリソースは、次のディレクトリ構造の下に配置する必要があります。
-
最初のレベルでは、ディレクトリ
/www/がモジュール (Web アプリケーション) のルートに配置されている必要があります。 -
2 番目のレベルでは、ディレクトリはローカリゼーションを指定する必要があります。次のようになります。
-
common/には、ロケールに依存しないため、またはデフォルトのローカリゼーションとして使用されるすべてのリソースが含まれている必要があります (EBX®では、デフォルトのローカリゼーションはen、つまり英語です)。 -
{lang}/は、その下にあるリソースのローカリゼーションが必要な場合に使用します。{lang}は実際のロケールコードに置き換えられます。これは、EBX®でサポートされているロケールに対応している必要があります。詳細については、EBX® ローカリゼーションの構成 を参照してください。
-
-
3 番目のレベルでは、ディレクトリはリソースタイプを指定する必要があります。次のようになります。
-
JavaScript リソースの場合は
jscripts/です。 -
stylesheets/はカスケードスタイルシート (CSS) リソース用です。 -
HTML リソースの場合は
html/です。 -
アイコン型のリソースの場合は
icons/です。 -
画像型のリソースの場合は
images/です。
-
例
この例では、画像
logoWithText.jpg のみがローカライズされるリソースです。
/www
├── common
│ ├── images
│ │ ├── myCompanyLogo.jpg
│ │ └── logoWithText.jpg
│ ├── jscripts
│ │ └── myCompanyCommon.js
│ └── stylesheets
│ └── myCompanyCommon.css
├── de
│ └── images
│ └── logoWithText.jpg
└── fr
└── images
└── logoWithText.jpg