环境:
web服务器:     linux-x86,Tomcat5.5, JDK 1.5.0_04-b05, oracle 10.1.0.3.0
oracle数据库:  solaris, oracle 10.2.0.2.0
采用OCI连接方式,由spring配置dbcp连接方式,通过hibernate实现持久层,dbcp配置如下:
    <bean id="dataSource"
        class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName" value="${jdbc.driverClassName}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
        <property name="maxActive" value="50"/>
        <property name="maxIdle" value="10"/>
        <property name="maxWait" value="1000"/>
        <property name="removeAbandoned" value="true"/>
        <property name="removeAbandonedTimeout" value="60"/>
        <property name="logAbandoned" value="true"/>
        <property name="accessToUnderlyingConnectionAllowed" value="true"/>
    </bean>现象:
tomcat运行期间,会偶尔,可能是几小时就jvm进程退出。详观日志,初步分析可能原因如下,希望遇到过此灾难的同胞协助一把。总结自己和网上的结果,存在以下可能原因:
1. oracle数据库客户端和服务器端版本不一致
2. 网上有人说oracle的OCI方式在多线程时会有问题,原话如下:OCI multithreaded application may core  dump sporadically in some
threads and not in others if an Oracle error occurs .
Eg: If a thread calls OCIParamGet() and OCIAttrGet() after
    OCIStmtExecute() returns an error.
我知道这些信息可能不够,但我实在不知道怎么提供更多的信息了。附虚拟机错误日志见下:#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
#  SIGSEGV (0xb) at pc=0x4e0d29f1, pid=19998, tid=1280203696
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0_04-b05 mixed mode)
# Problematic frame:
# C  [libclntsh.so.10.1+0x5289f1]  kdrreb+0xa1
#---------------  T H R E A D  ---------------Current thread (0x0a1020b8):  JavaThread "http-80-Processor269" daemon [_thread_in_native, id=6406]siginfo:si_signo=11, si_errno=0, si_code=2, si_addr=0x380ea6e8Registers:
EAX=0x380ea6e8, EBX=0x4e620884, ECX=0x00000027, EDX=0x00000012
ESP=0x4c4dd508, EBP=0x4c4dd52c, ESI=0x380b9d34, EDI=0x380ba034
EIP=0x4e0d29f1, CR2=0x380ea6e8, EFLAGS=0x00210297Top of Stack: (sp=0x4c4dd508)
0x4c4dd508:   4e620884 00000022 380b9938 380b9f32
0x4c4dd518:   380b9938 380ba034 380ba034 4c4dd564
0x4c4dd528:   380e7088 4c4dd568 4e0d2c6c 00000000
0x4c4dd538:   380e7088 380ba034 00000000 380b9938
0x4c4dd548:   380b9d34 380b9f32 4c4dd564 4e620884
0x4c4dd558:   00000001 38075174 380e7088 00000000
0x4c4dd568:   4c4dd5bc 4e0c8f8f 380b9938 4e0cacbc
0x4c4dd578:   380878e8 4e620884 380878fc 00000000 Instructions: (pc=0x4e0d29f1)
0x4e0d29e1:   d2 8b 7d f4 0f b6 4f 02 3b d1 0f 8d 7e 00 00 00
0x4e0d29f1:   0f b6 08 81 f9 ff 00 00 00 75 18 8b 7d ec 33 c9 Stack: [0x4c465000,0x4c4e6000),  sp=0x4c4dd508,  free space=481k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [libclntsh.so.10.1+0x5289f1]  kdrreb+0xa1
C  [libclntsh.so.10.1+0x528c6c]  kdrcrc+0x76
C  [libclntsh.so.10.1+0x51ef8f]  ttcfopr+0xa1f
C  [libclntsh.so.10.1+0x514675]  ttcdrv+0x419
C  [libclntsh.so.10.1+0x3b6471]  nioqwa+0x39
C  [libclntsh.so.10.1+0x228042]  upirtrc+0x700
C  [libclntsh.so.10.1+0x1becf9]  kpurcsc+0xb1
C  [libclntsh.so.10.1+0x17b7f5]  kpuexecv8+0xe25
C  [libclntsh.so.10.1+0x17d370]  kpuexec+0xa6a
C  [libclntsh.so.10.1+0x1f1b4a]  OCIStmtExecute+0x54
C  [libocijdbc10.so+0x9f5a]
C  [libocijdbc10.so+0xc550]  t2cParseExecuteDescribe+0x314
C  [libocijdbc10.so+0xf652]  Java_oracle_jdbc_driver_T2CPreparedStatement_t2cParseExecuteDescribe+0x30a
J  oracle.jdbc.driver.T2CPreparedStatement.t2cParseExecuteDescribe(JIIIZZZZ[BIBII[SI[B[CII[SII[B[CII[S[BIIIIZZ[Loracle/jdbc/driver/Accessor;[[[B[J[BI[CI[SIZ)I
J  oracle.jdbc.driver.T2CPreparedStatement.execute_for_describe()V
J  oracle.jdbc.driver.OracleStatement.execute_maybe_describe()V
J  oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout()V
J  oracle.jdbc.driver.OraclePreparedStatement.executeInternal()I
J  oracle.jdbc.driver.OraclePreparedStatement.executeQuery()Ljava/sql/ResultSet;
J  org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery()Ljava/sql/ResultSet;
J  net.sf.hibernate.loader.Loader.getResultSet(Ljava/sql/PreparedStatement;Lnet/sf/hibernate/engine/RowSelection;Lnet/sf/hibernate/engine/SessionImplementor;)Ljava/sql/ResultSet;
J  net.sf.hibernate.loader.Loader.doQuery(Lnet/sf/hibernate/engine/SessionImplementor;Lnet/sf/hibernate/engine/QueryParameters;Ljava/lang/Object;Ljava/io/Serializable;[Ljava/io/Serializable;Z)Ljava/util/List;
J  net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Lnet/sf/hibernate/engine/SessionImplementor;Lnet/sf/hibernate/engine/QueryParameters;Ljava/lang/Object;Ljava/io/Serializable;[Ljava/io/Serializable;Z)Ljava/util/List;
J  net.sf.hibernate.loader.Loader.list(Lnet/sf/hibernate/engine/SessionImplementor;Lnet/sf/hibernate/engine/QueryParameters;Ljava/util/Set;[Lnet/sf/hibernate/type/Type;)Ljava/util/List;
J  net.sf.hibernate.impl.SessionImpl.find(Ljava/lang/String;Lnet/sf/hibernate/engine/QueryParameters;)Ljava/util/List;
J  net.sf.hibernate.impl.QueryImpl.list()Ljava/util/List;
J  org.springframework.orm.hibernate.HibernateTemplate$19.doInHibernate(Lnet/sf/hibernate/Session;)Ljava/lang/Object;
J  org.springframework.orm.hibernate.HibernateTemplate.execute(Lorg/springframework/orm/hibernate/HibernateCallback;Z)Ljava/lang/Object;
J  org.springframework.orm.hibernate.HibernateTemplate.find(Ljava/lang/String;[Ljava/lang/Object;[Lnet/sf/hibernate/type/Type;)Ljava/util/List;
J  com.berheley.tjrc.persistence.daoImpl.CommonsPersister.query(Ljava/lang/String;)Ljava/util/List;
j  com.berheley.tjrc.business.serviceImpl.GrJlServiceImpl.getById(Ljava/lang/String;)Ljava/lang/Object;+27
j  sun.reflect.GeneratedMethodAccessor278.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+40
J  sun.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
J  java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
J

解决方案 »

  1.   

    有个地方版本写错了:
    oracle数据库:  solaris, oracle 10.2.0.2.0  
        -》
    oracle数据库:  solaris, oracle 10.1.0.2.0
      

  2.   

    LZ,我也出现了你的错误情况!我手动直接到Tomcat文件夹里打开服务器问题就会产生,可现在我用Eclipse 就不会!LZ有解决的办法通知我一声哦!
    QQ;253863881我也查了资料,没什么实质的作用!
    有个网站上说了两条,我要试试!不知道有没有别的高手遇到个这个问题!
      

  3.   

    This particular problem is currently under investigation. The workaround for this problem is: 
    Check to see if the Java Runtime Environment (JRE) is installed correctly on your system. If you are able to run the testvm applet, then the JRE is installed and configured correctly on your system. The problem may be specific to that particular applet. The applet may contain programming errors or the website is having technical difficulties. In that case, please contact the web site administrators or the software vendor to notify them of this issue.
    Test Java Virtual Machine 
    Download and install the latest version of the JRE. The latest version may contain update or fixes to your problem.
    Install the latest version of Java Runtime Environment Installation instructions