datasource get connection 的问题

Ericcn 2005-04-15 05:40:49
调用datasource.getConnection(USER, PASSWORD)时,出现如下错误:
2005-04-15 17:05:01 StandardWrapper.Throwable
java.lang.UnsupportedOperationException
at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:125)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:329)
at com.hrhost.common.database.ConnectionManager.getConnection(Unknown Source)
at com.hrhost.servlet.InitializeServlet.init(Unknown Source)
at javax.servlet.GenericServlet.init(GenericServlet.java:256)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1044)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:887)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3850)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4122)
at org.apache.catalina.core.StandardContext.reload(StandardContext.java:2894)
at org.apache.catalina.core.StandardContext.backgroundProcess(StandardContext.java:4423)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1658)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1667)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1667)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1647)
at java.lang.Thread.run(Thread.java:534)

请问前辈是什么问题呢?
我的server.xml如下:
<Resource auth="Container" name="jdbc/hrhost" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/hrhost">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost:3306/hrhost?autoReconnect=true</value>
</parameter>
<parameter>
<name>password</name>
<value></value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>username</name>
<value>root</value>
</parameter>
...
</ResourceParams>

...全文
425 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ericcn 2005-04-16
  • 打赏
  • 举报
回复
InitialContext()和lookup()等全部都做了。如果我把用户名和密码都写到server.xml上,调用ds.getConnection()是没问题的。但如果把密码加密后放到配置文件,然后在应用程序加载的过程中解密,调用ds.getConnection(USER, PASSWORD)去获得Connection,就不行了,出了之前的错误。
OnlyFor_love 2005-04-16
  • 打赏
  • 举报
回复
配置完server.xml后,你还应该写一个连接数据源的,你可以在jsp中做个测试
<%
javax.naming.Context initCtx = new javax.naming.InitialContext();
javax.naming.Context envCtx=(javax.naming.Context)initCtx.lookup("java:comp/env");
javax.sql.DataSource ds = (javax.sql.DataSource)envCtx.lookup("jdbc/MySqlDS");
java.sql.Connection conn = ds.getConnection();

out.print(conn.getMetaData().getDatabaseProductVersion());

out.print("<br> Connected to Mysql !!!<br>" );
%>
OnlyFor_love 2005-04-16
  • 打赏
  • 举报
回复
你这个是配置tomcat数据源!
你可以参考这个:然后自己该一下就可以了!
<Resource name="jdbc/MySqlDS" auth="Container"
type="javax.sql.DataSource"/>

<ResourceParams name="jdbc/MySqlDS">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>org.gjt.mm.mysql.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost:3306/wb</value>
</parameter>
<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>password</name>
<value>root</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>
</ResourceParams>

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧