INECO Forum Overzicht Overzicht Aanmelden Aanmelden Registreer Registreer Profiel Profiel Ledenlijst Ledenlijst Groepen Groepen Zoeken Zoeken

Gedeelde Java bibliotheken
 
 
 
 
 Geplaatst   Bericht 
Marcel Rothuizen

Marcel Rothuizen
 

Aanmelddatum: 10-11-2000
Woonplaats: Heteren (Gld)
Datum: 12-12-2005 21:24:43    Bericht: Gedeelde Java bibliotheken

In dit onderwerp een stukje over hoe je in een Java Agent een gedeelde bibliotheek kunt gebruiken:

Als eerste maak je eerst een gedeelde Java bibliotheek, in dit voorbeeld een routine om een gedeelte van een string te vervangen:

public class Global {
public static String replaceSubstring(String str, String pattern, String replace) {
int s = 0;
int e = 0;
StringBuffer result = new StringBuffer();

while ((e = str.indexOf(pattern, s)) >= 0) {
result.append(str.substring(s, e));
result.append(replace);
s = e+pattern.length();
}
result.append(str.substring(s));
return result.toString();
}
}



In dit geval noemen we de bibliotheek globalfunctions.
(Blijkbaar mag je bij het opslaan van de bibliotheek wel kiezen voor namen als global.java, maar we kwamen er achter dat als je een bibliotheek met een punt in de naam wilt toevoegen aan een project dit niet goed wordt opgeslagen!)

Nu kunnen we in een Agent (in dit geval gewoon een Java agent, hoe dit moet vanuit een LotusScript agent beschrijven we later nog wel op het forum) de bibliotheek toevoegen door in de Designer te kiezen voor "Edit Project".
Kies de database waar de bibliotheek in staat, zorg dat en voeg hem toe.

Nu zijn er twee methodes mogelijk om de functie(s) uit deze bibliotheek aan te roepen.
De eerste is met een rechtstreekse aanroep uit een Agent, bijvoorbeeld:

import lotus.domino.*;

public class JavaAgent extends AgentBase {

public void NotesMain() {

try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
// input: Porsche 911
String newstring = new String(Global.replaceSubstring("Porsche 911","911","944"));
System.out.println(newstring);
// output: Porsche 944
} catch(Exception e) {
e.printStackTrace();
}
}
}



De tweede methode is om eerst Global te definiëren en dan de aanroep te doen:

import lotus.domino.*;

public class JavaAgent extends AgentBase {

public void NotesMain() {

try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
Global car = new Global();
// input: Porsche 911
String newstring = new String(car.replaceSubstring("Porsche 911","911","944"));
System.out.println(newstring);
// output: Porsche 944
} catch(Exception e) {
e.printStackTrace();
}
}
}


Het verschil in beide methodes is afhankelijk van de bedoeling van de code, en is niet van belang in dit voorbeeld.

De functionaliteit is het zelfde als het aanroepen van een functie uit een class die direct in het huidige project zou staan.
Voordeel van deze manier is natuurlijk dat het nu mogelijk is om een gedeelde functie op meerdere plekken te gebruiken (agents, Webservices e.d.), en de code maar op een plek onderhouden hoeft te worden.

 E-mail Website ICQ MSNM Skype Hyves LinkedIn 
Zoek in afgelopen ok
 
   Overzicht / Lotus Notes Ontwikkeling / Java  
Pagina 1 van 1 

IBM LOTUS NOTES migratie doet u samen met INECO

Powered by Lotus Domino R8.5.3 on Fedora Core 14 Dit  forum is gemaakt door Intranet &  Network Consultancy. © 2011.
Voor vragen of opmerkingen  kunt u contact opnemen met:  .
Deze site is gemaakt met Lotus Notes R8.5.3 en draait op Fedora Core 14.

INECO Support Contract banner