Discussion:
[omniORB] Callback objects not working with corba server on vmware
Michael Thaler
2008-12-08 15:52:28 UTC
Permalink
Hello,

I have written a Java application that connects to a satellite telemetry
processing application (SCOS 2000) which uses Omniorb. My application can
connect to the telemetry processing application, register parameters and
receive updates. Unfortunately after a day or so my application stops getting
updates because there is an exception on the server: exception when notifying
the client:IDL:omg.org/CORBA/TRANSIENT:1.0.

I am trying to debug this problem. For debugging I want to run the telemetry
processing application as a VMWare image on my computer. My computer (the host)
runs Windows Vista, the telemetry processing application is running under Suse
Linux Enterprice Server 10 (the guest). I set up host-only networking and added
the hostnames to /etc/hosts and c:\WINDOWS\System32\drivers\etc\hosts. I can
ping from the host to the guest using both IPs and names and I can also ping
from the guest to the host using IPs and names.

My application can connect to the telemetry processing application and register
parameters, but as soon as the telemetry processing application calls my
callback object it throws a corba.transient.exception: Exception when notifying
the client:IDL:omg.org/CORBA/TRANSIENT:1.0". I tried to turn off the Windows
Vista firewall but this did not solve the problem either. Running the VMWare
image under Windows XP or Debian works just fine. My application can connect,
register parameters and gets updates (the server can call the callback object).
Thus this seems to be a Windows Vista issue. Unfortunately I have to use
Windows Vista at work. Does anybody have an idea what could be wrong?

Greetings,
Michael
Martin Trappel
2008-12-09 13:26:56 UTC
Permalink
Post by Michael Thaler
Hello,
(...)
I am trying to debug this problem. For debugging I want to run the telemetry
processing application as a VMWare image on my computer. My computer (the host)
runs Windows Vista, the telemetry processing application is running under Suse
Linux Enterprice Server 10 (the guest). I set up host-only networking and added
the hostnames to /etc/hosts and c:\WINDOWS\System32\drivers\etc\hosts. I can
ping from the host to the guest using both IPs and names and I can also ping
from the guest to the host using IPs and names.
I have found that ping is not exactly helpful with CORBA. Have you tried
other TCP/IP connections on the required ports?

How do you setup the initial connection btw. Server and client?
Post by Michael Thaler
My application can connect to the telemetry processing application and register
parameters, but as soon as the telemetry processing application calls my
callback object it throws a corba.transient.exception: Exception when notifying
the client:IDL:omg.org/CORBA/TRANSIENT:1.0". I tried to turn off the Windows
Vista firewall but this did not solve the problem either. Running the VMWare
image under Windows XP or Debian works just fine. My application can connect,
register parameters and gets updates (the server can call the callback object).
Thus this seems to be a Windows Vista issue. Unfortunately I have to use
Windows Vista at work. Does anybody have an idea what could be wrong?
No idea. But you should set the -ORBtraceLevel to 25 on the server side
and see if you can get anything more specific from the logging output.


br,
Martin
Michael Thaler
2008-12-10 02:53:24 UTC
Permalink
Hi,
Post by Martin Trappel
I have found that ping is not exactly helpful with CORBA. Have you tried
other TCP/IP connections on the required ports?
How do you setup the initial connection btw. Server and client?
The problem is that the client as more then one IP (one "real" network
interface and two VMWare interfaces). The server runs on VMWare and has only
one IP.

Calling a function on the server works fine, but the server cannot call the
callback object. When I disable the "real" network interface, everything works
fine.

Someone at work suggested to me that making the client use DNS names instead
of IPs solves the problem. The client is written in Java and it is using Sun's
default ORB. Unfortunately I did not find any option to make it use DNS names
instead of IPs. Does, by chance, somebody have an idea if this is possible
with Sun's ORB? JacORB does have this option, maybe I should try this one
instead of Sun's ORB? (Omniorb for the client is no option because the client
is written in Java).

Greetings,
Michael
Martin Trappel
2008-12-10 13:49:00 UTC
Permalink
Post by Michael Thaler
Hi,
Post by Martin Trappel
I have found that ping is not exactly helpful with CORBA. Have you tried
other TCP/IP connections on the required ports?
How do you setup the initial connection btw. Server and client?
The problem is that the client as more then one IP (one "real" network
interface and two VMWare interfaces). The server runs on VMWare and has only
one IP.
Calling a function on the server works fine, but the server cannot call the
callback object. When I disable the "real" network interface, everything works
fine.
Someone at work suggested to me that making the client use DNS names instead
of IPs solves the problem. The client is written in Java and it is using Sun's
default ORB. Unfortunately I did not find any option to make it use DNS names
instead of IPs. Does, by chance, somebody have an idea if this is possible
with Sun's ORB? JacORB does have this option, maybe I should try this one
instead of Sun's ORB? (Omniorb for the client is no option because the client
is written in Java).
With omniORB you would use the options
-ORBendPoint to tell the orb to listen (and publish) only on this
endpoint, -ORBendPointPublish to tell the orb to publish only this
endpoint (but listen on all)
and -ORBendPointNoPublish to specifically not publish an endpoint

I have never worked with a JAVA ORB, but I would guess there should be
some similar options ...

br,
Martin

Loading...