Package

Source Code of Client

// $Id: Client.java,v 1.1 2001/12/17 17:45:08 per_nyfelt Exp $

import java.io.*;
import java.util.*;

import org.ozoneDB.*;

import javax.transaction.xa.*;
import javax.transaction.*;

import tyrex.tm.*;
//import tyrex.server.*;
import java.sql.*;
import javax.sql.*;

import org.postgresql.PostgresqlDataSource;


class Client {
   
    public static TransactionManager tm;
   
    public static RemoteDatabase db;
   
    public static XADataSource postgres;
   
    public static XAConnection xacon;
   

    public static void main( String[] args ) throws Exception {
        tm = Tyrex.getTransactionManager();

        db = (RemoteDatabase)ExternalDatabase.openDatabase( "ozonedb:remote://localhost:3333" );
        System.out.println( "Got ozone connection..." );

        tm.begin();
        Transaction tx = tm.getTransaction();
        tx.enlistResource( db.getXAResource() );
        tx.registerSynchronization( new Callback() );
       
        Auto auto = (Auto)db.objectForName( "MG" );
        if (auto == null) {
            auto = (Auto)db.createObject( AutoImpl.class.getName(), OzoneInterface.Public, "MG" );
        }
        Client.print( auto.toString() );
       
        tx.delistResource( db.getXAResource(), XAResource.TMSUCCESS );
        System.out.println( "after delist..." );

        tm.rollback();

//        postgres = initPostgres();
//        xacon = postgres.getXAConnection();
//        xacon.getConnection().getWarnings();
//        System.out.println( "Got postgres connection..." );
//
//       
////        Configure config = new Configure();
////        config.setLogWriter( new PrintWriter( System.out, true ) );
////        config.startServer();
//       
//       
//        beginTX();
//       
//        print( postgres.getXAConnection().getConnection().toString() );
//       
//        Connection conn = xacon.getConnection();
//        printTestRow( conn );
//        Statement s = conn.createStatement();
//        s.execute( "update personen set name = '2' where id = 100;" );
//        printTestRow( conn );
//       
//        Auto auto = (Auto)db.objectForName( "MG" );
//        if (auto == null) {
//            auto = (Auto)db.createObject( AutoImpl.class.getName(), OzoneInterface.Public, "MG" );
//        }
//        Client.print( auto.toString() );
//       
//        new AccessThread().start();
//        Thread.sleep( 3000 );
//       
////        Transaction tx = tm.suspend();
////       
////        //*************
////
////        beginTX();
////        try {
////            Auto auto2 = (Auto)db.objectForName( "MG" );
////            Client.print( "auto2:" + auto2 );
////   
////            auto2 = (Auto)db.createObject( AutoImpl.class.getName() );
////           // auto2.crash();
////        }
////        catch (Exception e) {
////        }
////        tm.commit();
////       
////        //*************
////
////        tm.resume( tx );
//       
//        tm.rollback();
//       
        db.close();
        Client.print( "deconnected..." );
        System.exit( 0 );
    }
   
   
    protected static XADataSource initPostgres() {
        PostgresqlDataSource pgdata = new PostgresqlDataSource();

        pgdata.setDatabaseName( "intra" );
        pgdata.setUser( "psql" );
        pgdata.setPassword( "daniela" );
        pgdata.setServerName( "david" );
        pgdata.setPortNumber( 5432 );
        return pgdata;

//        Driver driver = (Driver)(Class.forName("org.postgresql.Driver").newInstance());
//        DriverManager.registerDriver(driver);
//       
//        // ein paar Vorbereitungen zum Verbindungsaufbau...
//        Properties props = new Properties();
//        props.put ("user", "daniela");
//        props.put ("password", "daniela");
//        String jdbcURL = "jdbc:postgresql://david:5432/intra";       
//        //Verbindung herstellen        
//        Connection conn = DriverManager.getConnection( jdbcURL, props);
    }

   
    public static void beginTX() throws Exception {
        tm.begin();
        Transaction tx = tm.getTransaction();
        print( tx.toString() );
        tx.registerSynchronization( new Callback() );
       
        tx.enlistResource( db.getXAResource() );
        tx.enlistResource( xacon.getXAResource() );
        tx.enlistResource( db.getXAResource() );
       
        Connection conn = xacon.getConnection();
        print( conn.toString() + " autoCommit: " + conn.getAutoCommit() + " catalog: " + conn.getCatalog() );
    }
   
   
    public static void printTestRow( Connection conn ) throws Exception {
        Statement s = conn.createStatement();
        s.execute( "select name from personen where id = 100;" );
        ResultSet rs = s.getResultSet();
        rs.next();
        print( "SQL: name = " + rs.getString( 1 ) );
    }
   
   
    public static void print( String msg ) {
        System.out.println( "CLIENT: " + Thread.currentThread() + ": " + msg );
    }
   
}


class AccessThread extends Thread {
   
    public AccessThread() {
    }
   
    public void run() {
        try {
            Client.print( "------------" );
            Client.print( "AccessThread.run()..." );
           
            Client.beginTX();
           
            Connection conn = Client.postgres.getXAConnection().getConnection();
            Client.printTestRow( conn );

            Auto auto = (Auto)Client.db.objectForName( "MG" );
            Client.print( "" + auto );
           
            Thread.sleep( 1000 );
           
            Client.tm.commit();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}


class Callback implements Synchronization {
   
   
    public Callback() {
    }
   
   
    public void beforeCompletion() {
        Client.print( "Callback: beforeCompletion()" );
    }
   
   
    public void afterCompletion( int status ) {
        Client.print( "Callback: afterCompletion(): status:" + status );
    }
}
TOP

Related Classes of Client

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.