//----------------------------------------------------------------------------
//
// Module : ServerDT.java
//
// Description : interfaccia
remota per il ServerDeskTop
//
// Product : RemoteDesktop
//
// Author : Andrea.Musumeci@novara.alpcom.it
//
// Date : dicembre, 1998
//
// Copyright : ISA Italian Software
Agency SRL - freeware per usi non commerciali
//
//----------------------------------------------------------------------------
package com.isa.rmi.RemoteDesktop;
public interface ServerDT extends
java.rmi.Remote {
boolean execute(String command)
throws java.rmi.RemoteException;
}
Ed ora implementiamo il tutto
in un'adeguata classe:
//----------------------------------------------------------------------------
//
// Module : ServerDTImpl.java
//
// Description : classe ServerDTImpl
//
// Product : RemoteDesktop
//
// Author : Andrea.Musumeci@novara.alpcom.it
//
// Date : dicembre, 1998
//
// Copyright : ISA Italian Software
Agency SRL - freeware per usi non commerciali
//----------------------------------------------------------------------------
package com.isa.rmi.RemoteDesktop;
import java.net.URL;
import java.rmi.*;
import java.rmi.server.*;
import java.rmi.registry.LocateRegistry;
import java.rmi.server.UnicastRemoteObject;
import java.util.*;
import java.io.*;
import java.net.*;
import java.lang.*;
public class ServerDTImpl
extends UnicastRemoteObject implements
ServerDT, java.io.Serializable
{
final String nameServerDT="RemoteDesktop";
java.lang.Runtime rt;
/***********/
/* costruttore */
/***********/
public ServerDTImpl() throws
java.rmi.RemoteException
{
super();
System.out.println("####################");
System.out.println("RemoteDesktop
started");
rt = java.lang.Runtime.getRuntime();
System.out.println("RemoteDesktop:
runtime done");
}
public synchronized boolean execute
(String command) throws java.rmi.RemoteException
{
try
{
System.out.println("RemoteDesktop:
executing: "+command);
rt.exec(command);
}
catch (Exception e)
{
System.out.println("ServerDT:
an exception occurred:");
e.printStackTrace();
return false;
}
return true;
}
/*******/
/* main */
/*******/
public static void main(String
args[])
{
int port=1099;
try
{
System.setSecurityManager(new
RMISecurityManager());
System.out.print("RemoteDesktop
version 1.0 ");
System.out.println("Created
by Andrea.Musumeci@novara.alpcom.it");
System.out.println("RemoteDesktop.main:
creating registry at port "+port);
LocateRegistry.createRegistry(port);
ServerDTImpl
serverDT=new ServerDTImpl();
System.out.println("RemoteDesktop.main:
creating server");
System.out.println("RemoteDesktop.main:
binding server ");
Naming.rebind("//:"+port+"/"+"RemoteDesktop",
serverDT);
System.out.println("RemoteDesktop.main:
done");
}
catch (Exception
e)
{
System.out.println("RemoteDesktop:
an exception occurred:");
e.printStackTrace();
System.exit(1);
}
}//fine main
}//fine class ServerDTImpl
Ed ora creiamo la classe ClientDTImpl
che avrà il compito di sfruttare i metodi del serverDTImpl:
//----------------------------------------------------------------------------
//
// Module : ClientDTImpl.java
//
// Description : ClientDTImpl
//
// Product : RemoteDesktop
//
// Author : Andrea.Musumeci@novara.alpcom.it
//
// Date : dicembre, 1998
//
// Copyright : ISA Italian Software
Agency SRL
//----------------------------------------------------------------------------
package com.isa.rmi.RemoteDesktop;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.rmi.*;
import java.rmi.server.*;
import java.net.*;
import java.io.*;
public class ClientDTImpl extends
Object implements java.io.Serializable
{
String nameRemoteDesktop
= "RemoteDesktop";
URL UrlBase;
int port;
ServerDT serverDT=null;
public ClientDTImpl(URL
base,int port)
{
this.port=port;
UrlBase=base;
}
public void connectRemoteDesktop()
{
try {
String serverName
= "";
serverName = "//"
+ UrlBase.getHost() + ":" +port+ "/"+nameRemoteDesktop;
System.out.println("I
am looking for "+serverName);
serverDT = (ServerDT)
Naming.lookup(serverName);
if (serverDT==null)
System.out.println("RemoteDesktop not found");
}
catch (Exception e)
{
System.out.println("An
exception occurred:");
e.printStackTrace();
}
}
public boolean execute(String
command)
{
try{
return serverDT.execute(command);
}
catch (Exception e)
{
System.out.println("an
exception occurred:");
e.printStackTrace();
}
return false;
}
}
//----------------------------------------------------------------------------
//
// Module : IsaServerDT.java
//
// Description : IsaServerDT
//
// Product : RemoteDesktop
//
// Author : Andrea.Musumeci@novara.alpcom.it
//
// Date : dicembre, 1998
//
// Copyright : ISA Italian Software
Agency SRL
//----------------------------------------------------------------------------
import com.isa.rmi.RemoteDesktop.*;
import java.net.URL;
import java.rmi.*;
import java.rmi.server.*;
import java.rmi.registry.LocateRegistry;
import java.rmi.server.UnicastRemoteObject;
import java.net.*;
public class IsaServerDT
{
/*questa classe server solo a
lanciare la classe ServerDTImpl */
/*******/
/* main */
/*******/
public static void main(String
args[])
{
int port=1099;
try
{
System.setSecurityManager(new
RMISecurityManager());
System.out.println("RemoteDesktop
- version 1.0");
System.out.println("
created by Andrea.Musumeci@novara.alpcom.it");
System.out.println("RemoteDesktop.main:
creating registry at port "+port);
LocateRegistry.createRegistry(port);
ServerDTImpl
serverDT=new ServerDTImpl();
System.out.println("RemoteDesktop.main:
creating server");
System.out.println("RemoteDesktop.main:
binding server ");
Naming.rebind("//:"+port+"/"+"RemoteDesktop",
serverDT);
System.out.println("RemoteDesktop.main:
done");
}
catch (Exception
e)
{
System.out.println("ServerDT:
an exception occurred:");
e.printStackTrace();
System.exit(1);
}
}//fine main
}//fine class IsaServerDT
//----------------------------------------------------------------------------
//
// Module : IsaClientDTApplication.java
//
// Description : little demo
to use remoteDesktop in an application
//
// Product : remoteDesktop
//
// Author : Andrea Musumeci
//
// Date : Dicembre, 1998
//
// Copyright : ISA Italian Software
Agency SRL
//----------------------------------------------------------------------------
import com.isa.rmi.RemoteDesktop.*;
import java.util.*;
import java.net.*;
import java.io.*;
public class IsaClientDTApplication
{
ClientDTImpl clientDT;
public String host="127.0.0.1";
public int port=1099;
public IsaClientDTApplication(String
host,int port, String command)
{
System.out.println("I'm
creating an object clientDT");
try
{
String urlString="http://"+host;
URL url=new URL(urlString);//inserire
l'http del serverRMI
clientDT = new ClientDTImpl(url,port);
System.out.println("Object
clientDT created.");
clientDT.connectRemoteDesktop();
boolean allOK =
clientDT.execute(command);
if (allOK) System.out.println("Commad
executed.");
else System.out.println("Commad not executed.");
}
catch (Exception e)
{
System.out.println("Errors
found");
}
System.exit(0);
}
public static void main(String
args[])
{ if (args.length!=3)
{
System.out.println("USO:
java IsaClientDTApplication host port command");
}
else
{
int
port=(new Integer(args[1]) ).intValue();
try
{
System.out.println("ora di start: "+(new Date()).toString());
IsaClientDTApplication isa=new IsaClientDTApplication(args[0],port,args[2]);
}
catch
(Exception e)
{
e.printStackTrace();
}
}
}//fine main
}