5.18.2. InVM の制限事項
InVM は、サービス間通信を促進するために使用される内部データ構造を最適化することにより、パフォーマンス上の利点を実現します。たとえば、メッセージを格納するために使用されるキューは永続的ではありません。つまり、障害が発生した場合にメッセージが失われる可能性があります。
さらに、キューが空になる前にサービスがシャットダウンされた場合には、それらのメッセージは配信されません。JBossESB ではサービスを複数の異なるトランスポートで同時に呼び出すことができるため、特定のメッセージタイプに適したトランスポートを選択することで高いパフォーマンスと信頼性を実現できるようにサービスを設計できます。
デフォルトでは、InVM トランスポートは参照によってメッセージを渡します。場合によっては、これが原因でデータの整合性の問題が発生する可能性があります。メッセージが ClassLoader 境界で交換される、クラスキャストの問題も言うまでもありません。
問題のサービスの inVMPassByValue プロパティーを true に設定することで、値によるメッセージの受け渡し (上記のような問題を回避する) をオンにすることができます。