Java Oracle连接崩溃

Java Oracle连接崩溃,java,oracle,tomcat,jdbc,Java,Oracle,Tomcat,Jdbc,我正在实施学校项目。我们必须在JavaEE和Oracle中创建自己的ORM。我已经尝试了两种数据库连接方式: Context initContext = new InitialContext(); Context envContext = (Context)initContext.lookup("java:comp/env"); dataSource = (DataSource)envContext.lookup("jdbc/isets"); connection = dataSource

我正在实施学校项目。我们必须在JavaEE和Oracle中创建自己的ORM。我已经尝试了两种数据库连接方式:

Context initContext = new InitialContext();
Context envContext  = (Context)initContext.lookup("java:comp/env");

dataSource = (DataSource)envContext.lookup("jdbc/isets");

connection = dataSource.getConnection();
connection.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
  • 获取连接(DSN、用户、密码)
  • Context initContext=新的InitialContext()
    Context-envContext=(Context)initContext.lookup(“java:comp/env”)
    this.dataSource=(dataSource)envContext.lookup(“jdbc/isets”) 一种方法对我来说比另一种更糟糕。我有一个实体(表行),这个实体有一个包含其他实体列表的属性。当我试图打印这些实体时,有时看起来数据库连接中断了,因为一些实体没有加载。几乎每次都有一些没有打印出来,有时一切正常(无法预测哪些不会打印出来,或者什么时候可以)

    当我使用第一种连接方法时,它只适用于很少的数据库查询。例如,如果我试图从数据库中选择10个对象(在10个查询中),将显示Oracle server的一个异常。另一方面,当我使用第二种方法时,会有更多的问题。第一个问题是,几乎每次我运行应用程序时,它都会无限加载(至少10分钟)。有时它可以正确加载,但根据第一种方法,更多的“子实体”无法正确加载

    我想使用连接池,但我不知道问题出在哪里。我遵循了这个,但它不想起作用:-(

    以下是my context.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <Context antiJARLocking="true" path="/ISETS-TOMCAT">
        <Resource name="jdbc/isets"
            auth="Container"
            type="javax.sql.DataSource"
    
            testWhileIdle="true"
            testOnBorrow="true"
            testOnReturn="false"
            validationQuery="SELECT 1 FROM DUAL"
    
            maxActive="15"
            maxIdle="5"
            maxWait="-1"
    
            removeAbandoned="true"
            removeAbandonedTimeout="60"
            logAbandoned="true"
    
            driverClassName="oracle.jdbc.OracleDriver"
            url="jdbc:oracle:thin:@localhost:1521:XE"
            username="SYSTEM"
            password="admin"
    
            defaultTransactionIsolation="SERIALIZABLE"  />
    </Context>
    

    我做错什么了吗?请帮忙好吗?谢谢,再见。

    因为您正在使用Connection.TRANSACTION\u从一个连接所做的可序列化更改在另一个连接中可能看不到。我会尝试删除此设置。

    您的context.xml和web.xml以及您的代码(乍一看!)也许您可以向我们展示实体内部的连接管理?另外,请向我们展示您遇到的异常。您是否正在耗尽资源(例如,存在的最大游标数)因为您在使用结果集和释放连接后没有正确关闭它们,也许?显示您得到的异常将非常有帮助。以下是异常消息:侦听器拒绝连接,并出现以下错误:ORA-12519,TNS:找不到合适的服务处理程序然后是,这就是您正在做的。您需要检查所有代码是否存在连接泄漏…删除可序列化隔离级别不起作用,不幸的是,这是项目的要求,但谢谢。例外情况是什么?
    Context initContext = new InitialContext();
    Context envContext  = (Context)initContext.lookup("java:comp/env");
    
    dataSource = (DataSource)envContext.lookup("jdbc/isets");
    
    connection = dataSource.getConnection();
    connection.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);