错误信息: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;
问题不用细说了吧,求助! ------最佳解决方案-------------------- 没有初始化上下文错误:需要指明ClassName
不知道是不是你少打了一个字母 dirverClassName少了一个d ------其他解决方案-------------------- 这种方式必须要tomcat启动的情况下才能得到Connection,
另外它有三个缺点:
1,不能直接在main方法中运行,也就不能测试,很不方便!
2,不能正常读写Oracle的clob字段,会导致很多功能做不了!
3,效率不及dbcp或c3p0,其实后两者也都实现了javax.sql.DataSource接口,可以算是它的扩展版,可以在本工程中配置,可以在main方法中运行 ------其他解决方案--------------------
这是我发帖的时候少打了,程序里没有少,所以不是这的错误,该注意的地方都检查了,就是不知道哪儿出了问题
发出来看看,希望大家指出什么地反容易出错,我好再查,谢谢! ------其他解决方案-------------------- java类中测试报错,jsp页面中用<%javacode%>测试可以通过,看了论坛里很久以前的帖子说是jsp是容器内,是有jndi.properties文件的默认配置的,java是在容器外部,自行进行jndi.properties文件配置。网上提了一些在ejb和spring下修改配置的方法。我现在还没有接触那些,连接池在没用任何框架的时候是ok的,现在用在struts2中就不行了,希望有明白原理的大侠给个解决方案。 ------其他解决方案-------------------- 哎,纠结了半天原来这个问题没什么意义。
配置好数据库连接池之后想要进行测试,所以想单独运行java文件(也就是不运行jsp),选择的是run as java application,这个时候tomcat容器没有运行,所以会报题中的错误。
这只是为了调试数据库连接池才会单独运行这个java类的。
实际上,正式使用的时候连接池是在整个项目中作为工具类被调用的,也就是正式运行的时候采用的是run as run on server 方式,这个时候不会有异常发生。我已经自己测试过了。
为这个问题忙了大半夜,虽然原理上还是不懂,但是总算是把问题解决了。或多或少有点收获,留帖为证吧,也希望后来有遇到同样问题的人看了有所收获。
睡了!