小编Muf*_*Man的帖子

无法为连接URL''创建类''的JDBC驱动程序

我正在使用Tomcat 7.0.12并且每当我通过名为'ROOT'的webapp中的.jsp页面访问连接到postgresql数据库的JNDI数据源时都会收到此错误:

SEVERE: Servlet.service() for servlet [jsp] in context with path [] threw exception
[java.lang.RuntimeException: Cannot create JDBC driver of class '' for connect URL 'null'] with root cause
java.lang.NullPointerException
at sun.jdbc.odbc.JdbcOdbcDriver.getProtocol(JdbcOdbcDriver.java:507)
at sun.jdbc.odbc.JdbcOdbcDriver.knownURL(JdbcOdbcDriver.java:476)
at sun.jdbc.odbc.JdbcOdbcDriver.acceptsURL(JdbcOdbcDriver.java:307)
at java.sql.DriverManager.getDriver(DriverManager.java:253)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1437)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
Run Code Online (Sandbox Code Playgroud)

postgresql JDBC驱动程序位于我的CATALINA/lib文件夹中.

这是我的META-INF/context.xml:

<?xml version="1.0" encoding="UTF-8"?>

<Context>

<Resource name="jdbc/webdbro" auth="Container" type="javax.sql.DataSource"
    driverClassName="org.postgresql.Driver" url="jdbc:postgresql://127.0.0.1:5432/webdb"
    username="webdbro" password="pass" maxWait="-1" removeAbandoned="true" removeAbandonedTimeout="30"/>

<Resource name="jdbc/webdbrw" auth="Container" type="javax.sql.DataSource"
    driverClassName="org.postgresql.Driver" url="jdbc:postgresql://127.0.0.1:5432/webdb"
    username="webdbrw" password="pass" maxWait="-1" removeAbandoned="true" removeAbandonedTimeout="30"/>

<Resource name="jdbc/shadowdbro" auth="Container" type="javax.sql.DataSource"
    driverClassName="org.postgresql.Driver" url="jdbc:postgresql://127.0.0.1:5432/shadowdb"
    username="shadowdbro" …
Run Code Online (Sandbox Code Playgroud)

java postgresql tomcat jndi

16
推荐指数
1
解决办法
3万
查看次数

PostgreSQL连接2个数据库

我是PostgreSQL的新手.我在PostgreSQL 9.0,db1和db2中有2个数据库,而对于db2我有只读访问权限.我想创建一个存储函数,否则可以通过JOIN或嵌套查询轻松完成,这是PostgreSQL跨数据库无法做到的.

在db1中,我有table1,我可以在其中查询一组外键,我可以用它来搜索db2中table2中的记录,如:

SELECT * from db2.table2 WHERE db2.table2.primary_key IN (
    SELECT db1.table1.foreign_key FROM db1.table1 WHERE
        db1.table1.primary_key="whatever");
Run Code Online (Sandbox Code Playgroud)

在Postgres中执行此操作的最佳做​​法是什么?我不能在db2中使用临时表,并且在db2中运行的存储函数中传入外键作为参数似乎不是一个好的解决方案.

注意:键都是VARCHAR(11)

postgresql select join subquery

2
推荐指数
1
解决办法
6065
查看次数

标签 统计

postgresql ×2

java ×1

jndi ×1

join ×1

select ×1

subquery ×1

tomcat ×1