Establishing Interprocess Connections

From Apache OpenOffice Wiki
< Documentation‎ | DevGuide
Revision as of 08:08, 13 May 2009 by OOoWikiBot (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search



Any language binding supported by UNO establishes interprocess connections using a local service manager to create the services necessary to connect to the office. Refer to chapter UNO Interprocess Connections for additional information. The following client program connects to a running office and retrieves the com.sun.star.lang.XMultiServiceFactory in C++:


 #include <stdio.h>
 
 #include <cppuhelper/bootstrap.hxx>
 #include <com/sun/star/bridge/XUnoUrlResolver.hpp>
 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
 
 using namespace com::sun::star::uno;
 using namespace com::sun::star::lang;
 using namespace com::sun::star::bridge;
 using namespace rtl;
 using namespace cppu;
 
 int main( )
 {
     // create the initial component context
     Reference< XComponentContext > rComponentContext =
         defaultBootstrap_InitialComponentContext();
  
     // retrieve the service manager from the context
     Reference< XMultiComponentFactory > rServiceManager = 
         rComponentContext->getServiceManager();
 
     // instantiate a sample service with the service manager.
     Reference< XInterface > rInstance =
         rServiceManager->createInstanceWithContext( 
         OUString::createFromAscii("com.sun.star.bridge.UnoUrlResolver" ),
         rComponentContext );
 
     // Query for the XUnoUrlResolver interface
     Reference< XUnoUrlResolver > rResolver( rInstance, UNO_QUERY );
  
     if( ! rResolver.is() )
     {
         printf( "Error: Couldn't instantiate com.sun.star.bridge.UnoUrlResolver service\n" );
         return 1;
     }
     try
     {
         // resolve the uno-URL
         rInstance = rResolver->resolve( OUString::createFromAscii( 
             "uno:socket,host=localhost,port=2002;urp;StarOffice.ServiceManager" ) );
 
         if( ! rInstance.is() )
         {
             printf( "StarOffice.ServiceManager is not exported from remote process\n" );
             return 1;
         }
 
         // query for the simpler XMultiServiceFactory interface, sufficient for scripting
         Reference< XMultiServiceFactory > rOfficeServiceManager (rInstance, UNO_QUERY);
 
         if( ! rOfficeServiceManager.is() )
         {
             printf( "XMultiServiceFactory interface is not exported\n" );
             return 1;
         }
 
         printf( "Connected sucessfully to the office\n" );
     }
     catch( Exception &e )
     {
         OString o = OUStringToOString( e.Message, RTL_TEXTENCODING_ASCII_US );
         printf( "Error: %s\n", o.pData->buffer );
         return 1;
     }
     return 0;
 }


Content on this page is licensed under the Public Documentation License (PDL).
Personal tools
In other languages