2017-12-01 4 views
0

私はいくつかのビジネスメソッドを呼び出すサーブレットを持っており、このサーブレットプロセスごとに一意のトランザクションIDを生成する必要があります。このトランザクションIDをビジネスメソッドに渡す必要があります。サーブレットから呼び出しビジネスメソッドに値を渡す方法はありませんか?

解決策の1つは、このトランザクションIDをパラメータとしてすべてのビジネスメソッドに渡すことです。しかし、コードが冗長で不必要なので、これは良い解決策ではありません。

+0

idをプロパティに割り当てて、どこにでもアクセスします。 – Satya

+0

パラメータなしでビジネスメソッドを呼び出すサーブレットをパラメータとして渡す必要がないアプローチがあります。このようなメソッドでtransactionidやその他のプロパティ(loguserNameやroleなど)を取得する方法 – Rohit

+0

プロパティファイルでプロパティを定義します。これで、getProperty()を使って戦争中のすべてのサーブレット/クラスからアクセスできます。いいですね? – Satya

答えて

0

サーブレット内のスレッドローカル変数として追加し、他の場所でアクセスすることができます。それぞれの着信要求は新しいスレッドを生成し、スレッドローカル変数はそのスレッドだけでローカルになります

+0

あなたの答えをありがとう、私はユーザー固有の値を格納するスレッドローカルを使用しています。 – Rohit

0

私はこれをThreadLocalを使用して解決しました。

スレッドローカルは、要求スコープまたはセッションスコープのようなアクセスのスコープと考えることができます。これはスレッドスコープです。スレッドローカルの任意のオブジェクトを設定できます。このオブジェクトは、このオブジェクトにアクセスする特定のスレッドに対してグローバルでローカルになります。私はこれを修正するためにthis articleを参照しました。

関連する問題