我在TomCat5.5.16里配置好数据源之后在test.jsp文件写下如下代码:<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="javax.naming.Context" %>
<%@ page import="javax.sql.DataSource" %>
<%@ page import="javax.naming.InitialContext" %>
<%@ page import="java.sql.*" %>
<%
DataSource ds=null;
try{
Context initCtx=new InitialContext();
Context envCtx=(Context)initCtx.lookup("java:comp/env");
//从context中lookup数据源
ds=(DataSource)envCtx.lookup("MyJNDI");
if(ds!=null){
out.println("已经获得dataSource<br>");
Connection conn=ds.getConnection();//获得连接
out.println("已经获得连接");
Statement st=conn.createStatement();
ResultSet rs=st.executeQuery("select * from user_info");
out.println("以下是从数据库读出的数据:<br>");
while(rs.next()){
out.println("userid="+rs.getString("userid")+"<br>");
out.println("name="+rs.getString("name")+"<br>");
}
}else{
out.println("连接失败");
}
}catch(Exception es){
out.println("test.jsp-->"+es);
}
%>运行成功,结果为:
已经获得dataSource已经获得连接
以下是从数据库读出的数据:
userid=aaa
name=888
userid=bo
name=宇波
userid=cws
name=陈斯
userid=ddd
name=ddd
userid=ggg
name=ggg
userid=hh
name=hh
userid=xio
name=111
userid=zb
name=刘宾
userid=zj
name=李建
userid=zww
name=刘威
userid=zzz
name=zzz
userid=凯
name=张凯而基本相同的代码我在java文件里写就出错了,下面是程序:import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.*;
public class DBConnPool {
//private String DATASOUCE="MyJNDI";
public DBConnPool(){
}
public Connection getDBConnPool(){
DataSource ds= null;
Connection conn = null;
try{
Context initCtx=new InitialContext();
Context envCtx=(Context)initCtx.lookup("java:comp/env");
//从context中lookup数据源
ds=(DataSource)envCtx.lookup("MyJNDI");
if(ds!=null){
System.out.println("已经获得dataSource<br>");
conn=ds.getConnection();//获得连接
System.out.println("已经获得连接");
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("select * from user_info");
System.out.println("以下是从数据库读出的数据:<br>");
while(rs.next()){
System.out.println("userid=" + rs.getString("userid") + "<br>");
System.out.println("name=" + rs.getString("name") + "<br>");
}
}
}catch(Exception ex){
System.out.println("DBConnPool()获得连接错误"+ex.getMessage());
}finally{
return conn;
}
}
public static void main (String args[]){
DBConnPool dbc = new DBConnPool();
dbc.getDBConnPool();
}}运行就出错了:
DBConnPool()获得连接错误Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial请问这是为什么,怎么解决???
<%@ page import="javax.naming.Context" %>
<%@ page import="javax.sql.DataSource" %>
<%@ page import="javax.naming.InitialContext" %>
<%@ page import="java.sql.*" %>
<%
DataSource ds=null;
try{
Context initCtx=new InitialContext();
Context envCtx=(Context)initCtx.lookup("java:comp/env");
//从context中lookup数据源
ds=(DataSource)envCtx.lookup("MyJNDI");
if(ds!=null){
out.println("已经获得dataSource<br>");
Connection conn=ds.getConnection();//获得连接
out.println("已经获得连接");
Statement st=conn.createStatement();
ResultSet rs=st.executeQuery("select * from user_info");
out.println("以下是从数据库读出的数据:<br>");
while(rs.next()){
out.println("userid="+rs.getString("userid")+"<br>");
out.println("name="+rs.getString("name")+"<br>");
}
}else{
out.println("连接失败");
}
}catch(Exception es){
out.println("test.jsp-->"+es);
}
%>运行成功,结果为:
已经获得dataSource已经获得连接
以下是从数据库读出的数据:
userid=aaa
name=888
userid=bo
name=宇波
userid=cws
name=陈斯
userid=ddd
name=ddd
userid=ggg
name=ggg
userid=hh
name=hh
userid=xio
name=111
userid=zb
name=刘宾
userid=zj
name=李建
userid=zww
name=刘威
userid=zzz
name=zzz
userid=凯
name=张凯而基本相同的代码我在java文件里写就出错了,下面是程序:import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.*;
public class DBConnPool {
//private String DATASOUCE="MyJNDI";
public DBConnPool(){
}
public Connection getDBConnPool(){
DataSource ds= null;
Connection conn = null;
try{
Context initCtx=new InitialContext();
Context envCtx=(Context)initCtx.lookup("java:comp/env");
//从context中lookup数据源
ds=(DataSource)envCtx.lookup("MyJNDI");
if(ds!=null){
System.out.println("已经获得dataSource<br>");
conn=ds.getConnection();//获得连接
System.out.println("已经获得连接");
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("select * from user_info");
System.out.println("以下是从数据库读出的数据:<br>");
while(rs.next()){
System.out.println("userid=" + rs.getString("userid") + "<br>");
System.out.println("name=" + rs.getString("name") + "<br>");
}
}
}catch(Exception ex){
System.out.println("DBConnPool()获得连接错误"+ex.getMessage());
}finally{
return conn;
}
}
public static void main (String args[]){
DBConnPool dbc = new DBConnPool();
dbc.getDBConnPool();
}}运行就出错了:
DBConnPool()获得连接错误Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial请问这是为什么,怎么解决???
解决方案 »
- wsgen 怎么使用????? (急啊)
- tomcat不能debug启动了(急)
- 一个页面只能对应一个ACTION吗
- Javamail发邮件,yahoo邮箱收到后出现附件乱码问题。
- 有谁在学powerDesiger么。推荐 些书可以么?
- 如何实现自动消息提醒
- 权限分配页的接受该如何做?在线急,大出血,50分!!!!
- 求助,这个语句怎么写成hql
- 用strus方式进行文件上传,提交时出错(能解决问题一定给分)
- 谁知道《程序员大本营》光盘中jbuilder的Serial Number和Key?
- tomcat 4.1启动后,启动窗口会不会一闪即失
- [666] 该初学者一个好消息,在http://www.itfuture.org上有大量的jsp-javabean-struts-xml-ejb教学实战视频,大家快去下载,视频很不错
<Resourcename="jdbc/TestDB"
auth="Container"
type="javax.sql.DataSource"/>
<ResourceParamsname="jdbc/TestDB">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>14</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>14</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>
<parameter>
<name>username</name>
<value>test</value>
</parameter>
<parameter>
<name>password</name>
<value>test</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter> <parameter>
<name>url</name>
<value>jdbc:oracle:oci8:@test</value>
</parameter>
</ResourceParams>
</Context>
<%@page contentType="text/html; charset=GB18030"%>
<%@ page import="java.sql.*,javax.sql.DataSource,javax.naming.*" %>
<%try{
Context icontext=new InitialContext();
Context context=(Context)icontext.lookup("java:comp/env");
DataSource ds=(DataSource)context.lookup("jdbc/TestDB"); if (ds != null)
{
out.print("access datasource"+"<br>");
out.print(ds);
Connection con=ds.getConnection();
PreparedStatement pStat = con.prepareStatement(
"select userName from mystruts_tab");
ResultSet rs = pStat.executeQuery();
while(rs.next())
System.out.println(rs.getString("userName")); }
}
catch (Exception e)
{
e.printStackTrace();
}
%>
意思是说只能在JSP页面里访问了,是这个意思么?