KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > rmi > server > RmiPreparedStatementFactory


1 package com.daffodilwoods.rmi.server;
2
3 import java.util.*;
4 import java.rmi.server.UnicastRemoteObject JavaDoc;
5 import java.rmi.RemoteException JavaDoc;
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 JavaDoc {
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 JavaDoc{
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