Hallo, ich habe hier einen Agent der aus LDAP Daten lesen und in ein Notesdocument
Schreib soll.
Nur hatt er ein Problem mit dem Vector und ich komme nicht drauf welches ?
Hashtabelle fuer Properties
INITIAL_CONTEXT_FACTORY : com.sun.jndi.ldap.LdapCtxFactory
PROVIDER_URL : ldap://ldap.wuestenrot.at
Context
Initialisieren des Contextes
Result= [uid: aub]
NotesException: Unknown or unsupported object type in Vector
at lotus.domino.local.Document.NappendItemValue(Native Method)
at lotus.domino.local.Document.appendItemValue(Unknown Source)
at JavaAgent.NotesMain(JavaAgent.java:62)
at lotus.domino.AgentBase.runNotes(Unknown Source)
at lotus.domino.NotesThread.run(NotesThread.java:208)
import lotus.domino.*;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.DirContext;
import javax.naming.directory.Attributes;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import java.util.Vector;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
System.out.println("Hashtabelle fuer Properties");
Hashtable env = new Hashtable(11);
System.out.println("INITIAL_CONTEXT_FACTORY : com.sun.jndi.ldap.LdapCtxFactory");
env.put( Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
System.out.println("PROVIDER_URL : ldap://ldap.xxx.at");
env.put( Context.PROVIDER_URL,"ldap://ldap.xxx.at/o=xxx,c=at");
System.out.println("Context");
try {
// initialisieren des Contextes
System.out.println("Initialisieren des Contextes");
DirContext ctx = new InitialDirContext(env);
// Suchparameter
SearchControls constraints = new SearchControls();
// Auch Unterebenen durchsuchen
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
// Suche starten
NamingEnumeration results =
ctx.search("ou=personen", "o=wds", constraints);
// Durch alle gefundenen Datensätze durchgehen
while (results != null && results.hasMore()) {
// Das nächste Ergebnis aussuchen
SearchResult si = (SearchResult) results.next();
// Attribute
Attributes attrs = si.getAttributes();
if (attrs == null)
System.out.println("No attributes");
else // Nur die UID ausgeben
try {
Database db = agentContext.getCurrentDatabase();
Document doc = db.createDocument();
doc.appendItemValue("Form", "LDAP");
doc.appendItemValue("Subject", "Test Document");
Vector v = new Vector();
v.addElement(attrs.get("uid"));
System.out.println("Result= " + v);
doc.appendItemValue("UID",v);
System.out.println("Result= " + attrs.get("uid"));
doc.save();
}catch(Exception e) {e.printStackTrace();}
}
// und tschüss ...
ctx.close();
} catch (NamingException e) {
System.err.println("Problem : " + e);
}
} catch(Exception e) {
e.printStackTrace();
}
}
}
Ich hoffe einer weis Rat :( Arcon