use*_*052 4 sqlanywhere tomcat7
我正在运行Tomcat 7.0.22,我编写了一个连接到SQL Anywhere 12.0数据库的简单servlet.当我运行servlet时,我得到了java.lang.ClassCastException:org.apache.tomcat.dbcp.dbcp.BasicDataSource无法强制转换为org.apache.tomcat.jdbc.pool.DataSource.我的./META-INF/content.xml文件如下所示:
Run Code Online (Sandbox Code Playgroud)<Context> <Resource name="jdbc/FUDB" auth="Container" type="javax.sql.DataSource" username="dba" password="sql" driverClassName="sybase.jdbc.sqlanywhere.IDriver" factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"URL = "JDBC:SQLAnywhere中:UID = DBA; PWD = SQL; ENG = BTH476331A_FedUtilization;" accessToUnderlyingConnectionAllowed ="true"maxActive ="8"maxIdle ="4"/>
我的webapp web.xml如下所示:
Run Code Online (Sandbox Code Playgroud)<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" metadata-complete="true"> <display-name>FedUtilization</display-name> <servlet> <servlet-name>Report1</servlet-name> <display-name>Report1</display-name> <servlet-class>com.sapgss.ps.servlet.Report1</servlet-class>Report1/Report1
SQL Anywhere 12.0.1服务器jdbc3 jdbc/FUDB javax.sql.DataSource容器
servlet代码如下:
Run Code Online (Sandbox Code Playgroud)import java.io.*; import java.sql.*; import javax.servlet.*; import javax.servlet.http.*; import javax.naming.*; import org.apache.catalina.core.StandardContext.*; import org.apache.tomcat.jdbc.pool.*; import com.sapgss.ps.dbutil.*; import org.apache.tomcat.dbcp.dbcp.BasicDataSource; public class Report1 extends HttpServlet { public void doGet(HttpServletRequest request,HttpServletResponse响应)抛出IOException,ServletException {try {response.setContentType("text/html"); PrintWriter out = response.getWriter(); 通过out.println( ""); 通过out.println( ""); out.println("Hello Elaine!"); 通过out.println( ""); 通过out.println( ""); 通过out.println("
你好Elaine!
");
//这是如何在Java上编写对数据库的访问权限上下文initCtx = new InitialContext(); Context envCtx =(Context)initCtx.lookup("java:comp/env"); DataSource ds =(DataSource)envCtx .lookup("jdbc/FUDB"); Connection conn = ds.getConnection(); ...
}}
当我尝试在此行获取DataSource时发生错误:DataSource ds =(DataSource)envCtx.lookup("jdbc/FUDB");
提前谢谢我把头发拉了出来.
小智 8
在我的情况下,我只是忘了把:
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
Run Code Online (Sandbox Code Playgroud)
在我的/tomcat7/conf/context.xml.刚添加,一切正常.
我的context.xml:
<Context>
<Resource name="jdbc/gestrel" auth="Container"
type="javax.sql.DataSource"
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://127.0.0.1:5432/g...."
username="postgres"
password="....." maxActive="20" maxIdle="10"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
maxWait="-1"/>
</Context>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18811 次 |
| 最近记录: |