Skip to Main Content

Java Database Connectivity (JDBC)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Why is this java.sql.SQLRecoverableException: Closed Connection?

GadoMay 26 2018 — edited May 26 2018

Hello,

I'm using ODBCS with a JavaFx application.

The application works fine when i start it ... but when i leave it open for a while and then try to save something it raises this error:

java.sql.SQLRecoverableException: Closed Connection

    at oracle.jdbc.driver.PhysicalConnection.getAutoCommit(PhysicalConnection.java:4337)

    at oracle.jdbc.driver.PhysicalConnection.rollback(PhysicalConnection.java:4507)

    at model.Database.rollback(Database.java:95)

    at viewcontroller.main.MainPageController$2.call(MainPageController.java:569)

    at viewcontroller.main.MainPageController$2.call(MainPageController.java:481)

    at javafx.concurrent.Task$TaskCallable.call(Task.java:1423)

    at java.util.concurrent.FutureTask.run(FutureTask.java:266)

    at java.lang.Thread.run(Thread.java:748)

This issue only happens when connecting to the ODBCS ... when i test the application with my the XE database on my laptop it works fine.

So why am i getting this error? and please how can i fix it?

This is my Database connection class:

private static final String username = ******

    private static final String password = *******

    private static final String connString = "jdbc:oracle:thin:@localhost:1521:xe";

    private static Connection conn;   

   

    private static Database instanse = new Database();

   

    private Database(){       

            System.out.println("Databse loading ..");

                    try {

                        if(conn==null){                 

                        setconnection();

                        }

                    } catch (SQLException | ClassNotFoundException ex) {

                        Logger.getLogger(Database.class.getName()).log(Level.SEVERE, null, ex);

                    }         

    }   

   

    public static Database getInstance(){

        if(instanse == null){               

            instanse = new Database();

        }

        return instanse;

    }

   

    public void setconnection() throws SQLException, ClassNotFoundException {

        OracleDataSource ds = new OracleDataSource();

        ds.setURL(connString);

        ds.setUser(username);

        ds.setPassword(password);

        conn = ds.getConnection();

        conn.setAutoCommit(false);

    }  

   

    public Connection getDbConn(){

        getInstance();

        return conn;

    }

Thank you

Gado

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jun 23 2018
Added on May 26 2018
2 comments
15,706 views