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/