zoukankan      html  css  js  c++  java
  • javax.naming.NoInitialContextException错误的解决方案

    今天,学习用了一下nutz框架,写了一个HelloWorld的小程序,在用jndi配置数据源时,写了一个测试类,并在main方法中调用了jndi获得数据库连接,但是报错了,错误信息如下:

    javax.naming.NoInitialContextException: 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。

    这是什么问题呢,大体好像说是上下文初化异常!我看了一下我的配置

    步骤:   
    1. 在tomcat目录下conf/context.xml文件中 加入一下代码 
          <Resource name="jdbc/test" 
          auth="Container" 
          type="javax.sql.DataSource" 
          driverClassName="net.sourceforge.jtds.jdbc.Driver" 
          url="jdbc:sqlserver://localhost:1433;databaseName=nutztest" 
          username="sa" 
          password="sa" 
          maxActive="100"   //连接池的最大数据库连接数,设为0表示无限制 
          maxIdle="30"      //最大空闲数,设为0表示无限制 
          maxWait="10000"/> //最大连接等待时间.如果超时将接到异常.设为  -1 表示无限制 

    2.将jtds-1.2.5jar包,nutz.jar放到了工程中

    3.  写测试类

    public class Test{

    public Connection getConnection(){ 
    try { 
    Context ctx = new InitialContext(); 
    DataSource ds = (DataSource)ctx.lookup("jdbc/test"); 
    conn = ds.getConnection(); 
    } catch (NamingException e) { 
    e.printStackTrace(); 
    } catch (SQLException e) { 
    e.printStackTrace(); 

    return conn; 


    public static void main(String[] args) { 
    System.out.println(newTest().getConnection()); 

    }

    4.运行tomcat-- 运行测试代码,抛出异常: 
    javax.naming.NoInitialContextException: 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 
    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) 

    后来看到论坛里的回复才知道原因

    在用JNDI连接数据库时用main函数测试时总报错,
    InitialContext 是要在应用服务器的上下文里才有的。
    你在普通的应用程序里怎么行!
    放到tomcat里面运行看看吧!
    不能用main函数直接测试,只能放到tomcat或者servlet、jsp显示
  • 相关阅读:
    在“安装”阶段发生异常。 System.Security.SecurityException: 未找到源,但未能
    [转]C# 实现Jwt bearer Authentication
    json序列化数据超出最大值(maxJsonLength)
    設計之家-教程
    Python Dom 的介绍和使用day1
    Python CSS day2
    回顾
    Python CSS day1
    Python HTML day2
    Python HTML day1
  • 原文地址:https://www.cnblogs.com/borter/p/9578158.html
Copyright © 2011-2022 走看看