1 package com.daffodilwoods.rmi.server; 2 3 import java.util.*; 4 import java.rmi.server.UnicastRemoteObject ; 5 import java.rmi.RemoteException ; 6 public class RmiPreparedStatementFactory { 7 private int MIN_POOL_SIZE = 25; 8 private int MAX_POOL_SIZE = 500; 9 10 ArrayList freeStatements; 11 12 public RmiPreparedStatementFactory() { 13 freeStatements = new ArrayList(MAX_POOL_SIZE/2); 14 } 15 16 public synchronized RmiPreparedStatementServerSide getStatement() throws RemoteException { 17 int freeCount = freeStatements.size(); 18 if( freeCount == 0 ){ 19 return new RmiPreparedStatementServerSide(); 20 } 21 else{ 22 RmiPreparedStatementServerSide statement = (RmiPreparedStatementServerSide)freeStatements.remove(freeCount-1); 23 statement.deInitialize(); 24 return statement; 25 } 26 } 27 28 public synchronized void freeStatement(RmiPreparedStatementServerSide statement) throws RemoteException { 29 if( freeStatements.size() < MAX_POOL_SIZE ){ 30 freeStatements.add(statement); 31 } 32 else{ 33 UnicastRemoteObject.unexportObject(statement,true); 34 } 35 } 36 } 37 | Popular Tags |