Summary: | Pluggable protocols interfere with one another in the same ORB and across ORBs in a process | ||
---|---|---|---|
Product: | TAO | Reporter: | Jeff Mirwaisi <jeff_mirwaisi> |
Component: | ORB | Assignee: | DOC Center Support List (internal) <tao-support> |
Status: | RESOLVED DUPLICATE | ||
Severity: | normal | CC: | jeliazkov_i |
Priority: | P3 | ||
Version: | 1.3 | ||
Hardware: | x86 | ||
OS: | Windows 2000 | ||
Attachments: | Porposed patch. Replaced UIOP/SSLIOP with a generic service (SHMIOP). Will need to create a new test to recreate the SSLIOP portion. |
Description
Jeff Mirwaisi
2003-03-05 11:53:16 CST
NOTE: the orb instances in the above are TAO_Singletons initialized and run by a dynamicly linked ACE_Service_Object , the singletons(orbs) are exposed to subsequent services via a common dll (orb initialization and thread , servant service) i will simplify the situation with a staticly linked orb and no use of the ace_service_manager other than the orbs usage //the following is a simplification of the above problems and the different //scenarios minus the creation of the servant the service manager or threads //even without the servant to demonstrate that the server is capable of //responding (which in some cases it isnt) problems can allready be seen //in the multiple orb scenarios AB b isnt prompted for a new certificate //password, MA ssliop isnt loaded at all etc #include <tao/orb.h> #include <ace/argv.h> #include <iostream> #define MORB_MA int main(int argc,char* argv[]) { const char argA[] = "-ORBDebug -ORBDebugLevel 100 -ORBSvcConf a.conf"; //dynamic SSLIOP_Factory Service_Object * TAO_SSLIOP:_make_TAO_SSLIOP_Protocol_Factory() "-SSLAuthenticate SERVER_AND_CLIENT -SSLPrivateKey PEM:server_key.pem -SSLCertificate PEM:server_cert.pem" //static Resource_Factory "-ORBProtocolFactory SSLIOP_Factory" const char argB[] = "-ORBDebug -ORBDebugLevel 100 -ORBSvcConf b.conf"; //dynamic SSLIOP_Factory Service_Object * TAO_SSLIOP:_make_TAO_SSLIOP_Protocol_Factory() "-SSLAuthenticate SERVER_AND_CLIENT -SSLPrivateKey PEM:client_key.pem -SSLCertificate PEM:client_cert.pem" //static Resource_Factory "-ORBProtocolFactory SSLIOP_Factory" const char argM[] = "-ORBDebug -ORBDebugLevel 100 -ORBSvcConf m.conf"; //dynamic UIPMC_Factory Service_Object * TAO_PortableGroup:_make_TAO_UIPMC_Protocol_Factory() "" //static Resource_Factory "-ORBProtocolFactory IIOP_Factory -ORBProtocolFactory UIPMC_Factory" //#static PortableGroup_Loader "" //dynamic PortableGroup_Loader Service_Object * TAO_PortableGroup:_make_TAO_PortableGroup_Loader() "" const char argAM[] = "-ORBDebug -ORBDebugLevel 100 -ORBSvcConf am.conf"; //combination of A followed by M (above) const char argMA[] = "-ORBDebug -ORBDebugLevel 100 -ORBSvcConf ma.conf"; //combination of M followed by A (above) try { #ifdef SORB_AM ACE_ARGV arg0(argAM); int n = arg0.argc(); CORBA::ORB_var ORBA = CORBA::ORB_init(n,arg0.argv()); #endif #ifdef SORB_MA ACE_ARGV arg0(argMA); int n = arg0.argc(); CORBA::ORB_var ORBA = CORBA::ORB_init(n,arg0.argv()); #endif #ifdef MORB_AB ACE_ARGV arg0(argA); int n = arg0.argc(); CORBA::ORB_var ORBA = CORBA::ORB_init(n,arg0.argv()); ACE_ARGV arg1(argB); n = arg1.argc(); CORBA::ORB_var ORBB = CORBA::ORB_init(n,arg1.argv()); #endif #ifdef MORB_AM ACE_ARGV arg0(argA); int n = arg0.argc(); CORBA::ORB_var ORBA = CORBA::ORB_init(n,arg0.argv()); ACE_ARGV arg1(argM); n = arg1.argc(); CORBA::ORB_var ORBB = CORBA::ORB_init(n,arg1.argv()); #endif #ifdef MORB_MA ACE_ARGV arg0(argM); int n = arg0.argc(); CORBA::ORB_var ORBA = CORBA::ORB_init(n,arg0.argv()); ACE_ARGV arg1(argA); n = arg1.argc(); CORBA::ORB_var ORBB = CORBA::ORB_init(n,arg1.argv()); #endif } catch(const CORBA::Exception& ex) { std::cerr << ex._info().c_str() << std::endl; } catch(...) { std::cerr << "unhandled exception" <<std::endl; } return 0; } Jeff, The Service Configurator directives/files used by TAO are currently process-wide, not ORB wide. This means that you currently cannot have multiple ORBs with different pluggable protocols. Reassigning bug to tao-support since this in not a TAO_SSLIOP specific issue. Accpeting the bug for tao-support! Adding myself to the CC list The changes to be introduced for 2486 address this issue. *** This bug has been marked as a duplicate of 2486 *** Created attachment 558 [details]
Porposed patch. Replaced UIOP/SSLIOP with a generic service (SHMIOP). Will need to create a new test to recreate the SSLIOP portion.
also shmiop is not available on all platforms so I don't see a reason why to switch UIOP/SSLIOP for UIOP. Use constructs like below to check whether the platform is configured with the protocol in code, then in the run_test.pl then the config part of the test can be used or a test for a platform #if defined (TAO_HAS_SHMIOP) && (TAO_HAS_SHMIOP != 0) # if TAO_HAS_UIOP == 1 |