java - 使用 Inspektr 审核 Spring 应用程序时无输出 - 不使用 CAS

标签 java spring

我花了很多天的时间尝试让 Inspektr 审核 ( https://github.com/dima767/inspektr/wiki/Inspektr-Auditing ) 与我的 Spring 应用程序配合使用。我能找到的所有示例似乎都涉及 CAS,但我的应用程序使用 spring security 进行身份验证。

目前,我只是想在代码的其余部分添加审计语句之前进行一个小测试。但当我运行测试时,没有输出,没有错误,而且我已经没有想法了。如果不使用 CAS,还可以使用 Inspektr 吗?我正在使用一个简单的 JUnit 对其进行测试(以允许在 eclipse 中进行快速测试) - junit 只是创建可审计类并调用可审计方法。该类本身运行良好 - 我只是没有得到任何输出。

真心希望有人能帮忙!

这是我的 xml(这是我的第一篇文章,如果格式不正确,请道歉):

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:tx="http://www.springframework.org/schema/tx"
        xmlns:c="http://www.springframework.org/schema/c"
        xmlns:util="http://www.springframework.org/schema/util"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
                http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
                http://www.springframework.org/schema/aop
                http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
                http://www.springframework.org/schema/tx
                http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
                http://www.springframework.org/schema/util 
                http://www.springframework.org/schema/util/spring-util-3.2.xsd">

<!-- Entry for Inspektr Audit Logging Functionality -->
    <aop:aspectj-autoproxy />

    <!-- ***************AUDIT TRAIL MANAGERS*************** -->
    <bean id="loggingAuditTrailManager" class="com.github.inspektr.audit.support.Slf4jLoggingAuditTrailManager"/>
    <bean id="consoleAuditTrailManager" class="com.github.inspektr.audit.support.ConsoleAuditTrailManager"/>
    <bean id="jdbcAuditTrailManager" class="com.github.inspektr.audit.support.JdbcAuditTrailManager">
        <constructor-arg index="0" ref="inspektrTransactionTemplate" />
        <property name="dataSource" ref="dataSource" />
    </bean>

    <util:list id="auditTrailManagers" value-type="java.lang.String">
        <ref bean="loggingAuditTrailManager"/>
        <ref bean="consoleAuditTrailManager"/>
        <ref bean="jdbcAuditTrailManager"/>
    </util:list>


    <!-- ***************AUDIT ACTION RESOLVERS*************** -->
    <bean id="defaultActionResolver" class="com.github.inspektr.audit.spi.support.DefaultAuditActionResolver">
        <constructor-arg index="0" value="_SUCCEEDED"/>
        <constructor-arg index="1" value="_FAILED"/>
    </bean>


    <util:map id="auditActionResolversMap">
        <entry key="DEFAULT_ACTION_RESOLVER" value-ref="defaultActionResolver" />
    </util:map>


    <!-- ***************AUDIT RESOURCE RESOLVERS -->
    <util:map id="auditResourceResolversMap">
        <entry key="DEFAULT_RESOURCE_RESOLVER">
            <bean
                class="com.github.inspektr.audit.spi.support.ReturnValueAsStringResourceResolver" />
        </entry>
    </util:map>

    <!-- ***************PRINCIPAL RESOLVERS*************** -->
    <bean id="anonymousPrincipalResolver" class="myapp.service.helper.AnonymousPrincipalResolver"/>
<!--     <bean id="springSecurityAuditablePrincipalResolver" class="org.inspektr.audit.spi.support.SpringSecurityAuditablePrincipalResolver"/> -->


    <!-- ***************SETTINGS REQUIRED FOR JDBC AUDIT MANAGER -->
    <bean id="inspektrTransactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
        <property name="transactionManager" ref="inspektrTransactionManager" />
        <property name="timeout" value="5" />
    </bean>

    <bean id="inspektrTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>

    <bean id="isolationReadCommitted" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
        <property name="staticField" value="org.springframework.transaction.TransactionDefinition.ISOLATION_READ_COMMITTED"/>
    </bean>


    <!-- ***************MAIN AUDIT ASPECT*************** -->
    <bean id="auditTrailManagementAspect" class="com.github.inspektr.audit.AuditTrailManagementAspect"
        c:applicationCode="MYAPP_WEB_APPLICATION"
        c:auditablePrincipalResolver-ref="anonymousPrincipalResolver"
        c:auditTrailManagers-ref="auditTrailManagers"
        c:auditActionResolverMap-ref="auditActionResolversMap"
        c:auditResourceResolverMap-ref="auditResourceResolversMap" />

    <!-- ***************DEFINE AUDITABLE BEANS*************** -->
    <bean id="simpleService" class="myapp.service.helper.SimpleAuditExample"/>


</beans>

这是尝试创建审核记录的类:

package myapp.service.helper;

import com.github.inspektr.audit.annotation.Audit;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.transaction.TransactionDefinition;

public class SimpleAuditExample {

    private static final Logger logger = LoggerFactory.getLogger(SimpleAuditExample.class);

    public SimpleAuditExample() {

    }

    @Audit(action = "SIMPLE_ACTION", actionResolverName = "DEFAULT_ACTION_RESOLVER", resourceResolverName = "DEFAULT_RESOURCE_RESOLVER")
    public String performAuditableActionGetString() {
        return "Well, here is some simple value";
    }
}

最佳答案

将您的auditTrailManagementAspect修改为如下所示:-

<bean id="auditTrailManagementAspect" class="com.github.inspektr.audit.AuditTrailManagementAspect">
        <!-- String applicationCode -->
        <constructor-arg index="0" value="MY_aPPLICATION"/>

        <!-- PrincipalResolver -->
        <constructor-arg index="1" ref="anonymousPrincipalResolver"/>

        <!-- List<AuditTrailManager> auditTrailManagers -->
        <constructor-arg index="2">
            <list>

                <ref bean="jdbcAuditTrailManager"/>
                <ref bean="consoleAuditTrailManager"/>
            </list>
        </constructor-arg>


        <!-- Map<String,AuditActionResolver> auditActionResolverMap -->
        <constructor-arg index="3">
            <map>
                <entry key="DEFAULT_ACTION_RESOLVER">
                    <ref local="defaultActionResolver"/>
                </entry>
            </map>
        </constructor-arg>

        <!-- Map<String,AuditResourceResolver> auditResourceResolverMap -->
        <constructor-arg index="4">
            <map>
                <entry key="DEFAULT_RESOURCE_RESOLVER">
                    <bean class="com.github.inspektr.audit.spi.support.ObjectToStringResourceResolver"/>
                </entry>
            </map>
        </constructor-arg>
    </bean>

除此之外,inspektr 还期望您的数据库中有一个名为 COM_AUDIT_TRAIL 的数据库表。有关进一步引用,请查看此链接: https://wiki.jasig.org/display/CASUM/Auditing+and+Statistics+Via+Inspektr

关于java - 使用 Inspektr 审核 Spring 应用程序时无输出 - 不使用 CAS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20645641/

相关文章:

java - 考虑从 Java/Spring MVC 迁移到 Grails

java - 引发了 SQLException,java.lang.InterruptedException,我的数据库连接用完了吗?

java - Spring Saml 中的显式 SAML 属性

java - java中switch语句的最佳替代选择

java - Java 中的吃 bean 迷宫

java - 使用 Spring 命名空间配置时出错

java - 我们可以使用带有破折号 `-` 或下划线 `_` 的 spring-boot 外部配置文件名吗?

java - 连接池有什么用,有什么害处吗?

java - JDK 9 的 Hibernate 5 问题

Java使用嵌套for循环打印带有旋转数字的数字方 block