import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.sql.*;


public class TestCommitBeforeCloseWithoutXA {

    public static void main(String[] args) {
        if (args.length < 5)
            System.out.println("main parameters: dbName serverName dbPortNumber user password");
        else
            test(args[0], args[1], Integer.parseInt(args[2]), args[3], args[4]);
    }

    protected static void test(String dbName, String serverName, int dbPortNumber, String user, String password) {
	Connection conn = null;

        try {
            Class.forName("org.postgresql.Driver");

            InputStreamReader myReader = new InputStreamReader(System.in);
            BufferedReader myBufferedReader = new BufferedReader(myReader);

            conn = 
		DriverManager.getConnection("jdbc:postgresql://"+serverName+'/'+dbName+':'+dbPortNumber, user, password );
	    conn.setAutoCommit(false);

            CallableStatement myCallableStatement = conn.prepareCall("{? = Call cp_TestPostgresStandAlone()}");
            myCallableStatement.registerOutParameter(1, Types.OTHER);
            myCallableStatement.execute();

            ResultSet myResultSet = (ResultSet) myCallableStatement.getObject(1);

            if (myResultSet.next())
               System.out.println(myResultSet.getInt(1));

            conn.commit();

            myResultSet.close();
            myCallableStatement.close();
        } catch (Exception e) {
            System.out.println("An exception has occured." + e.getMessage());
            e.printStackTrace();
        }
	finally {
		if (conn!=null) try {conn.close();} catch( Exception ex ){}
	}
    }
}

