package note;import javax.servlet.http.HttpServlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;import org.apache.struts.legacy.GenericDataSource;public final class DBInitServlet extends HttpServlet{
public void init(ServletConfig config) throws ServletException {
super.init(config);
try {
GenericDataSource ds = new GenericDataSource();
ds.setDriverClass(getInitParameter("driverClass"));
ds.setUrl(getInitParameter("jdbcURL"));
ds.setMinCount(Integer.parseInt(getInitParameter("minCount")));
ds.setMaxCount(Integer.parseInt(getInitParameter("maxCount")));
ds.setAutoCommit(false);
ds.open();
ConnectionPool.init(ds);
}catch(SQLException e){
e.printStackTrace();
throw new ServletException("Unble to open DataSource");
}
}
}
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;import org.apache.struts.legacy.GenericDataSource;public final class DBInitServlet extends HttpServlet{
public void init(ServletConfig config) throws ServletException {
super.init(config);
try {
GenericDataSource ds = new GenericDataSource();
ds.setDriverClass(getInitParameter("driverClass"));
ds.setUrl(getInitParameter("jdbcURL"));
ds.setMinCount(Integer.parseInt(getInitParameter("minCount")));
ds.setMaxCount(Integer.parseInt(getInitParameter("maxCount")));
ds.setAutoCommit(false);
ds.open();
ConnectionPool.init(ds);
}catch(SQLException e){
e.printStackTrace();
throw new ServletException("Unble to open DataSource");
}
}
}
解决方案 »
- 权限登陆模块的原理
- 高分求解:DB2查询优化
- Hibernate插入数据出错??求助
- 请教个struts面试题目.... 在线等.谢谢!!!
- 送分100!!!快来看看
- [求助]SHH+ExtJS4.0 报no matching editors or conversion strategy found
- 我的oracle AS不支持hibernate 3??
- *************************************配置还是有点问题!
- J2EE架构是什么?
- 如何用jbuilder开发ejb?
- Sun今日发布Java 2 Platform, Enterprise Edition 5.0
- 求助 jsp关于ms sql 2000的连接问题
package note;import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;public class ConnectionPool {
private DataSource ds;
public static ConnectionPool mySelf;
private ConnectionPool(DataSource ds) {
this.ds = ds;
}
public static void init(DataSource ds){
mySelf = new ConnectionPool(ds);
}
public static ConnectionPool getInstance(){
if(mySelf == null) {
throw new IllegalStateException("Pool not Initialized");
}
return mySelf;
}
public Connection getConnection()throws SQLException {
return ds.getConnection();
}
}
<struts-config>
<data-sources>
<data-source key="xue" type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="driverClassName" value="sun.jdbc.odbc.JdbcOdbcDriver"/>
<set-property property="url" value="jdbc:odbc:xue"/>
<set-property property="username" value="sa"/>
<set-property property="password" value=""/>
</data-source>
</data-sources>
<form-beans>
data-sources标签是struts-config.xml文件首先定义的,在与其他标签顺序关系上没有冲突。 里边的url,username,password也没有错,而且,为了确保万一,我写了个类文件连接了数据库是可以通过的,这里的org.apache.commons.dbcp.BasicDataSource也没有问题,我用的是jb,我已经成功把这个jar文件加入进来了,也没出现红色下划线的提示,我想应该也没问题的然后,我就在类文件里写到
try{
DataSource dataSource=getDataSource(servletRequest,"xue");
Connection con=dataSource.getConnection();
dbdao dd=new dbdao(con);
dbaa da=new dbaa();
da.setName(username);
dd.ins(da);
return (actionMapping.findForward("success"));
}
catch(Exception e){
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}
-----------------------------------------
代码已经try/catch起来了,现在用
DataSource dataSource=getDataSource(servletRequest,"xue");
Connection con=dataSource.getConnection();
connection对象根本就得不到数据库连接。报告这样的错误:
错误很明显了,是得不到数据源,我好郁闷,看了好几本参考书,都是说只在struts-config.xml定义下,然后,再通过两句代码就可以ok了,难道,还需要设置别的地方吗?书上也没这么说啊。请高人指点。
运行错误如下:::
description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: Servlet.init() for servlet action threw exception
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
java.lang.Thread.run(Thread.java:534)
root cause java.lang.NoClassDefFoundError: org/apache/struts/legacy/GenericDataSource
java.lang.ClassLoader.defineClass0(Native Method)
java.lang.ClassLoader.defineClass(ClassLoader.java:537)
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1634)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:860)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1307)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1189)
java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
org.apache.struts.action.ActionServlet.initModuleDataSources(ActionServlet.java:1084)
org.apache.struts.action.ActionServlet.init(ActionServlet.java:472)
javax.servlet.GenericServlet.init(GenericServlet.java:211)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
java.lang.Thread.run(Thread.java:534)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
--------------------------------------------------------------------------------Apache Tomcat/5.0.28
偶刚接触struts不长时间,请多多指点。
你可以在tomcat中配置连接池,也可以用struts+hibernate的方式
DataSource dataSource=getDataSource(servletRequest,"dataSource");
Connection con=dataSource.getConnection();
还能不能得到,是不是在struts1.1中不支持了啊?我的代码我看了几次,感觉都没什么问题,就是在运行的时候报找不到数据源,,如果,不支持,那么一般在struts1.1中,如果,不把数据库连接写到类文件中,是怎么样得到数据库连接的,拜托,路过的高人给解答下,以前的一个问题了,一直没有得到解决,拜托了。。