[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference pamsrc::objectbroker

Title:ObjectBroker - BEA Systems' CORBA
Notice:See note 3 for kits; note 5 for training; note 1134 for releases
Moderator:TLE::PARODId
Created:Tue Jul 11 1989
Last Modified:Thu Jun 05 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:1413
Total number of notes:6391

1411.0. "OBB_INV_TRANSERR" by GRANPA::DGRANT () Tue May 27 1997 13:06

    Hi,
    
    We are using Objectbroker V2.7.  Is it possible to stop and restart the
    server while the client application is available without restarting the
    client application once the server is restarted?
    
    We perform the following calls each time we request an operation from
    the server:
    
    CosNaming_NamingContext_resolve ( we are using NamingServices)
    CORBA_ORB_object_to_string()
    CORBA::DEC_ORB->string_to_object()
    CORBA_free
    our_interface::_narrow()
    server_request()
    
    The error we receive is "OBB_INV_TRANSERR (e), Transport error 'The
    descriptor is not a socket.'."
    
    Are we missing an Objectbroker call?  Is is in the Objectbroker config?
    Is there something in the IML or MML?  Is it a TCP/IP config problem?
    
    Any help would be appreciated.
    
    Thanks,
    Debbie Grant
T.RTitleUserPersonal
Name
DateLines
1411.1VAXCPU::michaudJeff Michaud - ObjectBrokerTue May 27 1997 13:505
	Which platform(s) are you seeing the error on?

> We are using Objectbroker V2.7.

	Which BL? (is it V2.7-11?)
1411.2BL 2.7-10GRANPA::DGRANTTue May 27 1997 14:294
    Platform:  Windows NT V3.51
    BL:	Objectbroker V2.7-10
    
    Thanks for the quick response.
1411.3RECV::SLAVINTue May 27 1997 14:3713
Have you tried using the network tester that comes with OBB. This 
would tell you if the 2 nodes are communicating.

The question about restarting the server and allowing the client to 
continue to run depends on how you wrote your client. ObjectBroker 
does not retry the client request automatically in this case.

 - The client needs to detect the server shutdown - a timeout or other 
	mechanism can be used.

- The client needs to retry the operation. This would mean doing a new 
	invocation, as the server could restart on a different socket or 
	channel than the one used in the original request.
1411.4RECV::SLAVINTue May 27 1997 14:406
Also,

There are problems autostarting servers on NT. These are corrected in 
OBB V3.0 -- the name service is a regular server.

MAS
1411.5Only on server restartGRANPA::DGRANTTue May 27 1997 15:5416
    We have no problem communicating to the server and are able to process
    requests.  The only problem is in "reconnecting" to the server once it
    has been restarted.
    
    We realize that the client request must be retried but it is on this
    retry we get the initial "OBB_INV_TRANSERR".  Any subsequent retries of
    the request also fail with the same error.  It seems as though the
    client is not releasing the socket and seems to be trying to access the
    "new" server on the same socket.  How can we get the client to release
    the socket?  We've tried CORBA_object_release and CORBA::release but
    neither release the socket.
    
    BTW,  we are going through the name resolution and object reference 
    resolution before each client request as described in the initial note.
    
    Thanks.
1411.6RECV::BOWERPeter Bower, ObjectBrokerTue May 27 1997 16:2413
    
    Most likely, you are not releasing an object reference.
    
    CosNaming_NamingContext_resolve returns a C object reference. After the
    call to CORBA_ORB_object_to_string, the C object reference should
    be released via CORBA_Object_release.
    
    CORBA::ORB::string_to_object creates a C++ object reference. After the
    call to narrow, it should be released via CORBA::release.
    
    The narrow returns a specific interface C++ object reference. After the
    invoke, it should be released via CORBA::release
    
1411.7It worked!!GRANPA::DGRANTWed May 28 1997 12:1617
    Its working!! Thanks for your help.
    
    We added the CORBA_Object_release for the C Object reference for the
    CosNaming_NamingContext_resolve after the call to
    CORBA_ORB_obect_to_string and for the string from
    CORBA_ORB_object_to_string after the CORBA::DEC_ORB->string_to_object.
    
    We also added the CORBA::release for the C++ Object reference after the
    _narrow for the object reference returned from the
    CORBA::DEC_ORB->string_to_object call. 
    
    We could not perform a CORBA::release after the invocation since it
    would cause an acc vio on the return from the method.
    
    
    Thanks again for all of your help and prompt responses.
    Debbie Grant