Ric*_*yne 72 postgresql tomcat jdbc geoserver
我正在尝试将已启用数据库的JSP添加到现有的Tomcat 5.5应用程序(GeoServer 2.0.0,如果有帮助的话).
该应用程序本身与Postgres谈话很好,所以我知道数据库已启动,用户可以访问它,所有这些好东西.我想要做的是在我添加的JSP中的数据库查询.我已经在Tomcat数据源示例中使用了配置示例,非常开箱即用.必要的taglibs位于正确的位置 - 如果我只有taglib refs就不会发生错误,因此它会找到那些JAR.postgres jdbc驱动程序postgresql-8.4.701.jdbc3.jar位于$ CATALINA_HOME/common/lib中.
这是JSP的顶部:
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<sql:query var="rs" dataSource="jdbc/mmas">
select current_validstart as ValidTime from runoff_forecast_valid_time
</sql:query>
Run Code Online (Sandbox Code Playgroud)
来自$ CATALINA_HOME/conf/server.xml的相关部分,其内部<Host>
依次是<Engine>
:
<Context path="/gs2" allowLinking="true">
<Resource name="jdbc/mmas" type="javax.sql.Datasource"
auth="Container" driverClassName="org.postgresql.Driver"
maxActive="100" maxIdle="30" maxWait="10000"
username="mmas" password="very_secure_yess_precious!"
url="jdbc:postgresql//localhost:5432/mmas" />
</Context>
Run Code Online (Sandbox Code Playgroud)
这些行是webapps/gs2/WEB-INF/web.xml中标记的最后一行:
<resource-ref>
<description>
The database resource for the MMAS PostGIS database
</description>
<res-ref-name>
jdbc/mmas
</res-ref-name>
<res-type>
javax.sql.DataSource
</res-type>
<res-auth>
Container
</res-auth>
</resource-ref>
Run Code Online (Sandbox Code Playgroud)
最后,例外:
exception
org.apache.jasper.JasperException: Unable to get connection, DataSource invalid: "java.sql.SQLException: No suitable driver"
[...wads of ensuing goo elided]
Run Code Online (Sandbox Code Playgroud)
Bal*_*usC 95
臭名昭着的java.sql.SQLException:找不到合适的驱动程序
此异常基本上有两个原因:
您需要确保将JDBC驱动程序放在服务器自己的/lib
文件夹中.
或者,当您实际上没有使用服务器管理的连接池数据源,但是DriverManager#getConnection()
在WAR 中手动摆弄时,则需要将JDBC驱动程序放在WAR中/WEB-INF/lib
并执行..
Class.forName("com.example.jdbc.Driver");
Run Code Online (Sandbox Code Playgroud)
..在第一次调用之前的代码中,DriverManager#getConnection()
确保不会吞下/忽略任何ClassNotFoundException
可以抛出的代码并继续代码流,就像没有异常发生一样.另请参见在何处为Tomcat的连接池放置JDBC驱动程序?
您需要确保JDBC URL符合JDBC驱动程序文档,并记住它通常区分大小写.当JDBC URL不会返回true
用于Driver#acceptsURL()
对任何加载的驱动程序,那么你也将获得正是这种例外.
在的情况下,PostgreSQL的是记录在这里.
使用JDBC,数据库由URL(统一资源定位符)表示.使用PostgreSQL™,它采用以下形式之一:
jdbc:postgresql:database
jdbc:postgresql://host/database
jdbc:postgresql://host:port/database
在的情况下,MySQL的它被记录在这里.
用于连接MySQL服务器的JDBC URL的一般格式如下,方括号(
[ ]
)中的项是可选的:
jdbc:mysql://[host1][:port1][,[host2][:port2]]...[/[database]] » [?propertyName1=propertyValue1[&propertyName2=propertyValue2]...]
如果是Oracle,请在此处进行说明.
有两种URL语法,旧语法只适用于SID,新语法适用于Oracle服务名称.
旧语法
jdbc:oracle:thin:@[HOST][:PORT]:SID
新语法
jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE
ara*_*nid 15
url="jdbc:postgresql//localhost:5432/mmas"
Run Code Online (Sandbox Code Playgroud)
该URL看起来不对,您需要以下内容吗?
url="jdbc:postgresql://localhost:5432/mmas"
Run Code Online (Sandbox Code Playgroud)
我遇到了类似的问题.上下文中的项目是Dynamic Web Project(Java 8 + Tomcat 8),错误是针对PostgreSQL驱动程序异常:找不到合适的驱动程序
它通过Class.forName("org.postgresql.Driver")
在调用getConnection()
方法之前添加来解决
这是我的示例代码:
try {
Connection conn = null;
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection("jdbc:postgresql://" + host + ":" + port + "/?preferQueryMode="
+ sql_auth,sql_user , sql_password);
} catch (Exception e) {
System.out.println("Failed to create JDBC db connection " + e.toString() + e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
我忘了将PostgreSQL JDBC驱动程序添加到项目Mvnrepository中。
摇篮:
// http://mvnrepository.com/artifact/postgresql/postgresql
compile group: 'postgresql', name: 'postgresql', version: '9.0-801.jdbc4'
Run Code Online (Sandbox Code Playgroud)
Maven:
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.0-801.jdbc4</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
您也可以下载的JAR手动和导入到项目中。
归档时间: |
|
查看次数: |
120261 次 |
最近记录: |