Java 在Tomcat7/Ubuntu 12.10中找不到org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory类?(可能的错误)
Tomcat 7拥有jar文件commons-dbcp.jar和Tomcat-dbcp.jar,但在Tomcat-dbcp.jar中,要查找的是文件org.apache.Tomcat.dbcp.BasicDataSourceFactory类,而不是org.apache.Tomcat.dbcp.dbcp.BasicDataSourceFactory 根本原因 Servlet代码Java 在Tomcat7/Ubuntu 12.10中找不到org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory类?(可能的错误),java,tomcat,servlets,tomcat7,jndi,Java,Tomcat,Servlets,Tomcat7,Jndi,Tomcat 7拥有jar文件commons-dbcp.jar和Tomcat-dbcp.jar,但在Tomcat-dbcp.jar中,要查找的是文件org.apache.Tomcat.dbcp.BasicDataSourceFactory类,而不是org.apache.Tomcat.dbcp.dbcp.BasicDataSourceFactory 根本原因 Servlet代码 import java.io.IOException; import java.io.PrintWriter; imp
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.annotation.Resource;
import javax.sql.DataSource;
@WebServlet("/person.do")
public class PersonServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Resource(name = "jdbc/javalabs")
DataSource ds;
public PersonServlet() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
Connection con = ds.getConnection();
Statement stmt = con.createStatement();
String query = "select * from t_person";
ResultSet rs = stmt.executeQuery(query);
PrintWriter out = response.getWriter();
response.setContentType("text/html");
out.print("<center><h1>Person Details</h1></center>");
out.print("<html><body>");
out.print("<table border=\"1\" cellspacing=10 cellpadding=5>");
out.print("<tr><th>ID</th>");
out.print("<th>First Name</th>");
out.print("<th>Last Name </th>");
out.print("<th>Date of birth</th></tr>");
while (rs.next()) {
out.print("<tr>");
out.print("<td>" + rs.getLong("id") + "</td>");
out.print("<td>" + rs.getString("firstName") + "</td>");
out.print("<td>" + rs.getString("lastName") + "</td>");
out.print("<td>" + rs.getDate("dob") + "</td>");
out.print("</tr>");
}
out.print("</table></body></html>");
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
}
META-INF/context.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- The contents of this file will be loaded for each web application -->
<Context crossContext="true">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Resource name="jdbc/testDB" auth="Container"
type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="myuser"
password="myuser"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/javalabs"/>
</Context>
WEB-INF/WEB.xml中的元素
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/testDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
显示生成异常的JNDI代码。还添加定义JNDI资源和连接池的tomcat配置。
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/testDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>