Domino - Welten verkleben mit Perl

von Arnd Koch,
assono GmbH, Standort Kiel,

Wenn man Notes/Domino und Perl in einem Satz erwähnt, werden die meisten (zumindest die, die beides kennen) sicher sofort an OLE-Automatisierung denken, aber es geht auch anders.

So kann man mit dem Perlmodul "Inline::Java" die Java-Schnittstellen des Domino-Servers nutzen und so die Stärken von Perl und Java kombinieren.
Gerade wenn man mal ein kleines Tool für zwischendurch benötigt, ist Perl hier sehr nützlich - im Hintergrund verrichtet natürlich immer noch Java die Arbeit.

Das folgende Perl-Programm listet alle Datenbanken im Datenbankverzeichnis des Domino-Servers auf und gibt jeweils einige Informationen aus (Replik-ID, Datenbanktitel, Pfad & Dateiname):

 1 #! /usr/bin/perl


 2 


 3 
use strict;


 4 
use warnings;


 5 
use Inline (


 6    
         Java        => 'STUDY',


 7    
         CLASSPATH   => 'NCSO.jar', # NCSO.jar des domino servers 

           
                     
          muß im classpath stehen   



 8    
         STUDY       => ['lotus.domino.NotesFactory'],  


 9    
         AUTOSTUDY   => 1


10    
         );


11    


12    


13 
my $session;


14 
my $dbdirectory;


15 
my $database;


16 


17 
eval{


18  
   $session = lotus::domino::NotesFactory->createSession("servername", "user", "password");


19   
  $dbdirectory
= $session->getDbDirectory("");


20 
    

21 
    ## 


22  
   # kleiner stolperstein in der funktion "getFirstDatabase" :


23    
 # "datenbanken suchen" muß im serverdokument für http-clients aktiviert werden:


24 
    #


25 
    # http://ianconnor.blogspot.com/2007/07/diiop-notesexception-server-access.html


26   
  #


27  
   $database
= $dbdirectory->getFirstDatabase($dbdirectory->{DATABASE});


28 
};


29 
# prüfen ob eine exception geworfen wurde


30 
if($@){


31 
    die($@->toString()) if(ref($@));    # fehler in java


32 
    die($@);                            # oder in perl


33 
}


34 
    # informationen für alle datenbanken im dbdirectory ausgeben


35 
    while(ref($database)){


36   
      eval{


37   
          print "[".$database->getReplicaID()."] : "

           
            .
$database->getTitle()." -> "

           
            .
$database->getFilePath()."\n";


38   
          $database = $dbdirectory->getNextDatabase();


39    
     };


40    
     if($@){


41    
         warn($@->toString()) if(ref($@));


42    
         die($@);


43    
     }


44    
 }


45 

46 
# am schluß noch aufräumen


47 
$dbdirectory->recycle();


48 
$session->recycle();





Links:

http://strawberryperl.com/

http://search.cpan.org/~patl/Inline-Java-0.52/

Fachbeitrag IBM Domino JavaScript Java Entwicklung

Sie haben Fragen zu diesem Artikel? Kontaktieren Sie uns gerne: blog@assono.de

Sie wollen eine individuelle Lösung? Kontaktieren Sie uns

Weitere interessante Artikel

Sie haben Fragen? Wir sind für Sie da.

Wir verwenden Ihre Daten, um Sie einmalig per E-Mail zu kontaktieren. Wir geben Ihre Daten nicht an Dritte weiter. Siehe: Datenschutzhinweise
assono GmbH

Standort Kiel (Zentrale)
assono GmbH
Lise-Meitner-Straße 1–7
24223 Schwentinental

Standort Hamburg
assono GmbH
Bornkampsweg 58
22761 Hamburg

Telefonnummern:
Zentrale: +49 4307 900 407
Techn. Hotline: +49 4307 900 403
Vertrieb: +49 4307 900 402

E-Mail-Adressen:
kontakt@assono.de
bewerbung@assono.de