2009-08-31 8 views
2

私たちは、Java EEベースのアプリケーションの開発に取り組んでいます。当社のアプリケーションはJava 1.5と互換性があり、EBJ 3.0およびWeb Servicesフィーチャー・パックを使用してWAS ND 6.1.0.21にデプロイされます。構成は現在、2つのクラスタを持つ1つのセルです。各クラスタには2つのノードがあります。WebSphere Application Server EJBの最適化

私たちのアプリケーションまたは私たちのシステムは、私が言うべきであるように、2つまたは3つの部分に分かれています。

パート1:サードパーティのベンダーコードとカスタマイズコードを組み合わせた1つのクラスタに展開された耳。そのコードはEJB 2.0に準拠しており、多くのリモートホームインタフェースを備えています。

パート2:最初の耳と同じクラスターに展開された耳。この耳には、ベンダーから提供されたEJB 2とカスタムコードを呼び出すEBJ 3が含まれています。これらのEJB 3は、EARとともにパッケージ化されたJSF UIで使用され、一部は他のクライアントに対してWebサービス(SOAP 1.2準拠のJAX-WS 2.0)として公開されます。

パート3:ベンダー/カスタムコードアプリに依存しない他のサービスがある可能性があります。これらのサービスは、他のクラスタにデプロイされるEJB 3.0およびWebサービスになります。

サイト内の一部のIBMスタッフの推奨によれば、クラスタ内のノード間の通信はEJB RMIにすることができます。しかし、クラスタやその他のセルを横断している場合、通信はWebサービスでなければなりません。

私たちの中には、WebサービスとEJBを使用するアプリケーションの高速化のためのパフォーマンスと通信の最適化についての疑問がある人がいます。現在、ほとんどのEJBはリモートとして公開されています。 (そして、私たちのベンダーはローカルのホームインターフェースを公開するのではなく、そのように設定しています)。 WASが同じノード/クラスタノード空間内のアプリケーション間で最適化を行うかどうかは疑問です。 2つのアプリが同じエリアにインストールされていて、リモートホームインターフェースを介してお互いに電話をかけている場合、ローカルのホームインターフェースコールになるほどスマートですか?

他の最適化手法はありますか?私たちはそれらを考慮する必要がありますか?私たちはしないべきですか?コスト/メリットは何ですか?

質問:EJBをリモートEJBとして開発すると、UIコントローラのコードがEJB3経由でEXT Javaサービスと通信しているとします。 EJBサーバーとクライアントの両方が同じコンテナで実行されている場合のパフォーマンス最適化のオプションは何ですか?

googleは、同じアプリケーションサーバーのJVMに入っているときに、EJB通信の参照呼び出しを有効にするために設定できるチューニング構成について説明している、2000年のwebsphereのパフォーマンスチューニングに関するドキュメントをいくつか教えてくれました。

EJBは本質的に位置に依存しないため、リモートプログラミング モデルを使用します。メソッドのパラメータと戻り値は、RMI-IIOPでシリアル化され、値によって が返されます。これは、本来のRMI「Call By Value」モデルです。

WebSphereは、同じアプリケーション・サーバーJVM内のEJB およびクライアント(通常はサーブレット)を実行するための「ローカル・コピーなし」のパフォーマンス最適化を提供します。 「No Local Copies」オプションは、「参照による呼び出し」を使用し、クライアントとリモートオブジェクトの両方が同じプロセスにある場合に、呼び出された オブジェクトのローカルプロキシを作成しません。ワークロードに応じて に応じて、オーバーヘッドを大幅に節約できます。

設定「いいえローカルコピー」 にアプリケーション・サーバーのJVM、次の2つのコマンドラインパラメータを追加することによって:

* -Djavax.rmi.CORBA.UtilClass=com.ibm.CORBA.iiop.Util 
* -Dcom.ibm.CORBA.iiop.noLocalCopies=true 

注意:「ローカルコピー」の設定オプションが「とコール変える することでパフォーマンスを向上させていないが同じJVM内のクライアントとEJBの「参照で呼び出す」に「値」を設定します。 この副作用の1つは、Javaオブジェクトから派生した(プリミティブではない)メソッドパラメータ が、呼び出されたエンタープライズBeanによって実際に変更できることです。図16aを検討する:

また、今後もProcess Server 6.2およびWESB 6.2も使用する予定です。何か案は?勧告?

おかげ

+0

私はこの設定が(参照による呼び出しを有効にする)だけでなく、EJBローカルインタフェースのためのEJBリモートインタフェースには適用さだと思います。 –

答えて

2

本当にリモートEJBのために行うことができる唯一の自動最適化は、彼らが同じ場所に配置されている場合(同じJVM内からアクセス)です。この場合、ORBは、要求がワイヤを通過する必要がある場合に必要となる作業の一部を短絡させます。オブジェクトのシリアライゼーションを含むいくつかの必要なORBオーバーヘッドがあります(noLocalCopiesをオンにしない限り、それがもたらすすべての警告とともに)。

また、UIコントローラがコロケーションされていることがわかっている場合、メソッド呼び出しはパラメータまたは戻り値のコピーに依存せず、インターフェイスはローカルビューとリモートビューの例外の違いに依存しません。 ORB経由のリモートアクセスよりもはるかに高速なローカルサブインタフェースを公開します。

関連する問題