私はいくつかのビジネスメソッドを呼び出すサーブレットを持っており、このサーブレットプロセスごとに一意のトランザクションIDを生成する必要があります。このトランザクションIDをビジネスメソッドに渡す必要があります。サーブレットから呼び出しビジネスメソッドに値を渡す方法はありませんか?
解決策の1つは、このトランザクションIDをパラメータとしてすべてのビジネスメソッドに渡すことです。しかし、コードが冗長で不必要なので、これは良い解決策ではありません。
私はいくつかのビジネスメソッドを呼び出すサーブレットを持っており、このサーブレットプロセスごとに一意のトランザクションIDを生成する必要があります。このトランザクションIDをビジネスメソッドに渡す必要があります。サーブレットから呼び出しビジネスメソッドに値を渡す方法はありませんか?
解決策の1つは、このトランザクションIDをパラメータとしてすべてのビジネスメソッドに渡すことです。しかし、コードが冗長で不必要なので、これは良い解決策ではありません。
サーブレット内のスレッドローカル変数として追加し、他の場所でアクセスすることができます。それぞれの着信要求は新しいスレッドを生成し、スレッドローカル変数はそのスレッドだけでローカルになります
あなたの答えをありがとう、私はユーザー固有の値を格納するスレッドローカルを使用しています。 – Rohit
私はこれをThreadLocalを使用して解決しました。
スレッドローカルは、要求スコープまたはセッションスコープのようなアクセスのスコープと考えることができます。これはスレッドスコープです。スレッドローカルの任意のオブジェクトを設定できます。このオブジェクトは、このオブジェクトにアクセスする特定のスレッドに対してグローバルでローカルになります。私はこれを修正するためにthis articleを参照しました。
idをプロパティに割り当てて、どこにでもアクセスします。 – Satya
パラメータなしでビジネスメソッドを呼び出すサーブレットをパラメータとして渡す必要がないアプローチがあります。このようなメソッドでtransactionidやその他のプロパティ(loguserNameやroleなど)を取得する方法 – Rohit
プロパティファイルでプロパティを定義します。これで、getProperty()を使って戦争中のすべてのサーブレット/クラスからアクセスできます。いいですね? – Satya