在server.xml的context元素中加入以下代码:<Resource name="jdbc/myoracle" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/myoracle" >
<parameter>
<name>validationQuery</name>
<value>true</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@localhost:1521:SHORTME</value>
</parameter>
<parameter>
<name>username</name>
<value>scott</value>
</parameter>
<parameter>
<name>password</name>
<value>tiger</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>30</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>1000</value>
</parameter>
</ResourceParams>
在web.xml里加入以下:
<resource-ref>
<res-ref-name>jdbc/myoracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>在测试的时候: Context initCtx = new InitialContext();
Context ctx = (Context) initCtx.lookup("java:comp/env");
Object obj = (Object) ctx.lookup("jdbc/myoracle");
javax.sql.DataSource ds = (javax.sql.DataSource)obj;
Connection conn=ds.getConnection();运行提示:
Exception in JSP...绿色的部分出错了。请问是什么原因呢?不使用连接池,一般连接可以访问到oracle的。
<ResourceParams name="jdbc/myoracle" >
<parameter>
<name>validationQuery</name>
<value>true</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@localhost:1521:SHORTME</value>
</parameter>
<parameter>
<name>username</name>
<value>scott</value>
</parameter>
<parameter>
<name>password</name>
<value>tiger</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>30</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>1000</value>
</parameter>
</ResourceParams>
在web.xml里加入以下:
<resource-ref>
<res-ref-name>jdbc/myoracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>在测试的时候: Context initCtx = new InitialContext();
Context ctx = (Context) initCtx.lookup("java:comp/env");
Object obj = (Object) ctx.lookup("jdbc/myoracle");
javax.sql.DataSource ds = (javax.sql.DataSource)obj;
Connection conn=ds.getConnection();运行提示:
Exception in JSP...绿色的部分出错了。请问是什么原因呢?不使用连接池,一般连接可以访问到oracle的。
解决方案 »
- 新人求助、、easyUI开发需要的准备工作?
- HibernateTemplate 实现分页查询 有疑问
- servlet display-name配置问题
- 想问下谁有使用过jspsmartupload的成功例子?
- Hibernate模糊查询的问题?
- 请教高手 怎样配置tomcat来映射到一个web应用
- 请教:resin中web_inf/work目录下的文件是干什么用的,是临时文件吗?
- 菜鸟的问题
- 同一web server 下发布的不同web application,怎样使他们之间的session 对象可互访,据说用到cookie....?
- 请问启动tomcat后,为什么有个窗口总是一闪即释,而消失的窗口应该就是tomcat的窗口。
- gwt AsyncCallback 的方法调用
- 页面跳转的问题
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource
name="jdbc/mybookshop"
type="javax.sql.DataSource"
maxActive="4"
maxIdle="2"
username="sa"
maxWait="5000"
validationQuery="select 1"
driverClassName="oracle.jdbc.driver.OracleDriver"
password=""
url="jdbc:oracle:thin:@localhost:1521:SHORTME"/>
</Context>web.xml 里面不需要配置吧
错误提示:
org.apache.jasper.JasperException: Exception in JSP: /index.jsp:1411: Object obj = (Object) ctx.lookup("jdbc/myoracle");
12: javax.sql.DataSource ds = (javax.sql.DataSource)obj;
13:
14: Connection conn=ds.getConnection();
15:
16: //创建可滚动的结果集
17: Statement stmt=conn.createStatement(
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:451)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:355)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.zyy.cho2.servlet.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:38)root causejavax.servlet.ServletException: Cannot create JDBC driver of class '' for connect URL 'null'
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:841)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:774)
org.apache.jsp.index_jsp._jspService(index_jsp.java:194)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.zyy.cho2.servlet.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:38)root causeorg.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1150)
org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
org.apache.jsp.index_jsp._jspService(index_jsp.java:58)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.zyy.cho2.servlet.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:38)root causejava.sql.SQLException: No suitable driver
java.sql.DriverManager.getDriver(DriverManager.java:243)
org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1143)
org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
org.apache.jsp.index_jsp._jspService(index_jsp.java:58)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.zyy.cho2.servlet.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:38)
是额。这个url设置和普通连接数据库时的值一样吗?我设置的是一样的、
如果URL没错,还个驱动包试试。!
自己按步骤弄下,有问题再发
debug="5" crossContext="true" reloadable="false"
cachingAllowed="true" cacheMaxSize="20480"
cacheTTL="10000">
<Resource name="jdbc/mysql" auth="Container" removeAbandoned="true"
removeAbandonedTimeout="60" logAbandoned="true"
type="javax.sql.DataSource" maxActive="50" maxIdle="10"
maxWait="10000" username="root" password="root"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/dbname?autoReconnect=true" />
</Context>在web.xml中加入
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mysql</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
以上配置文件,参数自己在重新设置设置,别忘了把驱动放到你的项目的classpath下
不行现在在tomcat的命令窗口看到“LifecycleException:No userdatabase component found under key userDatabase.是说我的数据库名设置错了吗?
因为第一行已经把Resource 结束了 />我以前配置JNDI的时候都是这样配置的:<Resource
name="jdbc/web"
auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
maxActive="100"
maxIdle="30"
maxwait="5000"
username="数据库de用户名"
password="数据库de密码"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:SHORTME"
/>如果说错了见谅~~~参考下这个:
http://blog.csdn.net/xiaobaitu7788/archive/2008/02/26/2120429.aspx
//获得数据源
DataSource ds = context.lookup("java:comp/env/jdbc/mysql");
//获取连接
Connection conn = ds.getConnection();
try{
Context initCtx = new InitialContext();
Context ctx = (Context) initCtx.lookup("java:comp/env");
testDB是你自己是设置的
Object obj = (Object) ctx.lookup("jdbc/testDB");
javax.sql.DataSource ds = (javax.sql.DataSource)obj;
Connection conn = ds.getConnection(); }
catch(Exception e)
{
System.out.print(e.toString());
}
我看这个提示是因为server.xml的这句话:<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>这里还要配置吗?我的用户名和密码都对的
<Resource name="jdbc/shortme" auth="Container"
type="javax.sql.DataSource" username="scott" password="tiger"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:shortme"
maxActive="8" maxIdle="4" />
</Context>其中 path、docBase是不一样的。你的web目录放在那里,这两个值就指向那个目录。
其中Resource里的name属性shortme也是不一样的,可以自己取值。
其中另一处的修改就是让我想不通的地方:
realm元素的配置。。之前我的错误提示
LifecycleException:No userdatabase component found under key userDatabase
在server.xml里就看到这里有个
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>这里有个userDatabase。
于是我把这句话下面一段被注释的地方去掉注释被改为:
<Realm className="org.apache.catalina.realm.JDBCRealm"
driverName="oracle.jdbc.driver.OracleDriver"
connectionURL="jdbc:oracle:thin:@localhost:1521:SHORTME"
connectionName="scott" connectionPassword="tiger"
/> 我看下面还有mysql的一段。由于我用的是oracle。所以如此。。好了。至此server.xml里的配置完毕了。
web.xml里配置:<resource-ref>
<description>
Resource reference to a factory for java.sql.Connection
instances that may be used for talking to a particular
database that is configured in the server.xml file.
</description>
<res-ref-name>jdbc/shortme</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>记得要跟你的server.xml里的一致哦!!我搜索了很多,大致都是这样子的。可是没人说要去掉<Realm>那一段的。虽然我的问题解决了,可是我还是不明白<Realm>那里怎么回事。高人请指教!!!
可能你的driverclassname配置错了吧。。你检查一下,应该是你的url,driverclassname==参数设置错了。
在这里conf\Catalina\localhost建一个跟你项目名字一样的文件,以.xml结尾,把数据源也放在这里。