2016-07-28 3 views
0

私はEJBを初めとしており、いくつかの疑念を明確にしたいと考えています。EJBクライアントはどこにあり、EJBコンテナはアプリケーションサーバにありますか

アプリケーションサーバーでは、EJBコンテナ + (サーブレットとJSP)などがあります。

EJBコンテナにはEJBコンポーネントがあり、EJBコンポーネントにはEJBがあります。

私の質問は、EJBクライアントがどこにあるかです。 同じアプリケーションサーバーおよび/または他のアプリケーションサーバーに存在しますか? EJBの@Localと@Remoteは何ですか?

答えて

0

EJBサービスのクライアントは、ほぼすべての場所にある可能性があります。クライアントは、同じアプリケーション内の他のEJBサービスまたはCDI Bean、または同じアプリケーションサーバー上の他のアプリケーション、または別のマシンやJVM上の単純なJava SEアプリケーションであってもかまいません。 クライアントは単にEJBサービスを使用する「モジュール」です。

@Local/@Remoteでは、セッションBeanのビジネスインターフェイスを指定します。特に、別のJVM上のスタンドアロンJava SEアプリケーションのような外部クライアントからEJBサービスを使用する場合は、@ Remoteを使用してビジネスインタフェースを指定する必要があります。

+0

異なるJVMは、異なるアプリケーションサーバーを意味しますか?同じアプリケーションサーバー上の他のアプリケーションがどういう意味ですか?どのような他のアプリケーションが存在するか教えてください。 –

+0

JVMが何であるか知っていますか? (https://en.wikipedia.org/wiki/Java_virtual_machine).. Java Application Serverは複数のアプリケーションをホストできます。アプリケーションサーバーでホストされている他のアプリケーションの1つのアプリケーションから、EJBサービスをユーザーに割り当てることができます。 – stg

0

サーバーインスタンスを起動すると、完全なサーバーは同じJVMで実行されますが、いくつかの異なるアプリケーションが含まれている可能性があります。 異なるサーバーまたは異なるJVMは同じ意味です。

WildFlyドメインモードを検討すると少し複雑です。ここでは1つのインスタンスを開始しますが、このインスタンスは制御者であり、1〜n個のサーバーのインスタンスを開始する可能性があります。

@Localインターフェイスを使用する場合は、クライアントとサーバーを同じインスタンスに配置する必要があります(ただし、異なるアプリケーションにすることもできます)。

@Remoteを使用する場合は、同じインスタンスまたは別のインスタンスにすることができ、パラメータに「値で呼び出す」か「参照で呼び出す」かどうかによって構成によって異なります。 呼び出しのためにコンテナまたはアプリケーションがコンフィグレーションされている必要があります。つまり、接続の外部ホストとポートを指定する必要があります。

関連する問題