java连接数据库出错!在线等!

Ranma_True 2004-11-04 03:42:03
环境:win2000+jdk141+Oracle9i+weblogic81
配连接池测试的时候出现提示:
Warning! Connectivity to backend database not verified. This is either because required connection pool attributes "TestConnectionsOnReserve" or "TestConnectionsOnRelease" have not been enabled, or an invalid value has been specified for attribute "TestTableName". Please check the server log for more details..

但是仍然提示成功。
然后配了个数据源,jndi为DbOracle。
程序如下:
dbtest.java
package TBStructEntity;
import javax.sql.*;
import javax.naming.InitialContext;
import java.lang.*;
import java.sql.*;
import java.io.*;
import java.util.*;

public class dbtest
{
public void DbOperate()
{
DataSource ds=null;
Connection con = null;
try
{
InitialContext ctx = new InitialContext();
ds = (javax.sql.DataSource)ctx.lookup("DbOracle");
con = ds.getConnection();
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
}
test.java
import TBStructEntity.*;
public class test
{
public static void main(String[] args)
{
dbtest a=new dbtest();
a.DbOperate();
a=null;
}
}
编译通过,运行提示:
Need to specify class name in environment or system property, or as an applet pa
rameter, or in an application resource file: java.naming.factory.initial
...全文
339 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
jack9491 2004-11-11
  • 打赏
  • 举报
回复
看来楼主是概念错误了哦,在客户端为什么不能用连接池呢。是你的用法不对。你试试这个看
Properties containerEnv = new Properties();
containerEnv.setProperty("java.naming.factory.initial",
"weblogic.jndi.WLInitialContextFactory");
containerEnv.setProperty("java.naming.provider.url","t3://127.0.0.1:7001");

DataSource ds=null;
Connection con = null;
try
{
InitialContext ctx = new InitialContext(containerEnv);
ds = (javax.sql.DataSource)ctx.lookup("DbOracle");
con = ds.getConnection();
}catch(Exception e){
System.out.println(e.getMessage());
}


射天狼 2004-11-11
  • 打赏
  • 举报
回复
cuizm(射天狼):
老兄原来是不是vb版的?看着眼熟,解决方法就是:

/////////////
呵呵,眼力不错,本人目前是VB数据库版和JAVA基础版的版主,欢迎大家前来捧场,共同学习!!
edhappy 2004-11-11
  • 打赏
  • 举报
回复
峰哥,感觉是你的配置有问题,当初我学的时候也遇到了。具体怎么解决的好像记不清了。你先看看你的数据源能不能用,再看看jb中驱动加上了吗?这些东东挺乱的。
s001 2004-11-04
  • 打赏
  • 举报
回复
这有一个可在weblogic上运行的sample

http://www.howto-solutions.com/disp_post.asp?sub=13&usr=weiguo
Ranma_True 2004-11-04
  • 打赏
  • 举报
回复
cuizm(射天狼):
老兄原来是不是vb版的?看着眼熟,解决方法就是:
不能在未发布的java文件中调用使用连接池的bean,看来只能用直连来测试了。

我刚开始学java,做jsp,对classpath呀、weblogic的配置呀、包呀都感到很混乱,所以就糊里糊涂的用java文件调用使用连接池的bean了,weblogic是web服务器,怎么可能在那上面应用cs结构的测试呢。糊涂了。
dxj1234 2004-11-04
  • 打赏
  • 举报
回复
import javax.naming.InitialContext;是个什么东西撒
射天狼 2004-11-04
  • 打赏
  • 举报
回复
解决了吗?把解决办法贴出来共享一下~~~~~
Ranma_True 2004-11-04
  • 打赏
  • 举报
回复
to jinsfree(周公) :
你说的对,不应该这么写,我找到原因了。

不能在未发布的java文件中调用使用连接池的bean,看来只能用直连来测试了。
jinsfree 2004-11-04
  • 打赏
  • 举报
回复
通过weblogic应该不是这么写的吧
luckycat 2004-11-04
  • 打赏
  • 举报
回复
报什么错呢?把报错放上来,不然我也不知道什么问题
Ranma_True 2004-11-04
  • 打赏
  • 举报
回复
to luckycat(潘鑫) :
谢谢你,我的第一个问题解决了,在weblogic中测试通过,
但在java中仍然连接不上数据库。
duanma 2004-11-04
  • 打赏
  • 举报
回复
你可以在代码中插入几个System.out.print(),慢慢调试。
另外看看日志文件。

或者先用正常的连接方式连连看,慢慢找。。。再用连接池试试!
luckycat 2004-11-04
  • 打赏
  • 举报
回复
在weblogic的连接池配置中"TestConnectionsOnReserve" 或者是 "TestConnectionsOnRelease"选项你有没有启动,如果启动了,你看看“TestTableName”这个属性有没有填,TestTableName属性中必须输入一个你连接的目标数据库中的一个已经存在的表。

解释一下:
TestConnectionsOnReserve 选项如果被选中,当你的程序需要从连接池中获取连接的时候,weblogic会自动的调用一条sql语句,比如说“select count(*) from tableA”来判断这个连接是不是可以使用,是不是坏连接,如果是坏连接则会从连接池中被抛弃,否则的话就返回一个引用给你的程序,sql中的tableA就是TestTableName属性的值
同理TestConnectionsOnRelease就是在你的程序使用完连接,返回给连接池的时候来检测返回的连接是否还有效

不是JNDI的问题!
Ranma_True 2004-11-04
  • 打赏
  • 举报
回复
ctx.lookup("DbOracle"); 这句没问题。

jsp里能连接上。
命令行运行就出错。
用Oracle驱动或Weblogic提供的Oracle驱动出同样的错误。
fast_time 2004-11-04
  • 打赏
  • 举报
回复
应该是你的Weblogic数据连接池配置的问题
drugon 2004-11-04
  • 打赏
  • 举报
回复
ctx.lookup("DbOracle"); 查一下这句是不是和你的环境配置是一致的。
Ranma_True 2004-11-04
  • 打赏
  • 举报
回复
jsp里能连接上。
命令行运行就出错。
用Oracle驱动或Weblogic提供的Oracle驱动出同样的错误。
fanly 2004-11-04
  • 打赏
  • 举报
回复
数据源的配置好像是有问题,是JNDI找不到吧
Ranma_True 2004-11-04
  • 打赏
  • 举报
回复
看看java坛子里那一坨坨的连接数据库的问题吧,sun或oracle就不能就这类问题有个统一明确的总结?!
Ranma_True 2004-11-04
  • 打赏
  • 举报
回复
怎么java的人气这么差吗?
我同事的连接都没有问题,偏偏我的出了问题?一模一样的配置,只是他们连的公共服务期上的数据库,我连的是本机数据库而已。
顺便发发牢骚,我以前是用vb+sqlserver、asa的,后来改用vb+Oracle,Oracle是不错,只是自身带的文档也太烂了,提示问题不清不楚,连接起来问题多多。远不如连接sqlserver那么顺当。
现在用java+oracle,简直是惊了,配置manifest差一个空格、少一个回车换行都不行,如果格式严谨也可以,那你在文档中醒目提示一下也行呀,根本没有!又是配系统路径,又是配环境变量,怎么跟我们公司的产品似的,没有专业人士指导,用户根本就搞不定!没有人指导,真可谓是一个屁大的问题折腾三天。jdk文档里连个范例都不给,比msdn差了n倍!
加载更多回复(1)

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧