首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JBoss AS 7数据源配置-事务处于非活动状态

JBoss AS 7数据源配置-事务处于非活动状态
EN

Stack Overflow用户
提问于 2011-12-28 22:07:44
回答 2查看 1.8K关注 0票数 0

我在standalone.xml中的JBOSS AS 7上有这个数据源配置:

代码语言:javascript
复制
<subsystem xmlns="urn:jboss:domain:datasources:1.0">
            <datasources>
                <datasource jndi-name="java:jboss/MyJndiDS" pool-name="MyPoolDS" enabled="true" jta="true" use-java-context="false" use-ccm="true">
                    <connection-url>
                        jdbc:postgresql://192.168.2.125:5432/t_report
                    </connection-url>
                    <driver>
                        org.postgresql
                    </driver>
                    <transaction-isolation>
                        TRANSACTION_READ_COMMITTED
                    </transaction-isolation>
                    <pool>
                        <min-pool-size>
                            3
                        </min-pool-size>
                        <max-pool-size>
                            7
                        </max-pool-size>
                        <prefill>
                            true
                        </prefill>
                        <use-strict-min>
                            false
                        </use-strict-min>
                        <flush-strategy>
                            FailingConnectionOnly
                        </flush-strategy>
                    </pool>
                    <security>
                        <user-name>
                            my_user
                        </user-name>
                        <password>
                            my_pass
                        </password>
                    </security>
                    <statement>
                        <prepared-statement-cache-size>
                            32
                        </prepared-statement-cache-size>
                    </statement>
                </datasource>
...
...
            </datasources>
</subsystem>

当我使用同一个用户登录和注销7次时,下一次尝试登录时,我收到Transaction not active错误。我该如何解决这个问题呢?我不想增加max-pool-size。下面是我的注销方法:

代码语言:javascript
复制
import javax.faces.context.ExternalContext;
@Inject ExternalContext ec;

public void validateUserLogOut() {

    HttpServletRequest request = (HttpServletRequest)ec.getRequest();
    request.getSession().invalidate();
    this.setUserLoggedIn(false);
    navigation.logout();

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-28 23:51:03

我认为您的问题不在于数据源(这只会暴露它),而在于登录模块似乎保持连接打开,而不是将它们返回到池中。

票数 1
EN

Stack Overflow用户

发布于 2013-03-27 17:46:22

由于user503413的要求,我将不光彩地承认我所犯的错误:我在使用它(connection.close())后忘记关闭连接。如果您不关闭您的连接,它将不会将其返回到池中,而且由于您已经限制并到达了max-pool-size (在我的示例中为7),因此不会创建新的连接。所以这里的教训就是一定要关闭你的connections。还要关闭你的prepared statements,否则你会得到一个内存泄漏。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8656931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档