1

これらの疑問に答えることができた方々に感謝します。J2EEアプリケーションサーバが単一WebServiceコールを提供する方法

プロジェクトのコーディングセッション中に私は疑問に思った。

私の疑いは、J2EE Application Serverがどのように単一のWebService Callを提供しているかということです。

クライアントからWSへの呼び出しが行われると、J2EE ASは新しいスレッドを作成してサービスを提供しますか? WS実装への複数のコールと同時に呼び出すことについて心配する必要はありません。 (これはJavaの操作とメソッドです)

もう一つ疑わしいのは、@Autowired(デフォルトではシングルトンのインスタンス化)です。

通常の方法でSpring Contextを作成しています。web.xmlにContextLoaderListener Springクラスを使用してcontext-spring-xml設定ファイルを参照する通常のタグを入れました。例えば :この場合

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value> 
     classpath:spring-conf/spring-context.xml 
    </param-value> 
</context-param> 

、私は全体Application Serverの単一のインスタンスをしました(シングルトンで)@AutowiredされているすべてのBeanの?または、WSコールが作成されるたびに、スレッドが作成され、単一のスレッドがspring xml configファイル内のすべての定義されたBeanの1つのインスタンスを持ちますか?

ServiceImplementationクラスは、シングルトンとして管理されるSpring Bean自体であるとしましょう。

私たちは、Apache CamelをESB公開サービスConsumerとしてSpringRouteBuilderクラスとして使用します。

ご返信ありがとうございます。

A.

答えて

0

WSへの呼び出しがクライアントによってなされた場合、J2EE ASは、それを提供するために、新しいスレッドを作成? WS実装への複数のコールと同時に呼び出すことについて心配する必要はありません。

右。しかし、あなたはあなたの@Autowiredシングルトンスレッドセーフについて心配する必要があります。 要求/応答の処理中にインスタンス変数を使用してはなりません。設定/設定プロパティのみを持つことができます。

この場合、@Autowired(シングルトンあり)のすべてのBeanに対して、私はApplication Server全体で1つのインスタンスを持っていますか?

いいえ。 これはAS全体ではありません。それはあなたのウェブアプリケーションの範囲内にあります。それはお互いにアプリケーションを分離することです。 つまり、2つの異なるWebアプリケーションのSpringコンテキスト(たとえば、両方のWAR内のweb.xmlのspring-context.xml)で定義された同じ@Autowiredクラス - 各アプリケーションのSpringコンテキストには独自のシングルトンがあります。

関連する問題