2017-08-24 6 views
0

J'ai beaucoup de Lotus Notes/Domino (version 7) base de données pour migrer vers un nouveau logiciel. Sur mon poste de travail (avec Lotus Notes installé), j'utilise une application Java autonome pour me connecter à une réplique locale et extraire des données. Toutefois, la réplication de la base de données distante est toujours un processus manuel. Je voudrais l'automatiser.réplication Lotus Notes Java de base de données distante

Mon code java ressemble fondamentalement ceci:

Session localSession = NotesFactory.createSession(); // With Notes thread initialized 
Session remoteSession = NotesFactory.createSession(SERVER, USER, PASSWORD); 

Database localDb = localSession.getDbDirectory(null).openDatabase("local_name", true); 
Database remoteDb = remoteSession.getDbDirectory(null).openDatabaseByReplicaID(REPLICA); 

// ***EDITED CALLING INSTANCE BELOW*** 
remoteDb.createReplica(null, "local_name"); // Error thrown here 

Cependant, la dernière ligne génère une exception (de memroy, mais quelque chose comme)

CN=****/***** does not have the right to create database on a server 

Comment est-il possible que je n » J'ai le droit de créer une base de données sur mon ordinateur local?

est-il une autre façon de créer programmaticly une réplique locale d'une base de données distante?

Edit: changé appeler instance de créer réplique pour correspondre à mon code l'origine du problème

Répondre

0

Ok, il semble que j'ai trouvé la réponse.

AFAIU je devais ouvrir la base de données sur le serveur cible, en utilisant ma session locale et exécuter le CreateReplica() à partir d'ici. De cette façon, createReplica est exécuté sur mon serveur Lotus Notes local et la réplique est créée localement.

Session  localSession  = NotesFactory.createSession((String)null, (String)null, PASSWORD); 
DbDirectory remoteDbDirectory = localSession.getDbDirectory(remoteSession.getServerName());   
Database localSessionRemoteDatabase = remoteDbDirectory.openDatabaseByReplicaID(REMOTE_REPLICA_ID);   
localSessionRemoteDatabase.createReplica("", LOCAL_FILE_NAME); 

@Richard Schwartz Pouvez-vous confirmer que c'est OK?

La seule chose bizarre, est qu'il ouvre une invite (comme quand il attend le mot de passe), mais la réplique est créée. Le processus est exécuté dans Eclipse.

0

Je pense qu'il est juste de vous donner le mauvais message d'erreur. Une chose qui est définitivement fausse est que le premier argument pour createReplica devrait être une chaîne vide, pas un pointeur nul. I.e., essayez ceci:

localDb.createReplica("", "local_name"); 
+0

J'ai effectué mon post. J'appelle le réplica de création sur la base de données distante. Je pense que c'est le problème. Je suis confus: quel est le processus de création d'une réplique locale d'une base de données distante à partir de zéro en utilisant Java? Merci – Psyko

+0

Oh, attendez une minute ... Utilisez-vous NCSO.jar, au lieu de notes.jar? Si c'est le cas, vous n'avez pas de "Local". Vos appels d'API s'exécutent tous sur le serveur. –

+0

Mais encore une fois, dans votre code révisé, vous ne devriez pas passer null comme premier argument de createReplica(). Ce devrait être une chaîne vide, "", pas un pointeur nul vers une chaîne. –