next_inactive up previous

PIMR 1.0.0: Administration Guide


General information

Package Structure And Destination

PIMR Package ("Implementation Repository ", just " Repository " below ) is intended to raise CORBA - services ("Implementations") accessibility . Besides you can use Repository instead of nameservice to simplify configuration of several interfacing CORBA - services . Repository functions are to trace services accessibility and to redirect requests to a running service. For this purpose Repository supports services register. Repository works under one of Unix-like OS or Windows NT. It's written in C++ using GradC++ToolBox.

Where You Can Get It

PIMR is always available in CVS ( "COS/PIMR" module).


PIMR package is developed by GradSoft LTD, homepage:


General Information

PIMR package is distributed in source codes, and to install it you should do the next :

  1. Compilation -compile source code in user's environment.
  2. Installation - copy executable module and other files to directories specified by user .
  3. Tuning (see below).
Using make command with certain options (see below) you can:
  1. compile the package;
  2. install previously compiled package;
  3. remove objects, created in the compiling;
  4. remove copied files

Required Software

  1. C++ compiler:
  2. make utility:
  3. GradC++Toolbox library 1.5.0 or higher
  5. Tcl interpreter (necessary to interpret configuration file):

Installation Order Under UNIX

  1. Make sure that required software is installed and works.
  2. Unzip pimr-1.0.0.tar.gz or in the directory you chose (further it'll be called "project root directory" , and we'll mar it as <project_root>).
  3. Change directory to <project_root>.
  4. Run configure with ./configure with necessary options (you can get options list by command ./configure" with \verb"--help option; in particular, you can use --prefix=<smth> option to set installation directory )
  5. Run gmake
  6. Change to user root with su
  7. Run installation with gmake install
  8. To uninstall package use gmake uninstall

Installation Order Under Windows NT

  1. Make sure that required software is installed and works. To work with MSVC you need:
    1. INCLUDE and LIB user's environment variables to be set and to contain paths to MSVC include files and libraries accordingly.
    2. to include paths to nmake, cl, link utilities into PATH user's environment variable.
  2. Unarchive pimr-1.0.0.tar.gz or in the directory you chose (we'll call it <project_root>). Edit environment.nt file in the subdirectory <project_root>\config\Win32. Set values of the next nmake-varaiables:
  3. To compile the package change directory to <project_root> and run make" ( \verb"make build ).
  4. To install the package change directory to <project_root> and run make install.
  5. To remove installed files change directory to <project_root> and run make uninstall.
  6. To remove files created after compilation change directory to <project_root> and run make clean.


Before use PIMR you need to set it up by editing the configuration file and using different command line options. Information about command line argument you can get running PIMR with --help option. Also you can use next options:

And the repository options:

You can also specify options of the object broker you are using.

For instance, if to run repository, that uses ORBACUS , with following options :

   --configfile conf.pimr --logfile log.pimr
   -OAport 12345 -ORBtrace_connections 2
it'll read repository configuration from "conf.pimr" file; we'll put log report to "log.pimr" file; repository ORB will use 12345 port and will print out test messages; at startup repository will print out it's IOR.

Repository configuration file is the program in TCL language. To set up PIMR several commands were added to the language. They are:

Let's consider, for instance, following configuration file:

# This is TCL demo config file for PIMR
set thisHost ""
set thisPort 11000
service  HelloService \
    --ior "corbaloc::${thisHost}:${thisPort}/HelloService" \
    --repositoryid "IDL:Demo/HelloWorlder:1.0" \

#    --restart "startHelloWorlder.bat" \  This lines are commented
#    --host "${thisHost}:${thisPort}" \   Note that ${thisHost}
#    --callback "" \                      will be computed by TCL.

forwardfreq 1
checkfreq 10
obsoletetimeout 15
restarttimeout 30
redirecttimeout 60

This configuration file gives information about one service named HelloService. Repository will seek for it on local host on the port 11000 by name HelloService. Repository will not restart the service, for there is no 'restart' command.

It is advisable to choose repository parameters observing the next rule: obsoletetimeout + checkfreq + restarttimeout < redirecttimeout


General Information

To check working capacity of the compiled package you can use test samples. You can compile test examples under Windows running following command from <project_root> directory:

nmake /f makefile.nt buildtests

To uninstall tests run:

nmake /f makefile.nt cleantests

Under Unix-like system use ???.

Now change directory to <project_root>/demo/ and view "readme"-files in this directory and in subdirectories.

Test CORBA-services are in <project_root>/demo/server*/ subdirectories. To run tests you can use verb"run.bat" files. Tests interfaces you'll find in <project_root>/demo/*.idl files.

<project_root>/demo/client/ directory contains client program for these services. Also there you'll find run_straight.bat" and \verb"run_via_repository.bat to start client directly and via repository accordingly.

<project_root>/demo/repository/ directory contains repository configuration files for demo-samples and repository*.bat start scripts.

Scripts start service and repository on ip-address and ports 11000 (11001), 11111 accordingly. So, before starting the programs make sure given ports are available.



To make repository control a service you should register it at repository. You can do it using the configuration file or using the RepositoryAdmin interface . Then client will be available by the following reference:


Client sends request using this corbaloc. Repository automatically redirects request to object-service.

Repository is available by next reference:

corbaloc:: repository_host:repository_port/Repository

Attention! Don't use "Repository" name when registering your services. This name is used to access the repository. If you try to register service with such a name you'll get PIMR::RepositoryAdmin::NotAviable exception.

When running repository records messages into log-file. By default it's ./pimr.log , but you can change the location of the file using --configfile log-file command line argument . To choose type of messages you want to record to log-file set the following variables in لجر PIMRPostConfig.h:

#define LOG_DEBUG_ENABLE   false
#define LOG_INFO_ENABLE    true
#define LOG_ERROR_ENABLE   true
#define LOG_FATAL_ENABLE   true

and recompile repository.

Document History

- Initial version.

next_inactive up previous