我正在开发Web应用程序,需要访问postgresql数据库。
出于某种原因,我需要为每个经过身份验证的用户建立单独的连接。
我当前的数据源设置如下:
<datasource jndi-name="java:jboss/ds" pool-name="ds-pool" enabled="true">
<connection-url>jdbc:postgresql://192.168.1.2:5432/springdb</connection-url>
<driver>postgresql-driver</driver>
<pool>
<min-pool-size>5</min-pool-size>
<max-pool-size>30</max-pool-size>
</pool>
<security>
<user-name>postgres</user-name>
<password>postgres</password>
</security>
</datasource>
在java代码中我这样做:
@Resource(lookup = "java:jboss/ds")
DataSource ds;
conn = ds.getConnection(username, password);
这就是问题所在。每个getConnection调用在jboss控制台中生成以下WARN:
> 14:07:48,665 WARN
> [org.jboss.jca.core.connectionmanager.pool.strategy.OnePool] (default
> task-11) IJ000612: Destroying connection that could not be
> successfully matched:
> org.jboss.jca.core.connectionmanager.listener.TxConnectionListener@7de0e076[state=NORMAL
> managed
> connection=org.jboss.jca.adapters.jdbc.local.LocalManagedConnection@763ace0a
> connection handles=0 lastUse=1382422068665 trackByTx=false
> pool=org.jboss.jca.core.connectionmanager.pool.strategy.OnePool@36c78449
> mcp=SemaphoreArrayListManagedConnectionPool@64bdf0b7[pool=ds-pool]
> xaResource=LocalXAResourceImpl@ead2f2a[connectionListener=7de0e076
> connectionManager=26e60dae warned=false currentXid=null
> productName=PostgreSQL productVersion=9.3.3 jndiName=java:jboss/ds]
> txSync=null]
我已尝试将允许多个用户添加到池配置,但在jboss 7中我收到了xml解析错误,并且wildfly 8它什么都不做。
那么有没有办法在jboss中获得多个用户连接池?
答案 0 :(得分:3)
似乎我明白了。因此,要在连接池中启用多个用户,需要在数据源定义中添加以下内容:
<allow-multiple-users>true</allow-multiple-users>
而不是:
<allow-multiple-users/>
Wildfly 8.0.0