1

問題

Tomcat で実行されている既存のアプリケーションに AspectJ コードを統合する必要がありますが、JAVA_OPTS を正しく設定していないと思います。

当社のベンダーは、ログインしたユーザー ID 情報を MSSQLServer 接続内の CONTEXT_INFO() オブジェクトに渡す AspectJ コードをいくつか作成しました。これは、作成した監査データベース トリガー内で、変更を行ったユーザー ID をキャプチャできるようにするためです。

私がやった事

  1. データベーストリガーに次のコードを追加しました

    DECLARE @appUserID INT

    SET @appUserID = ISNULL(REPLACE(CONVERT(VarChar(128), CONTEXT_INFO()),CHAR(0), ''), '0');

  2. spectjrt.jarを Web アプリケーションの WEB-INF\lib フォルダーに追加しました。

  3. vendorAspectJCode.jarを Web アプリケーションの WEB-INF\lib フォルダーに追加しました。
  4. aspectjweaver.jarを tomcat の lib フォルダー\tomcat7.0.27\libに追加しました
  5. 次の内容でcatalina.batを編集しました。

次のようなコード行があります。

set JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG%

私はそれをに変更しました

 set JAVA_OPTS=”%JAVA_OPTS% %LOGGING_CONFIG% -javaagent:D:\tomcat\tomcat7.0.27\lib\aspectjweaver.jar"

しかし、うまくいかないようでした。

それで、新しいセット JAVA_OPTS を追加して、そのように設定しようとしました:

set JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG%
set JAVA_OPTS="-javaagent:D:\tomcat\tomcat7.0.27\lib\aspectjweaver.jar"

しかし、それもうまくいかなかったようです

次の変更を行い、Web アプリケーションのフロント エンドを介してテストを実行した後、データベースに挿入されたユーザー ID は0でした。これは、何かが正しく行われていないことを示しており、すべてについてあまり快適ではないと感じている部分です。上記の手順はステップ 5 でした。

  1. JAVA_OPTS を設定するための構文が正しいかどうかは誰にもわかりませんか?
  2. またはそれを置く別の場所があるかどうか?
4

1 に答える 1

0

多くの試行錯誤の末、AspectJ をWindows サーバーでサービスとして実行されているTomcat に統合する方法を見つけました。理由はわかりませんが、太字のものが問題の原因でした。

もちろん、上記の質問で述べたように、次の前提条件が必要です。

  1. spectjrt.jarを Web アプリケーションの WEB-INF\lib フォルダーに追加します。
  2. vendorAspectJCode.jarを Web アプリケーションの WEB-INF\lib フォルダーに追加します。
  3. spectjweaver.jarを tomcat の lib フォルダー \tomcat7.0.27\libに追加します。

-javaagent :PathToMyAspectjweaver\aspectjweaver.jarservice.batに設定しても機能しませんでした。そのため、次のようにして変更を取得するには、Tomcat サービスをアンインストール/インストールするとともに、レジストリに設定する必要がありました。

  1. まず、UACをオフにして、自分が管理者であることを確認することをお勧めします
  2. 実行中の場合は、Tomcat サービスを停止します。
  3. tomcat サービスを削除します。
  4. サービスが存在しないことを Windows サービスで確認します。
  5. サービスに関連するすべてが削除されたことを Windows レジストリで確認します。そうでない場合は、手動で行ってください。
  6. Tomcat サービスをインストールします。
  7. サービスが作成されたことを Windows サービスで確認します。
  8. レジストリでサービスを見つけて、変数Optionsを編集し、以下を追加します。

    -javaagent:PathToMyAspectjweaver\aspectjweaver.jar

これらの手順のためにいくつかのバッチ ファイルを作成しました。ステップ 2 と 3 は、次のようになります ( TomcatServiceUninstall.bat )。

echo OFF
ECHO Removing Tomcat Service...
sc stop YourServiceName
sc delete YourServiceName
ECHO Removing Registry Key containing config data for Tomcat7
REG DELETE "HKLM\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\YourServiceName" /f
REG DELETE "HKLM\SOFTWARE\Wow6432Node\Apache Software Foundation\Tomcat\7.0" /f
ECHO Uninstall Complete - File Directories remain intact. 

ステップ 6 は次のようになります ( TomcatServiceInstall.bat )

ECHO OFF
ECHO Running Service.bat to install the Tomcat 7 - YourServiceName - Service
cd "C:\Path to your tomcat\tomcat7.0.27\bin"
service.bat install
于 2013-06-13T14:54:38.597 に答える