environment.java
来自「一个agent 工具包,可以开发移动设备应用,考虑了安全措施」· Java 代码 · 共 198 行
JAVA
198 行
/**
* Classe che rappresenta l'astrazione di place.
* <BR>Contiene i riferimenti a tutti gli oggetti che compongono un <I>place</I> o un <I>default place</I>,
* che e' il place che gestisce un dominio.
* <BR>Il costruttore di Environment avvia il place.
*
* @author Livio Profiri (aggiunte di Luigi Antenucci)
*/
package SOMA;
// Ecco dove trovare le classi degli oggetti che compongono il sistema
import SOMA.network.NetworkManager;
import SOMA.explorer.DirExplorerItem;
import SOMA.naming.*;
import SOMA.naming.domain.*;
import SOMA.naming.place.*;
import SOMA.agent.mobility.AgentManager;
import SOMA.mobilePlace.*;
import SOMA.gui.ActionPlace; // Aggiunta da Gigi!
import SOMA.gui.remotegui.SportelloRichieste; // Aggiunta da Gigi!
import SOMA.explorer.*;
import SOMA.network.connection.*;
import SOMA.telnet.*;
import SOMA.resourceManagement.*;
import SOMA.gui.Debug;
import java.io.*;
import java.util.*;
public class Environment {
/** Identificatore del place.
* <code>final</code> impedisce ad un place di alterare il suo identificatore.*/
public final PlaceID placeID;
/** Gestore delle comunicazioni fra place.*/
public NetworkManager networkManager = null;
/** Menu di gestione del place.*/
public DirExplorerItem dir;
/** Servizio di nomi di dominio.
* E' presente solo in un <I>default place</I>*/
public DomainNameService domainNameService;
/** Servizio di nomi di place.*/
public PlaceNameService placeNameService;
/** Gestore degli agenti.*/
public AgentManager agentManager;
/** Gestore dei place mobili.*/
public MobilePlaceManager mobilePlaceManager;
/** Gestore delle risorse del place.*/
public PlaceResourceManager placeResourceManager;
/** Gestore delle risorse del domain. */
public DomainResourceManager domainResourceManager;
/** Gestore della finestra del Place (package gui); aggiunto da Gigi */
public ActionPlace actionPlace; // Aggiunta da Gigi!
/** Thread di attesa delle richieste da parte delle applet (package gui.remoteapplet); aggiunto da Gigi */
public SportelloRichieste sportelloRichieste; // Aggiunta da Gigi!
/** The directory where we store the metadataRepository, added by Luca Foschini, 17 november 2002, Champaign */
public String metadataRepositoryFile = System.getProperty("user.dir")/*SOMA directory*/ + System.getProperty("file.separator") + "metadataRepository"+System.getProperty("file.separator")+"presentationsMetaDataDataBase";
/** The directory where we store the profileRepository, added by Luca Foschini, 17 november 2002, Champaign */
public String profileRepositoryFile = System.getProperty("user.dir")/*SOMA directory*/ + System.getProperty("file.separator") + "profileRepository"+System.getProperty("file.separator")+"profileDataBase";
/** The directory where we store the profileRepository, added by Luca Foschini, july 2003, Brisighella */
public String platformDescriptorsFile = System.getProperty("user.dir")/*SOMA directory*/ + System.getProperty("file.separator") + "profileRepository"+System.getProperty("file.separator")+"platformDescriptorsDataBase";
/** The directory where we store the componentRepository, added by Luca Foschini, 17 november 2002, Champaign */
public String repositoryBaseDirectory;
/** L'InputStream del place.*/
public InputStream in;
/** Il MultiOutputStream out. */
public MultiOutputStream multiOut = new MultiOutputStream();
/** L'OututStream del place.*/
public PrintStream out = new PrintStream( multiOut );
/** Il MultiOutputStream err. */
public MultiOutputStream multiErr = new MultiOutputStream();
/** L'ErrorStream del place.*/
public PrintStream err = new PrintStream( multiErr );
public ThreadGroup threadGroup = null;
private Exception creationException = null; // Un po' sporco, ma funziona...
/** Costruttore usato per avere un Environment "vuoto". */
public Environment( DirExplorerItem dir, InputStream in, PrintStream out, PrintStream err )
{
this.dir = dir;
this.in = in;
multiOut.add( out );
multiErr.add( err );
placeID = new PlaceID( "???", "???" );
repositoryBaseDirectory = System.getProperty("user.dir")/*SOMA directory*/ + System.getProperty("file.separator") + "componentRepository"+placeID.domain+placeID.place;
}
/** Costruttore usato per avere un Environment "vuoto". */
public Environment( PlaceID placeID)
{
this.placeID = placeID;
repositoryBaseDirectory = System.getProperty("user.dir")/*SOMA directory*/ + System.getProperty("file.separator") + "componentRepository"+placeID.domain+placeID.place;
}
/** Costruttore: avvia il place chiamando i costruttori di tutti i suoi componenti.
*
* <P> I final servono solo per poter utilizzare delle classi anonime.
*/
public Environment( final PlaceID placeID, final DirExplorerItem dir, final int port,
final InputStream in, final PrintStream out, final PrintStream err )
//throws IOException, ConnectionServer.ConnectionServerException, NameException
throws Exception
// Eccezioni di NetworkManager:
{
this.placeID = placeID;
this.dir = dir;
repositoryBaseDirectory = System.getProperty("user.dir")/*SOMA directory*/ + System.getProperty("file.separator") + "componentRepository"+placeID.domain+placeID.place;
this.in = in;
//this.out = out;
//this.err = err;
multiOut.add( out );
multiErr.add( err );
dir.addItem( "env", new ObjectExplorerItem( this ) );
aggiungiVociDellaGUI(dir); // AGGIUNTA DA Luigi Antenucci (per la GUI)
createNameServices();
if( placeID.isDomain() )
mobilePlaceManager = new MobilePlaceManager( this );
// Tutti i threads creati dall'environment, ossia, facenti parte del place si
// troveranno in questo ThreadGroup.
threadGroup = new ThreadGroup( "[Environment:" + placeID + "]" );
threadGroup.setDaemon( true ); // Distrutto dopo l'ultimo thread di questo gruppo
Thread initThread =
new Thread( threadGroup, toString() + " Initialization Thread." )
{
public void run()
{
try
{
//out.println( "The initialization thread: " + Thread.currentThread() );
//out.println( "Threadgroup: " + Thread.currentThread().getThreadGroup() );
networkManager = new NetworkManager( Environment.this, port );
//out.println( "NewtworkManager created!" );
Debug.outln( "Environment: NewtworkManager created!" );
agentManager = new AgentManager( Environment.this );
//out.println( "AgentManager created!" );
Debug.outln( "Environment: AgentManager created!" );
/* Aggiunte per il Resource Management --------------------- */
/*
placeResourceManager = new PlaceResourceManager( Environment.this );
out.println( "PlaceResourceManager created!" );
// Debug.outln( "Environment: PlaceResourceManager created!" );
if (placeID.isDomain())
{
domainResourceManager = new DomainResourceManager( Environment.this );
//out.println( "DomainResourceManager created!" );
Debug.outln( "Environment: DomainResourceManager created!" );
}
else domainResourceManager = null;
*/
/* -------------------------------------------------------- */
dir.addItem( "threads", new SOMA.utility.ThreadsExplorerItem() );
}
catch( Exception e )
{
creationException = e;
}
}
};
initThread.setDaemon( true );
initThread.start();
initThread.join();
if( creationException != null )
throw( creationException );
// Questo ha solo finalit
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?