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 + -
显示快捷键?