Skip to main content

Problem

  • Product Name : VisiBroker for C
  • Product Version : 8.0
  • Operating System : Windows

The CORBA.UNKNOWN exception is thrown from the server to the client because of an OutOfMemoryError when handling huge messages.

Resolution

Possible Causes:
 
1. When a client application receives a CORBA.UNKNOWN exception, the problem is usually due to an runtime error in the server side. Java Runtime exceptions and UserExceptions not specified in the IDL definition for an operation will be caught by the ORB runtime and will be sent as a CORBA.UNKNOWN exception back to the client.
 
2. An example might be when a server method throws a NullPointerException due to a programming error. This exception will get sent back to the client as a CORBA.UNKNOWN exception. In order to isolate the problem in the SERVER it is important to know which exception is actually being thrown, and where the error occurs.
 
3. If the client is sending a huge message and if the server is unable to handle the message, it would throw an OutOfMemoryError which should have resulted in CORBA:UNKNOWN exception.
 
Solution/Workaround:
 
If the root cause for this error is OutOfMemoryError, then one possible workaround to this issue is setting the vbroker.orb.fragmentSize property which limits the size of the message sent at a time.
 
1. The fragment default size is "0". -- "0" will eventually turn off fragmentation.
2. The size should be specified as a multiple of GIOP message chunk size.
3. The ORB separates messages into fragments to send over the ORB connection.
4. If message fragmentation is being used and multiple client threads are writing on the same connection then request are no longer serialized.
 
Old KB# 30008

#JavaRuntimeexception
#CORBA-UNKNOWN
#UserException
#nullpointerexception
#Security
#VisiBroker
#OutofMemoryError