public class TestBean {
public static void main(String[] args) {
try {
InitialContext ic = new InitialContext();
XYZRemote xyz = (XYZRemote)ic.lookup("ent.XYZRemote");
} catch (NamingException e) {
e.printStackTrace();
}
}
}
i teraz nie mogę zmusić tej aplikacji do działania z beanem na zdalnym
serwerze. Uruchamiam klienta tak:
java -Dorg.omg.CORBA.ORBInitialHost=192.168.1.50
-Dorg.omg.CORBA.ORBInitialPort=3700
-classpath ../glassfish/lib/javaee.jar:../glassfish/lib/appserv-rt.jar:.
tescik.TestBean
i zgłasza błąd:
com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl <init>
WARNING: "IOP00410201: (COMM_FAILURE) Connection failure: socketType:
IIOP_CLEAR_TEXT; hostname: 127.0.0.1; port: 3700"
...
Nie wiem dlaczego pokazuje hostname na localhosta. Założyłem podsłuch na
serwerze 192.168.1.50:3700 i drugi komputer nawiązuje z nim połączenie ale
po krótkiej konwersacji (~14 pakietów) przestają rozmawiać.
Zaintrygowała mnie jedna z odpowiedzi serwera w której wypisuje on
wielokrotnie 127.0.0.1. Byćmoże mówi on do klienta żeby szukał pewnych
zasobów na localhost? (a może to tylko moja wyobraźnia), bo nie wiem jak
inaczej wytłumaczyć fakt że klient na początku się łączy do 192.168.1.50 a
potem próbuje się łączyć w kółko na localhost.
Dodam tylko że jeśli serwer i klient działają na jednym komputerze to
wszystko gra, oraz przeczytałem już to
https://glassfish.dev.java.net/javaee5/ejb/EJB_FAQ.html i się do tego
zastosowałem, ale efekt jak widać powyżej.
Na serwerze i kliencie nie ma żadnych firewalli.
Macie może jakiś pomysł co to może być, ewentualnie gdzie szukać?
Pozdrawiam,
zbig
--
Pozdrawiam,
Artur
i tak w kółko na portach kolejno 3700, 3820, 3920(próbuje nawiązać
połączenie)
Pozdrawiam,
zbig
Spróbuj może tak, działa na pewno tyle że używam SSLa:
---
Properties env = new Properties();
env.setProperty("org.omg.CORBA.ORBInitialHost", REMOTE_HOSTNAME);
env.setProperty("org.omg.CORBA.ORBInitialPort",
String.valueOf(REMOTE_PORT));
env.setProperty("com.sun.CORBA.connection.ORBSocketFactory",
"com.sun.enterprise.iiop.IIOPSSLSocketFactory");
try {
ctx = new InitialContext(env);
} catch (NamingException ex) {
ex.printStackTrace();
throw new ConnectorException();
}
---
Do SSLa jest potrzebne zdefiniowanie jeszcze:
- javax.net.ssl.trustStore np glassfish/domains/domain1/config/cacerts.jks
- javax.net.ssl.trustStorePassword domyślnie dla cacerts.jks z
glassfisha jest to: changeit
--
Pozdrawiam,
Artur
--
Pozdrawiam,
Artur
Coś glassfish się "przywiesił" widocznie przemęczyłem go kilku godzinnymi
deployami, bo jak go całego zrestartowałem to już wszystko gra.
Dzięki za wskazówkę na przyszłość :)
Przepraszam za zawracanie głowy.
Pozdrawiam,
zbig