4.2.29. メッセージのシリアル化に関するアドバイス


各エンタープライズサービスバスコンポーネントはすべてのメッセージを Java オブジェクトのコレクションとして扱いますが、多くの場合、これらのメッセージをシリアライズする必要があります。次の場合に行います。
  • データが保存される
  • メッセージが異なる ESB プロセス間で送信される
  • デバッグしている
JBoss Enterprise SOA Platform は、要件が各デプロイメントの固有の特性に影響されるので、メッセージのシリアライゼーションに特定の形式を 1 つ使用する必要はありません。org.jboss.soa.esb.message.format.MessageFactory クラスから org.jboss.soa.esb.message.Message インターフェイスのさまざまな実装を取得できます。
  public abstract class MessageFactory
{
	public abstract Message getMessage ();
	public abstract Message getMessage (URI type);
	public abstract void reset();
	public static MessageFactory getInstance ();
}
ユニフォームリソースインジケーターは、メッセージのシリアライゼーションの実装を一意に識別します。新しいインスタンスを作成するときに実装を指定するか、事前設定されたデフォルトを使用します。
シリアル化されたメッセージ形式には、JBOSS_XML と JBOSS_SERIALIZED の 2 つがあります。
MessageType.JBOSS_XML
この実装は、メッセージの XML 表現を使用します。メッセージのスキーマは、schemas/message.xsd ファイルで定義されます。任意のオブジェクトをメッセージに追加できます。つまり、シリアライズ可能である必要はありません。したがって、メッセージをシリアライズする必要がある場合に、そのようなオブジェクトを XML との間でマーシャリングおよびアンマーシャリングするメカニズムを提供する必要がある場合があります。org.jboss.soa.esb.message.format.xml.marshal.MarshalUnmarshalPlugin を介してこれを行います。
          public interface MarshalUnmarshalPlugin
{
	public static final String MARSHAL_UNMARSHAL_PLUGIN =
				 "org.jboss.soa.esb.message.format.xml.plugin";
	public boolean canPack(final Object value);
	public boolean marshal (Element doc, Object param)
											throws MarshalException;

	public Object unmarshal (Element doc) throws UnmarshalException;

	public URI type ();
}
MessageType.JAVA_SERIALIZED
これがデフォルトです。この実装では、メッセージのすべてのコンポーネントがシリアライズ可能である必要があります。また、メッセージの受信者が (Java クラスを介して) デシリアライズできる十分な情報を持っている必要があります。その URI は urn:jboss/esb/message/type/JAVA_SERIALIZED です。
メッセージの XML 表現を使用します。メッセージのスキーマは、schemas/message.xsd ファイルで定義されます。その URI は urn:jboss/esb/message/type/JBOSS_XML です。
また、すべてのコンテンツが Java シリアライズ可能である必要があります。シリアル化できないオブジェクトをメッセージに追加しようとすると、 IllegalParameterException エラーが発生します。
その URI は urn:jboss/esb/message/type/JAVA_SERIALIZED です。
重要
特定のサービス実装とお使いのアプリケーションを関連付けることができるので、メッセージ形式の JBOSS_SERIALIZED バージョンを使用する場合は注意してください。
org.jboss.soa.esb.message.format.MessagePlugin を介して実行時に他のメッセージ実装を提供できます。
    public interface MessagePlugin
{
	public static final String MESSAGE_PLUGIN =	
						 "org.jboss.soa.esb.message.format.plugin";
	public Object createBodyType(Message msg, String type);
	public Message getMessage ();
	public URI getType ();
}
各プラグインは、getType メソッドを使用して、(getMessage を介して) 提供するメッセージ実装のタイプを一意に識別する必要があります。プラグインの実装は、jbossesb-properties.xml ファイルを介してシステムに識別される必要があります。(org.jboss.soa.esb.message.format.plugin 拡張子を持つプロパティー名を使用します。)

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る