Sql server 2008 r2 如何为AspectJ设置JAVA_选项,使其在Tomcat中作为Windows服务器上的服务运行?

Sql server 2008 r2 如何为AspectJ设置JAVA_选项,使其在Tomcat中作为Windows服务器上的服务运行?,sql-server-2008-r2,tomcat7,aspectj,catalina,java-opts,Sql Server 2008 R2,Tomcat7,Aspectj,Catalina,Java Opts,问题 我需要将AspectJ代码集成到运行在Tomcat上的现有应用程序中,但我认为我没有正确设置JAVA_选项 我们的供应商已经创建了一些AspectJ代码,将登录的用户id信息传递到MSSQLServer连接中的CONTEXT_INFO()对象。这样,在我们创建的审计数据库触发器中,我们可以捕获进行更改的用户id 我所做的 在数据库触发器中添加了以下代码 声明@appUserID INT SET@appUserID=ISNULL(替换(CONVERT(VarChar(128),CONTEXT

问题

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

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

我所做的

  • 在数据库触发器中添加了以下代码

    声明@appUserID INT

    SET@appUserID=ISNULL(替换(CONVERT(VarChar(128),CONTEXT_INFO()),CHAR(0),“”,'0')

  • aspectjrt.jar添加到web应用程序web-INF\lib文件夹

  • vendorAspectJCode.jar添加到web应用程序web-INF\lib文件夹
  • 将aspectjweaver.jar添加到tomcat的lib文件夹\tomcat7.0.27\lib
  • 编辑了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_选项:

    set JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG%
    set JAVA_OPTS="-javaagent:D:\tomcat\tomcat7.0.27\lib\aspectjweaver.jar"
    
    但这似乎也没有奏效

    进行以下更改并通过web应用程序前端运行测试后,插入到数据库中的用户id为0,因此这告诉我有些事情没有做对,我对上述所有步骤感到不舒服的部分是步骤5

  • 有人知道设置JAVA_OPTS的语法是否正确吗
  • 或者是否有其他地方可以放置它

  • 经过多次尝试和错误,我发现了如何将AspectJ集成到Tomcat中,并在Windows服务器上作为服务运行。我不知道为什么,但大胆的东西是我的问题的原因

    当然,正如我在上面的问题中提到的,您需要以下先决条件:

  • 将aspectjrt.jar添加到web应用程序web-INF\lib文件夹中
  • vendorAspectJCode.jar添加到web应用程序web-INF\lib文件夹
  • 将aspectjweaver.jar添加到tomcat的lib文件夹\tomcat7.0.27\lib
  • 服务.bat中设置-javaagent:PathToMyAspectjweaver\aspectjweaver.jar无效。因此,我必须将其与卸载/安装Tomcat服务一起设置在注册表中,以便进行如下更改:

  • 首先,我建议关闭UAC,并确保您是管理员
  • 停止运行的Tomcat服务
  • 删除tomcat服务
  • 在Windows服务中验证该服务是否不再存在
  • 验证Windows注册表是否删除了与服务相关的所有内容。如果没有,请手动执行
  • 安装Tomcat服务
  • 在Windows服务中验证已创建服务
  • 在注册表中查找服务并编辑变量Optionsapppending,如下所示:

    -javaagent:PathToMyAspectjweaver\aspectjweaver.jar

  • 我已经为这些步骤创建了几个bat文件。第2步和第3步看起来与下面类似(TomcatServiceUninstall.bat):

    步骤6看起来是这样的(TomcatServiceInstall.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. 
    
    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