Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

zdalny klient ejb3

2 views
Skip to first unread message

zbig

unread,
Jul 5, 2007, 9:06:34 AM7/5/07
to
Witajcie,
Mam postawionego glassfisha 2 na jednym komputerze i wgrany tam moduł ejb
abc.jar. Na drugim komputerze mam aplikację klienta:

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

Artur Zabronski

unread,
Jul 5, 2007, 9:22:36 AM7/5/07
to
zbig wrote:
>
> 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"
> ...
[...]

>
> Macie może jakiś pomysł co to może być, ewentualnie gdzie szukać?
>
Skopiuj cały stos wyjątku.

--
Pozdrawiam,
Artur

zbig

unread,
Jul 5, 2007, 9:32:41 AM7/5/07
to
Pełny wyjątek:
===========
2007-07-05 14:57:01

com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl <init>
WARNING: "IOP00410201: (COMM_FAILURE) Connection failure: socketType:
IIOP_CLEAR_TEXT; hostname: 127.0.0.1; port: 3820"
org.omg.CORBA.COMM_FAILURE: vmcid: SUN minor code: 201 completed: No
at
com.sun.corba.ee.impl.logging.ORBUtilSystemException.connectFailure(ORBUtilSystemException.java:2371)
at
com.sun.corba.ee.impl.logging.ORBUtilSystemException.connectFailure(ORBUtilSystemException.java:2392)
at
com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:230)
at
com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:243)
at
com.sun.corba.ee.impl.transport.SocketOrChannelContactInfoImpl.createConnection(SocketOrChannelContactInfoImpl.java:104)
at
com.sun.corba.ee.impl.protocol.CorbaClientRequestDispatcherImpl.beginRequest(CorbaClientRequestDispatcherImpl.java:165)
at
com.sun.corba.ee.impl.protocol.CorbaClientDelegateImpl.request(CorbaClientDelegateImpl.java:154)
at
com.sun.corba.ee.impl.protocol.CorbaClientDelegateImpl.is_a(CorbaClientDelegateImpl.java:294)
at org.omg.CORBA.portable.ObjectImpl._is_a(ObjectImpl.java:112)
at
org.omg.CosNaming.NamingContextHelper.narrow(NamingContextHelper.java:69)
at
com.sun.enterprise.naming.SerialContext.narrowProvider(SerialContext.java:127)
at
com.sun.enterprise.naming.SerialContext.getProvider(SerialContext.java:182)
at
com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:339)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at tescik.TestBean.main(TestBean.java:14)
Caused by: java.lang.RuntimeException: java.net.ConnectException: Connection
refused
at
com.sun.enterprise.iiop.IIOPSSLSocketFactory.createSocket(IIOPSSLSocketFactory.java:347)
at
com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:213)
... 12 more
Caused by: java.net.ConnectException: Connection refused
at sun.nio.ch.Net.connect(Native Method)
at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:507)
at java.nio.channels.SocketChannel.open(SocketChannel.java:146)
at
com.sun.enterprise.iiop.IIOPSSLSocketFactory.createSocket(IIOPSSLSocketFactory.java:331)
... 13 more
===========

i tak w kółko na portach kolejno 3700, 3820, 3920(próbuje nawiązać
połączenie)

Pozdrawiam,
zbig

Artur Zabronski

unread,
Jul 5, 2007, 9:42:07 AM7/5/07
to
Connection refused czyli port zamknięty na hoście ale dziwi tutaj że to
localhost. Możesz pokazać swój sun-ejb.xml?

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

Artur Zabronski

unread,
Jul 5, 2007, 10:10:08 AM7/5/07
to
Artur Zabronski wrote:
>
> 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
>
PS uważaj na przesyłanie Enum-ow po RMI-IIOP :-)

--
Pozdrawiam,
Artur

zbig

unread,
Jul 5, 2007, 10:44:21 AM7/5/07
to
Artur Zabronski wrote:

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

0 new messages