Dobry vecer,
resim problem v domacim ukolu:
napsal jsem kod: [fragment]

public class Server {

   Logger log = LoggerFactory.getLogger(this.getClass());
   Registry registry;
   int registryPort = 55554;
   String stubName = "piskvornik";
   int port = 55555;
   String hostname = "localhost";
   private PiskvornikServerInterface piskvornik;
   PiskvornikServerInterface piskvornikStub;

   public Server(String ipAddress, int serverPort) {

       if (System.getSecurityManager() == null) {
log.debug("System.getSecurityManager() = null. Creating new one.");
           System.setSecurityManager(new RMISecurityManager());
//            System.out.println("WWWW"+ System.getSecurityManager().);
       }
       System.setProperty("java.rmi.server.hostname", ipAddress);
       registryPort = 55554;
       stubName = "piskvornik";
       port = serverPort;


       try {

           log.debug("Registry created at PORT " + registryPort);
           piskvornik = new PiskvornikServer();
piskvornikStub = (PiskvornikServerInterface) UnicastRemoteObject.exportObject(piskvornik, port, new RCSF(), new RSSF(ipAddress));
           registry = LocateRegistry.createRegistry(registryPort);

           log.debug("stub piskvornik created");
           registry.rebind(stubName, piskvornikStub);
           log.debug(stubName + " binded into registry " + registry);
       } catch (RemoteException ex) {
           log.error(ex.getMessage());
       }



   }
}

Jde o RMI server, ktery vytvori RMIregistry a do nich chce zaregistrovat object piskvornikStub.
Vyskytuje se mi anomalie pri spousteni programu:
pokud za
piskvornikStub = (PiskvornikServerInterface) UnicastRemoteObject.exportObject(piskvornik, port, new RCSF(), new
nedam timeout
Program se normalne spusti a bezi ale neni vytvoren socket ktery by mohl komunikovats klienty
pokud tento timeout nasimuluji napr vlozenim kodu
new Scanner(System.in).readline();
pak vse probehne v poradku.

Mam podezreni ze java neni schopna dostatecne rychle zainteragovat s kernelem a vytvorit socket a nekde se to uvnitr JVM rozbije.

Tato anomalie se stane nekdy 1/10 nekdy 10/10 a uz si opravdu nevim rady. pricemz spoustim aplikaci porad stejne z konzole, zadna zmena ....

Dekuji za vsechny rady.

Diky
PP

muj system::

p...@lenovo:~$ java -version
java version "1.6.0_15"
Java(TM) SE Runtime Environment (build 1.6.0_15-b03)
Java HotSpot(TM) 64-Bit Server VM (build 14.1-b02, mixed mode)
p...@lenovo:~$ cat /proc/version
Linux version 2.6.31-13-generic (bui...@yellow) (gcc version 4.4.1 (Ubuntu 4.4.1-4ubuntu7) ) #45-Ubuntu SMP Tue Oct 13 02:07:24 UTC 2009
p...@lenovo:~$
CPU Intel C2D

RCSF a RSSF jsou klasicke sockety
public class RSSF implements RMIServerSocketFactory, Serializable {
   private static final long serialVersionUID = 91477001985329L;

   String hostname;

   public RSSF(String hostname) {
       this.hostname = hostname;
   }

   @Override
   public ServerSocket createServerSocket(int port) throws IOException {
return new ServerSocket(port, 0, InetAddress.getByName(this.hostname));
   }
}


--
Petr Prikryl
-----------------------
[email protected]
[email protected]
www.admin24.cz

Odpovedet emailem