Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations SkipVought on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

CORBA::TRANSIENT exception in corba client?

Status
Not open for further replies.

johnnyzhong

Programmer
Oct 27, 2008
5
0
0
i developed a corba client application which sucessfully compiled and started up normally, but the corba connection would be interrupted rulelessly with a CORBA exception described as CORBA::TRANSIENT.
 
This basically means that the object you're trying to get to at the other end of the wire does not exist. There are several causes

1) It really doesn't exist - check spellings etc. The objects/services are case sensitive

2) Check that the receiver at the other end exists. Also check that your naming service is up and running.

3) Flaky physical connectors. Check the cabling to the computer and to the hub/switch. If it is a flaky cable, and the line perpetually goes up and down, the system will take a long time recovering. It normally takes about 3-5 minutes to recover after the connection has been broken.

4) Hub/switch problem. If the hub/switch has been up for a long time, or is subjected to cable connections and disconnections, it could get unstable. Disconnect the switch/hub from the mains and all network cables, leave for a few minutes and then reconnect.
 
thanks a lot,
xwb,
everytimee when the CORBA::TRANSIENT exception was thrown,only a very short time later,
i can reconnect to corba server and get valid corba objects.
the problem is that i cannot find out any error of my programs ,could u tell me wether sth is wrong with the orb environment?
 
Do you have more than one naming service or more than one server providing the service?

Does this occur on startup or occassionally through the life of the program?

You may have a server that is not sending out regular heartbeats. When it is busy, it isn't pulsing the system and you lose the connection.

Another silly question: has everything been compiled as multi-threaded? If you're on windows, the default is single threaded.
 
1.only one server
2.this occurs occassionally ,always the program statup normally and can work well for several ten minutes ,then that exception thrown and retry to connect right now is successful.
3.the server is on windows and my client program is on unix,which based on a multi-process framework. Either the program run in single-process mode or multi-process mode ,the exception occurs alike.
 
Could it be some buffers filling up? Could you try both the client and server on the same machine to start with. If the problem still occurs then it could be buffers filling up.

It is possible that the tcp stack is too small. You can increase it as follows

Click the Start Button,
Click the Run... Start Menu option,
Type Regedit in the 'open' text box of the Run dialog,
Click the OK button.

The Registry Editor should now activate - its display is similar to the Window's explorer,
the left window pane will show the different registry sections.

In the left pane, you need to open the tree and select,

MyComputer->HKEY_LOCAL_MACHINE->System->CurrentControlSet->Services->AFd->Parameters

With this selected on the left pane, the right pane should show (as a minimum):

(default) REG_SZ (value not set)

We need to add two extra values as follows:
(note the two new values are 'DefaultReceiveWindow' and 'DefaultSendWindow'
if these values are already present then please change the values to be
100000 hex)

Assuming they are not present:


Right click in the middle of the right pane, move your mouse cursor over the 'New>' context menu item,
move the mouse over the selection 'DWORD value' and click

a new entry should be created in the right pane:

'New value #1'

Rename this new value to be 'DefaultReceiveWindow' (no spaces!)
Double click the new values, you should then be presented with an Edit DWORD Value dialog.

Change the value data from 0 to 100000, ensure hexadecimal option is selected and then click OK.

The new value should now read:

DefaultReceiveWindow REG_DWORD 0x00100000 (1048576)

Right click in the middle of the right pane, move your mouse cursor over the 'New>' context menu item,
move the mouse over the selection 'DWORD value' and click

a new entry should be created in the right pane:

'New value #1'

Rename this new value to be 'DefaultSendWindow' (no spaces!)
Double click the new value, you should then be presented with an Edit DWORD Value dialog.

Change the value data from 0 to 100000, ensure hexadecimal option is selected and then click OK.

The new value should now read:

DefaultSendWindow REG_DWORD 0x00100000 (1048576)


If the two values were present then double click on each in turn and at the Edit DWORD Value dialog
Change the value data from 0 to 100000, ensure hexadecimal option is selected and then click OK.

Close the registry editor by clicking the X in the top right corner.

re-boot the PC.
 
so, u mean that the posssible cause is the tcp stack is not enough of the corba server?
oh,i have no authority to access the server system
 
Are most of your messages one way or two way?

Some implementations of one way still need an ack of some sort (esp Orbacus).

If you slow down your message rate, does the problem still happen?
 
receive and send messages two way and the problem is nonrelevant with the message rate.
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top