1 / 11

Using CORBA To Bridge C++ and JMS

Using CORBA To Bridge C++ and JMS. Niall Stapley, CERN email: niall.stapley@cern.ch http://stapley.web.cern.ch/stapley/CORBAtoJMS/doc /. Overview. Alarms Message Oriented Middleware Architecture MessageStruct Bridge Description The C++ client Current Status. Alarms.

willis
Download Presentation

Using CORBA To Bridge C++ and JMS

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Using CORBA To Bridge C++ and JMS Niall Stapley, CERN email: niall.stapley@cern.ch http://stapley.web.cern.ch/stapley/CORBAtoJMS/doc/

  2. Overview • Alarms • Message Oriented Middleware • Architecture • MessageStruct • Bridge Description • The C++ client • Current Status

  3. Alarms • Part of CERN SL/CO. • Gather, analyze, distribute fault states. • Sources from any part of CERN: • heterogeneous platforms: • Servers • PCs • VME computers • and languages: • C, C++ • Java

  4. Message Oriented Middleware • What is it? • Queue-based asynchronous message exchange • Provides reliability, flexibility, portability • Allows many-to-many communication • Good for event-driven communication • Java Message Service is the Java standard • Includes publish and subscribe • CMW project defined a MOM API • which simplifies JMS • but only implemented in Java

  5. Architecture

  6. MessageStruct union BodyFormatUnion switch (BodyFormatEnum) { case BYTES_FORMAT: OctetSeq octetSeqV; case TEXT_FORMAT: string stringV; case MAP_FORMAT: MapSeq mapSeqV; case STREAM_FORMAT: DataTypeUnionSeq dataTypeUnionSeqV; case ANY_FORMAT: any anyV; }; struct MessageStruct { HeaderSeq headers; PropertySeq properties; BodyFormatUnion body; };

  7. Bridge Description

  8. Publish Example #include <include_the_world.h> using namespace everything; int main (int argc, char* argv[]) { Publisher &the_publisher = Publisher::init( argc, argv ); TextMessage message(); message.setStringProperty( "the_name", "the_value" ); message << "This is inserted into the body"; the_publisher.publish( "CERN.TEST", message ); return (EXIT_SUCCESS); } // main

  9. Subscribe Example #include <include_the_world.h> using namespace everything; void messageHandler (Message &message); int main (int argc, char* argv[]) { Subscriber &the_subscriber = Subscriber::init( argc, argv ); long long handle = the_subscriber.subscribe( jms_topic, "", messageHandler ); // do other stuff the_subscriber.unsubscribe( handle ) return (EXIT_SUCCESS); } //main

  10. Current Status • Provides Publish / Subscribe MOM API as shown. • Uses JacORB and Orbix/E • Potential attention areas • Increase security • The long descriptor. • Add user / password protection. • Add JMS Message Headers. • Dynamic Object/IDL conversion handler. • extern ‘C’ client library • Start testing it with alarms

  11. And Finally... • Thanks for your attention! • Any questions?

More Related