[英]JBoss AS 7 Datasource Configuration - Transaction not active
我在standalone.xml中的JBOSS AS 7
上有這個數據源配置:
<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
。 這是我的注銷方法:
import javax.faces.context.ExternalContext;
@Inject ExternalContext ec;
public void validateUserLogOut() {
HttpServletRequest request = (HttpServletRequest)ec.getRequest();
request.getSession().invalidate();
this.setUserLoggedIn(false);
navigation.logout();
}
由於user503413
要求,我承認我犯了一個恥辱的錯誤:我忘了在使用它之后關閉連接( connection.close()
)。 如果你沒有關閉你的連接,它將不會將它返回到池中,因為你已經限制並達到max-pool-size
(在我的情況下為7),不會創建新的連接。 所以這里的教訓總是要確保關閉你的connections
。 也關閉你prepared statements
,否則你會得到內存泄漏 。
我認為你的問題不是數據源(這只是暴露它),而是登錄模塊似乎保持連接打開而不是將它們返回池中這一事實。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.