在shiro doGetAuthorizationInfo方法

时间:2016-03-30 04:38:56

标签: spring authorization shiro

我几天遇到一个奇怪的错误,仍然困惑,详情如下:

我在春天使用 apache shiro

经过一番工作,我准备好设置" doGetAuthorizationInfo "方法,因为我使用" @ RequiresRoles"在我的控制器中,

我发现如果我多次调用XXXService(或任何服务),就会发生异常(第一次调用XXXService,一切正常),所以,我试着测试" doGetAuthenticationInfo "在用于登录的同一个Realm中,我在方法中多次调用XXXService或其他服务,它工作正常,

我还尝试更改不同的数据源组件

所以我认为它不是数据源组件错误,

我没有找到原因。

当我使用dbcp datasource时,异常如下:

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.

没有其他人造成例外。

其他任何地方都没有发现这个问题。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

经过一天多的努力,我找到了一些东西, 我正在使用dataSourceProxy:

<bean id="dataSourceProxy"
    class="org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy">
    <property name="targetDataSource" ref="dataSource" />
</bean>

<bean id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSourceProxy" />
...
</bean>

当我更改为initManagerFactory的原始数据源bean时:

<bean id="entityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource" />
    ...
</bean>

错误消失。