1

问题

我需要将 AspectJ 代码集成到在 Tomcat 上运行的现有应用程序中,但我认为我没有正确设置 JAVA_OPTS。

我们的供应商创建了一些 AspectJ 代码,将登录的用户 ID 信息传递给 MSSQLServer Connection 中的 CONTEXT_INFO() 对象。这样一来,在我们创建的审计数据库触发器中,我们就可以捕获进行更改的用户 ID。

我做了什么

  1. 将以下代码添加到我们的数据库触发器中

    声明 @appUserID INT

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

  2. 将aspectjrt.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. aspectjrt.jar添加到 Web 应用程序 WEB-INF\lib 文件夹。
  2. vendorAspectJCode.jar添加到 Web 应用程序 WEB-INF\lib 文件夹。
  3. aspectjweaver.jar添加到 tomcat 的 lib 文件夹 \tomcat7.0.27\lib

service.bat中设置-javaagent:PathToMyAspectjweaver\aspectjweaver.jar不起作用。所以我必须在注册表中设置它以及卸载/安装Tomcat 服务,以便通过执行以下操作来获取更改:

  1. 首先,我建议关闭UAC并确保您是管理员
  2. 如果正在运行,请停止Tomcat 服务。
  3. 删除tomcat服务。
  4. 在 Windows 服务中验证该服务不再存在。
  5. 验证Windows 注册表是否已删除与服务相关的所有内容。如果没有,请手动执行此操作。
  6. 安装Tomcat 服务。
  7. 在 Windows 服务中验证该服务是否已创建。
  8. 在注册表中找到该服务并编辑附加以下内容的变量选项

    -javaagent:PathToMyAspectjweaver\aspectjweaver.jar

我为这些步骤创建了几个 bat 文件。第 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 回答