Tomcat连接池 - java.lang.UnsupportedOperationException:不受BasicDataSource支持 [英] Tomcat Connection Pooling - java.lang.UnsupportedOperationException: Not supported by BasicDataSource
问题描述
我尝试过用于连接池的C3po库,但是我为我的代码获取错误信息,例如 abstractMethodError()
,然后决定使用tomcat池。现在我得到了一个
I have tried C3po library for connection pooling but I am gettting errors such as abstractMethodError()
for my code I then decided to go with the tomcat pooling thing. Now I am getting an
java.lang.UnsupportedOperationException: Not supported by BasicDataSource
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1062)
at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:139)
at org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:51)
at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:194)
at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:178)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:522)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1857)
at classes.session.SessionCreate.buildSessionFactory1(SessionCreate.java:24)
at classes.session.SessionCreate.<clinit>(SessionCreate.java:9)
at classes.verifydata.CheckUniqueUserPass.uniqueUserPass(CheckUniqueUserPass.java:16)
at org.apache.jsp.DataGen.CheckUserPassAvailable_jsp._jspService(CheckUserPassAvailable_jsp.java:70)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
10:56:19,762 INFO [http-bio-8081-exec-5] StatisticalLoggingSessionEventListener:275 - Session Metrics {
42607 nanoseconds spent acquiring 1 JDBC connections;
0 nanoseconds spent releasing 0 JDBC connections;
0 nanoseconds spent preparing 0 JDBC statements;
0 nanoseconds spent executing 0 JDBC statements;
0 nanoseconds spent executing 0 JDBC batches;
0 nanoseconds spent performing 0 L2C puts;
0 nanoseconds spent performing 0 L2C hits;
0 nanoseconds spent performing 0 L2C misses;
0 nanoseconds spent executing 0 flushes (flushing a total of 0 entities and 0 collections);
0 nanoseconds spent executing 0 partial-flushes (flushing a total of 0 entities and 0 collections)
}
Jan 06, 2015 10:56:19 AM org.apache.catalina.core.StandardWrapperValve invoke
我拥有Hibernate配置文件
I have the Hibernate configuration file as such
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
<property name="hibernate.connection.datasource">java:comp/env/jdbc/secure_pass</property>
<property name="hibernate.connection.url">connectionurl</property>
<property name="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</property>
<property name="hibernate.connection.username"></property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="net.sf.jasperreports.hql.query.run.type">list</property>
<property name="net.sf.jasperreports.jdbc.fetch.size">50</property>
<property name="net.sf.jasperreports.hql.clear.cache">true</property>
<property name="net.sf.jasperreports.hql.query.list.page.size">50</property>
......
</session-factory>
</hibernate-configuration>
我也有这样的context-xml文件:
I also have the context-xml file as such :
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/DVDStore">
<Resource
auth="Container"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
maxActive="30" maxIdle="10"
maxWait="10000"
name="jdbc/secure_pass"
password=""
type="javax.sql.DataSource"
url="_DEV;"
username="r"/>
</Context>
不要担心这里的值......现在我得到了上面的异常:请帮助。我完成了链接所需的全部功能。
Do not worry about values here... Now I am getting the above exception: Please help. I have done All that which is required as per this link
p>
在我的例子中,开发人员添加了支持测试jar的附带第三方jar的hibernate.properties。
In my case developer had added supporting test jar accompanied with third party jar which had hibernate.properties.
Culprit正在填充属性 hibernate.connection.username 或
hibernate.connection.password
如果这些属性填充非空值,hibernate会调用
If these properties get populated with non null values, hibernate will call
@Override
public Connection getConnection() throws SQLException {
if ( !available ) {
throw new HibernateException( "Provider is closed!" );
}
return useCredentials ? dataSource.getConnection( user, pass ) : dataSource.getConnection();
}
dataSource.getConnection (user,pass)
useCredentials为true
strong> org.apache.commons.dbcp.BasicDataSource 如下所示:
This method in class org.apache.commons.dbcp.BasicDataSource is as follows
public Connection getConnection(String user, String pass) throws SQLException {
// This method isn't supported by the PoolingDataSource returned by
// the createDataSource
throw new UnsupportedOperationException("Not supported by BasicDataSource");
// return createDataSource().getConnection(username, password);
}
属性useCredentials被填充为
Property useCredentials is populated as
user = (String) configValues.get( Environment.USER );
pass = (String) configValues.get( Environment.PASS );
useCredentials = user != null || pass != null;
在方法
public void configure(Map configValues)
public void configure(Map configValues)
这篇关于Tomcat连接池 - java.lang.UnsupportedOperationException:不受BasicDataSource支持的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!