不怪别人,只怪自己刚刚接解JSP开发,为了结合 JNDI,自己费了一天加一个晚上的时间,感觉有点对不住自己,不过好碍最后有了结果,下面是我配置JNDI及测试代码
测试环境:apache-tomcat-5.5.25、MyEclipse6.0、As400 DB2驱动程序(照此方法SQL Server2000已经测试过)
第一步,假设我现在的应用程序目录是web,把数据驱动程序jt400*.jar放到Tomcat安装目录的common\lib和应用程序目录webapps\web\WEB-INF\lib下或D:\java\apache-tomcat-5.5.25\common\lib下面。
运行Tomcat,打开浏览器,进入Tomcat的管理界面,,登陆后,选择Resource , Data Sources,下拉菜单,Create New DataSource。
JNDI名称:jdbc/vsagentlib
DataSource URL:jjdbc:as400://172.40.66.208:6789/VSAGENTLIB。(相应的修改IP和数据库名称)
JDBC Driver Class:com.ibm.as400.access.AS400JDBCDriver
User Name:*******(用户名)
Password:*******(数据库密码)
其他按照默认。save,commit changes, log out,重启Tomcat。
主意:一定要commit changes,否则无效。
第二步,打开应用程序目录 webapps\web里面的WEB-INF\web.xml,在最后前添加:
VSAGENTLIB
jdbc/vsagentlib
javax.sql.DataSource
Container
如果没有添加这一步,就会报这样的错误:Name jdbc is not bound in this Context 。
第三步,打开Tomcat安装目录下的conf\Catalina\localhost,找到和你的应用程序同名的xml,例如web.xml。如果没有,就建一个。web.xml里面的内容是:(
最好不要用web命名,容易与WEB-INF下的文件混)
要注意的是,文件名、docBase、path、workDir都不能错,要和你应用程序名称相对应。
如果第二步正确了,但是还没有添加这一步,就会报这样的错误:Cannot create JDBC driver of class "for connect URL 'null'" 。
D:\java\apache-tomcat-5.5.25\conf\Catalina\localhost下web.xml内容 WEB-INF\web.xml内容
xmlns=""
xmlns:xsi=""
xsi:schemaLocation="
/web-app_2_4.xsd">
index.jsp
vsagentlib
jdbc/vsagentlib
javax.sql.DataSource
Container
以下是JSP测试代码(conntst.jsp):
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%><%@ page import="java.io.*"%><%@ page import="java.util.*"%><%@ page import="java.sql.*"%><%@ page import="javax.sql.*"%><%@ page import="javax.naming.*"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%> My JSP 'index.jsp' starting page <% Context ctx=null; Connection conn=null; ResultSet rs=null; Statement stmt=null; ctx = (Context) new InitialContext().lookup("java:comp/env"); out.println(ctx); if(ctx==null) throw new Exception("没有匹配的环境"); String jndi = "jdbc/mssql"; jndi ="jdbc/vsagentlib"; DataSource ds =(DataSource) ctx.lookup(jndi); if(ds==null) throw new Exception("没有匹配数据库"); conn = ds.getConnection(); //out.println(conn); stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); rs=stmt.executeQuery("select * from vslland"); out.println("");
while(rs.next()){
String col1 = new String(rs.getString(1).getBytes("ISO8859-1"));
String col2 = rs.getString(2);
String col3 = rs.getString(3);
String col4 = rs.getString(4);
String col5 = rs.getString(5);
out.println("" + col1 + " | " + col2 + " | " + col3 + " | " + col4 + " | " + col5+" |
");
}
out.println("
"); out.println("============"); %>
最后
阅读(3276) | 评论(1) | 转发(0) |