[再开一帖,分不够可以再加]在glassfish v3中建了一个JDBC连接“jdbc/test”,对应一个数据库连接池“test_pool”,test_pool的数据源类名称为“oracle.jdbc.pool.OracleDataSource”,资源类型为“javax.sql.DataSource”。通过以下方式,可以正常读取数据库中的数据:
Context ctx = new InitialContext();
DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/test"); 
Connection conn = ds.getConnection(); 
ResultSet rs=executeQuery("select * from tb_test");
//数据可以正常得到
...
但是当我调用存储过程的时候,就会出现致命错误:
Context ctx = new InitialContext();
DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/test"); 
Connection conn = ds.getConnection(); 
PreparedStatement proc=conn.prepareStatement("{ call PROC_TEST(?) }");
proc.setString(1,"abc");
//单步跟踪到这里是正常的,下面一句出错:
int n=proc.execute();
...Glassfish报如下错误:
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x85309776, pid=6986, tid=2249964400
#
# JRE version: 6.0_20-b02
# Java VM: Java HotSpot(TM) Client VM (16.3-b01 mixed mode linux-x86 )
# Problematic frame:
# C  [libclntsh.so.10.1+0x327776]
#
# An error report file with more information is saved as:
# /usr/local/glassfish-3.0.1/glassfish/domains/domain1/hs_err_pid6986.log
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
服务器环境:
Ubuntu 10.04 LTS Linux version 2.6.32-22-generic-pae (buildd@palmer)
jdk-6u20-linux-i586
Glassfish V3.0.1
安装ORACLE客户端:oracle-xe-client_10.2.0.1-1.0_i386请问各位是否遇到过类似的问题?该如何解决?

解决方案 »

  1.   

    存储过程在Oracle上执行看看会不会出错。
      

  2.   

    存储过程在ORACLE可以正确执行。
      

  3.   

    我自己测试的结果是,在调用select/insert/update语句时都能够正确运行,只有调用存储过程 { call proc() } 的时候才会出现上面的错误。到底是什么原因呢?
      

  4.   

    不使用glassfish提供的数据库连接池,自己建connection来操作也是同样的问题,无法调用存储过程!!唉,相当无语。
      

  5.   

    去hs_err_pid6986.log里查下是什么错
      

  6.   

    同样的程序在Windows+Glassfish上运行就OK?!!!估计UBUNTU操作系统与ORACLE的XE的驱动有兼容性问题!换系统了。
      

  7.   

    求救! MyEclipse6.6+jdk1.6.0连接Oracle11gR2出错
    驱动包ojdbc6_g.jar,ojdbc6.jar都试了,还是连接不上  错误信息
    Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at db.test.main(test.java:39)
    好像是jre版本问题???怎么解决