⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 servantmanagerimpl.java

📁 java1.6众多例子参考
💻 JAVA
字号:
/* * @(#)ServantManagerImpl.java	1.13 05/11/17 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. *//* * @(#)ServantManagerImpl.java	1.13 05/11/17 * * Copyright 1993-1997 Sun Microsystems, Inc. 901 San Antonio Road, * Palo Alto, California, 94303, U.S.A.  All Rights Reserved. * * This software is the confidential and proprietary information of Sun * Microsystems, Inc. ("Confidential Information").  You shall not * disclose such Confidential Information and shall use it only in * accordance with the terms of the license agreement you entered into * with Sun. * * CopyrightVersion 1.2 * */package com.sun.corba.se.impl.naming.pcosnaming;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;import java.util.Hashtable;import org.omg.CORBA.Policy;import org.omg.CORBA.LocalObject;import org.omg.PortableServer.POA;import org.omg.PortableServer.Servant;import org.omg.PortableServer.ForwardRequest;import org.omg.PortableServer.ServantLocator;import org.omg.PortableServer.LifespanPolicyValue;import org.omg.PortableServer.RequestProcessingPolicyValue;import org.omg.PortableServer.IdAssignmentPolicyValue;import org.omg.PortableServer.ServantRetentionPolicyValue;import org.omg.PortableServer.ServantLocatorPackage.CookieHolder;import com.sun.corba.se.spi.orb.ORB;/** * @version     1.6, 99/10/07 * @author      Rohit Garg * @since       JDK1.2 */public class ServantManagerImpl extends org.omg.CORBA.LocalObject implements ServantLocator{    // computed using serialver tool    private static final long serialVersionUID = 4028710359865748280L;    private ORB orb;    private NameService theNameService;    private File logDir;    private Hashtable contexts;    private CounterDB counterDb;    private int counter;    private final static String objKeyPrefix = "NC";    ServantManagerImpl(ORB orb, File logDir, NameService aNameService)    {	this.logDir = logDir;	this.orb    = orb;	// initialize the counter database	counterDb   = new CounterDB(logDir);	contexts    = new Hashtable();	theNameService = aNameService;    }    public Servant preinvoke(byte[] oid, POA adapter, String operation, 			     CookieHolder cookie) throws ForwardRequest    {	String objKey = new String(oid);	Servant servant = (Servant) contexts.get(objKey);	if (servant == null)	{		 servant =  readInContext(objKey);	}	return servant;    }    public void postinvoke(byte[] oid, POA adapter, String operation,			   java.lang.Object cookie, Servant servant)    {	// nada    }    public NamingContextImpl readInContext(String objKey)    {	NamingContextImpl context = (NamingContextImpl) contexts.get(objKey);	if( context != null )	{		// Returning Context from Cache		return context;	}		File contextFile = new File(logDir, objKey);	if (contextFile.exists()) {	    try {		FileInputStream fis = new FileInputStream(contextFile);		ObjectInputStream ois = new ObjectInputStream(fis);		context = (NamingContextImpl) ois.readObject();		context.setORB( orb );		context.setServantManagerImpl( this );		context.setRootNameService( theNameService );		ois.close();	    } catch (Exception ex) {	    }	}	if (context != null)	{		contexts.put(objKey, context);	}	return context;    }    public NamingContextImpl addContext(String objKey, 					NamingContextImpl context)    {	File contextFile =  new File(logDir, objKey);	if (contextFile.exists()) 	{	    context = readInContext(objKey);	}	else {	    try {		FileOutputStream fos = new FileOutputStream(contextFile);		ObjectOutputStream oos = new ObjectOutputStream(fos);		oos.writeObject(context);		oos.close();	    } catch (Exception ex) {	    }	}	try	{		contexts.remove( objKey );	}	catch( Exception e)	{	}	contexts.put(objKey, context);	return context;    }	    public void updateContext( String objKey,				   NamingContextImpl context )    {	File contextFile =  new File(logDir, objKey);	if (contextFile.exists()) 	{		contextFile.delete( );		contextFile =  new File(logDir, objKey);	}		        try {		FileOutputStream fos = new FileOutputStream(contextFile);		ObjectOutputStream oos = new ObjectOutputStream(fos);		oos.writeObject(context);		oos.close();	    } catch (Exception ex) {		ex.printStackTrace( );	    }    }    public static String getRootObjectKey()    {	return objKeyPrefix + CounterDB.rootCounter;    }    public String getNewObjectKey()    {	return objKeyPrefix + counterDb.getNextCounter();    }}class CounterDB implements Serializable{    CounterDB (File logDir)    {        counterFileName = "counter";	counterFile = new File(logDir, counterFileName);	if (!counterFile.exists()) {	    counter = new Integer(rootCounter);    	    writeCounter();	} else {	    readCounter();	}    }    private void readCounter()    {	try {	    FileInputStream fis = new FileInputStream(counterFile);	    ObjectInputStream ois = new ObjectInputStream(fis);	    counter = (Integer) ois.readObject();	    ois.close();	} catch (Exception ex) {				}    }    private void writeCounter()    {	try {	    counterFile.delete();	    FileOutputStream fos = new FileOutputStream(counterFile);	    ObjectOutputStream oos = new ObjectOutputStream(fos);	    oos.writeObject(counter);	    oos.flush();	    oos.close();	} catch (Exception ex) {	}    }    public synchronized int getNextCounter()    {	int counterVal = counter.intValue();	counter = new Integer(++counterVal); 	writeCounter();	return counterVal;    }	    private Integer counter;    private static String counterFileName = "counter";    private transient File counterFile;    public  final static int rootCounter = 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -