A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马亚冲 黑马帝   /  2011-8-28 08:40  /  1916 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

[code=jscript]<%@ page contentType="text/html" pageEncoding="gbk"%>
<%@ page import="java.sql.*,javax.sql.*,javax.naming.*"%>

<%
         String DSNAME="java:comp/env/jdbc/mydatabase" ;
                Context ctx = new InitialContext() ;
                DataSource ds = (DataSource) ctx.lookup(DSNAME);
                Connection conn = ds.getConnection() ;
       
%>
<%=conn%>
连接成功并关闭
<%
        conn.close() ;//将连接放回池中
%>[/code]Tomcat安装目录下的server.xml和web-inf下的web.xml都正确配置了,而且这个jsp页面正常输出了conn连接的路径
但是下面的:[code=java]package sjy.xg.myc.datasource;

import java.sql.*;//Connection
import javax.sql.*;//DataSource
import javax.naming.*;//Context
public class DatabaseConnection{
        private Connection conn = null ;
        private String DSNAME="java:comp/env/jdbc/mydatabase" ;
        public DatabaseConnection() throws Exception{
                Context ctx = new InitialContext() ;
                DataSource ds = (DataSource) ctx.lookup(DSNAME);
                this.conn = ds.getConnection() ;
        }
       
        public Connection getConnection(){
                return this.conn ;
        }
       
        public void close() throws Exception {
                if(this.conn != null){
                        try{
                                conn.close() ;
                        }catch(Exception e){
                                throw e ;
                        }       
                }
        }

        public static void main(String[] args) throws Exception{
           Connection conn = new DatabaseConnection().getConnection();
            System.out.println("sucess"+conn);
        }
       
}[/code]老出现错误:
Exception in thread "main" javax.naming.NoInitialContextException: Need to specify class name in env
ironment or system property, or as an applet parameter, or in an application resource file:  java.na
ming.factory.initial
        at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
        at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
        at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
        at javax.naming.InitialContext.lookup(InitialContext.java:392)
        at sjy.xg.myc.datasource.DatabaseConnection.<init>(DatabaseConnection.java:11)
        at sjy.xg.myc.datasource.DatabaseConnection.main(DatabaseConnection.java:30)

怎么解决?????

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1

查看全部评分

4 个回复

倒序浏览
黑马网友  发表于 2011-8-28 09:18:34
沙发
你是否将已将数据库驱动程序拷贝到%TOMCAT_HOME%\common\lib文件夹下,如果已拷贝的话那就是配置有问题了。看我写的那篇[url]http://dong-dong.iteye.com/blog/993408[/url]

评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-8-28 11:24:18
藤椅

回复 沙发 的帖子

jsp的运行并正确输出,就说明我的配置没问题吧

为什么第二个java程序就报错呢????
回复 使用道具 举报
黑马网友  发表于 2011-8-28 11:26:20
板凳

回复 沙发 的帖子

[b]我看了你的那个,我是也这样配置的啊
可是就是jsp正确,java类的就不对了
要不你把你的jsp代码用java类的形式实现下,看看报错不??[/b]
回复 使用道具 举报
黑马网友  发表于 2011-8-28 22:46:04
报纸
[code]<%@ page contentType="text/html" pageEncoding="gbk"%>
<%@ page import="sjy.xg.myc.datasource.*"%>
<%@ page import="java.sql.*"%>
<%
        Connection conn = new DatabaseConnection().getConnection() ;
%>
<%=conn %>[/code]成功了,我明白这句话的意思了“此程序只能在WEB下运行,而不能使用Application程序运行”
,就是不鞥单独测试这个类,而要使它在web容器了运行。而使它在web容器里运行的方法就是放在jsp中了。这也是它的有用的地方了。

谢谢楼上的帮助了 谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马