【发布时间】:2011-12-01 19:02:29
【问题描述】:
我正在运行 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 文件如下所示:
<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" 最大活动=“8” maxIdle="4" />
我的 webapp web.xml 看起来像这样:
<?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>报告1 /报告1
SQL Anywhere 12.0.1 服务器 jdbc3 jdbc/FUDB javax.sql.DataSource 容器
servlet代码如下:
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 { 尝试 { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(""); out.println(""); out.println("你好伊莱恩!"); out.println(""); out.println(""); out.println("
你好伊莱恩!
");
// 这是如何在 Java Context 中编写访问数据库的代码 initCtx = new InitialContext();上下文 envCtx = (上下文) initCtx.lookup("java:comp/env");数据源 ds = (数据源) envCtx.lookup("jdbc/FUDB"); 连接连接 = ds.getConnection(); . . .
} }
当我尝试在此行获取 DataSource 时发生错误: DataSource ds = (DataSource) envCtx.lookup("jdbc/FUDB");
提前谢谢我正在拔头发。
【问题讨论】:
-
我解决了这个问题。我需要做的是在 %CATALINA%/localhst/webappname.xml 中创建一个 context.xml 文件。
标签: tomcat7 sqlanywhere