1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
| import java.rmi.Remote;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
import com.intel.bluetooth.BlueCoveConfigProperties;
import com.intel.bluetooth.DebugLog;
public class Server {
static final int rmiRegistryPortDefault = 8090;
static int rmiRegistryPort = rmiRegistryPortDefault;
// Prevents GC
private static Server server;
private Registry registry = null;
private Remote srv;
public static void main(String[] args) {
String port = null;
for (int i = 0; i < args.length; i++) {
if (args[i].equalsIgnoreCase("--port") && i < (args.length - 1)) {
i++;
port = args[i];
} else if (args[i].equalsIgnoreCase("--help")) {
help();
return;
} else {
help();
return;
}
}
if (port == null) {
port = System.getProperty(BlueCoveConfigProperties.PROPERTY_EMULATOR_PORT);
}
start(port);
}
private static void help() {
StringBuffer usage = new StringBuffer();
usage.append("Usage:\n java ").append(Server.class.getName());
usage.append("[--port rmiListeningPort]");
System.out.println(usage);
}
public static void start(String port) {
if (server != null) {
return;
}
server = new Server();
server.run(port);
}
private void run(String port) {
startRMIRegistry(port);
startRMIService();
DebugLog.debug("Emulator RMI Service listening on port " + rmiRegistryPort);
// wait for RMI threads to start up
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
}
}
private void startRMIRegistry(String port) {
try {
if ((port != null) && (port.length() > 0)) {
rmiRegistryPort = Integer.parseInt(port);
}
registry = LocateRegistry.createRegistry(rmiRegistryPort);
} catch (RemoteException e) {
throw new Error("Fails to start RMIRegistry", e);
}
}
private void startRMIService() {
try {
srv = new RemoteServiceImpl();
if (srv instanceof UnicastRemoteObject) {
registry.rebind(RemoteService.SERVICE_NAME, srv);
} else {
Remote stub = UnicastRemoteObject.exportObject(srv, 0);
registry.rebind(RemoteService.SERVICE_NAME, stub);
}
} catch (RemoteException e) {
e.printStackTrace();
}
}
} |
Partager