Como usar o RMI com o Applet Client por trás de um firewall?
Pergunta
Como posso usar o RMI com um cliente de applet atrás de um firewall?
Como posso usar o RMI com um servidor de firewall e um cliente de applet de firewall? (Se possível)
Eu sei que o servidor RMI usa a porta 1099 (por padrão, mas isso é configurável); No entanto, depois disso, a comunicação requer um novo soquete em uma porta aleatória diferente. Sei também que você pode definir o proxy no cliente para o RMI sobre o tunelamento HTTP, que, em teoria, deve resolver meu problema. Mas não posso fazer funcionar (tentei definir as propriedades ambientais no meu cliente XP, mas o Internet Explorer continua ignorando -as).
Outras dicas
Se o código dos servidores estiver em sua mão, você também poderá restringir o RMI a usar uma porta predificada, fornecendo um rmisocketfactory personalizado, conforme descrito aqui: http://insidecoffe.blogspot.com/2012/02/firewall-friently-rmi-port-fixing.html
(Observe especialmente a dica de que isso pode causar problemas se você usar o JMX em paralelo)
Ainda não o procurei profundamente Linermi.
Você pode querer dar uma olhada nele, pois se voltou para o uso da Internet e menciona "sombrear os clientes de tal maneira que podem estar por trás de uma rede local, roteador ou firewall";
Editar:
Lembrei -me de outra implementação que me deparei um pouco ligada RMI Doves 1.0: Solução para Java RMI Firewall Problem Você pode querer dar uma olhada nessa também.
No seu servidor, coloque o código como este:
RmiInterface stub = (RmiInterface) UnicastRemoteObject.exportObject(rmi, 35400);
LocateRegistry.createRegistry(1099);
Naming.rebind("//192.168.102.128:1099/rmi", stub);