怎么java的人气这么差吗?
我同事的连接都没有问题,偏偏我的出了问题?一模一样的配置,只是他们连的公共服务期上的数据库,我连的是本机数据库而已。
顺便发发牢骚,我以前是用vb+sqlserver、asa的,后来改用vb+Oracle,Oracle是不错,只是自身带的文档也太烂了,提示问题不清不楚,连接起来问题多多。远不如连接sqlserver那么顺当。
现在用java+oracle,简直是惊了,配置manifest差一个空格、少一个回车换行都不行,如果格式严谨也可以,那你在文档中醒目提示一下也行呀,根本没有!又是配系统路径,又是配环境变量,怎么跟我们公司的产品似的,没有专业人士指导,用户根本就搞不定!没有人指导,真可谓是一个屁大的问题折腾三天。jdk文档里连个范例都不给,比msdn差了n倍!

解决方案 »

  1.   

    看看java坛子里那一坨坨的连接数据库的问题吧,sun或oracle就不能就这类问题有个统一明确的总结?!
      

  2.   

    数据源的配置好像是有问题,是JNDI找不到吧
      

  3.   

    jsp里能连接上。
    命令行运行就出错。
    用Oracle驱动或Weblogic提供的Oracle驱动出同样的错误。
      

  4.   

    ctx.lookup("DbOracle"); 查一下这句是不是和你的环境配置是一致的。
      

  5.   

    应该是你的Weblogic数据连接池配置的问题
      

  6.   

    ctx.lookup("DbOracle"); 这句没问题。jsp里能连接上。
    命令行运行就出错。
    用Oracle驱动或Weblogic提供的Oracle驱动出同样的错误。
      

  7.   

    在weblogic的连接池配置中"TestConnectionsOnReserve" 或者是 "TestConnectionsOnRelease"选项你有没有启动,如果启动了,你看看“TestTableName”这个属性有没有填,TestTableName属性中必须输入一个你连接的目标数据库中的一个已经存在的表。解释一下:
    TestConnectionsOnReserve 选项如果被选中,当你的程序需要从连接池中获取连接的时候,weblogic会自动的调用一条sql语句,比如说“select count(*) from tableA”来判断这个连接是不是可以使用,是不是坏连接,如果是坏连接则会从连接池中被抛弃,否则的话就返回一个引用给你的程序,sql中的tableA就是TestTableName属性的值
    同理TestConnectionsOnRelease就是在你的程序使用完连接,返回给连接池的时候来检测返回的连接是否还有效不是JNDI的问题!
      

  8.   

    你可以在代码中插入几个System.out.print(),慢慢调试。
    另外看看日志文件。或者先用正常的连接方式连连看,慢慢找再用连接池试试!
      

  9.   

    to luckycat(潘鑫) :
    谢谢你,我的第一个问题解决了,在weblogic中测试通过,
    但在java中仍然连接不上数据库。
      

  10.   

    通过weblogic应该不是这么写的吧
      

  11.   

    to jinsfree(周公) :
    你说的对,不应该这么写,我找到原因了。不能在未发布的java文件中调用使用连接池的bean,看来只能用直连来测试了。
      

  12.   

    import javax.naming.InitialContext;是个什么东西撒
      

  13.   

    cuizm(射天狼):
    老兄原来是不是vb版的?看着眼熟,解决方法就是:
    不能在未发布的java文件中调用使用连接池的bean,看来只能用直连来测试了。我刚开始学java,做jsp,对classpath呀、weblogic的配置呀、包呀都感到很混乱,所以就糊里糊涂的用java文件调用使用连接池的bean了,weblogic是web服务器,怎么可能在那上面应用cs结构的测试呢。糊涂了。
      

  14.   

    这有一个可在weblogic上运行的sample http://www.howto-solutions.com/disp_post.asp?sub=13&usr=weiguo
      

  15.   

    cuizm(射天狼):
    老兄原来是不是vb版的?看着眼熟,解决方法就是://///////////
    呵呵,眼力不错,本人目前是VB数据库版和JAVA基础版的版主,欢迎大家前来捧场,共同学习!!
      

  16.   

    看来楼主是概念错误了哦,在客户端为什么不能用连接池呢。是你的用法不对。你试试这个看
    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());
    }