Autor Thema: JavaAgent erzeugt Fehler  (Gelesen 2760 mal)

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
JavaAgent erzeugt Fehler
« am: 29.09.05 - 09:13:40 »
Dieser Java Agent erzeugt einen Fehler, wenn er auf dem Server gestartet wird. Auf dem Client läuft er. Wo ist mein Fehler?
Der Agent erhält eine Doc ID zu einem Dokument, in dem ein Hostname steht. Für diesen soll er die IP finden und in das Dokument schreiben. Tut er leider nicht...

Code
import lotus.domino.*;
import java.net.*;


public class JavaAgent extends AgentBase {

	public void NotesMain() {

		try {
			Session session = getSession();
			AgentContext agentContext = session.getAgentContext();

	// Get the document with the parameter
 	Agent agent = agentContext.getCurrentAgent();
 	Database db = agentContext.getCurrentDatabase();
	Document doc =db.getDocumentByID(agent.getParameterDocID());
	
	// write IP to the document
    InetAddress inet = InetAddress.getByName( doc.getItemValueString("hostname") );
    doc.replaceItemValue("IP",inet.getHostAddress() );
    doc.save(true, false, true);
        
    
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
}

und hier der Log Auszug:
Zitat
29.09.2005 09:09:31   Agent  error: java.lang.NullPointerException
29.09.2005 09:09:31   Agent  error:    at JavaAgent.NotesMain(JavaAgent.java:19)
29.09.2005 09:09:31   Agent  error:    at lotus.domino.AgentBase.runNotes(Unknown Source)
29.09.2005 09:09:31   Agent  error:    at lotus.domino.NotesThread.run(NotesThread.java:218)
« Letzte Änderung: 29.09.05 - 13:35:34 von Gandhi »
Der "Wenn ich" und der "Hätt' ich" das sind zwei arme Leut'
oder für den Süden:
Hatti Tatti Wari - san drei Larifari

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: JavaAgent erzeugt Fehler
« Antwort #1 am: 29.09.05 - 09:30:48 »
So ist es natürlich etwas Kaffeesudleserei. Aber ich bin ziemlich sicher, dass dein doc Null ist. Eventuell mal ein paar Loggin Anweisungen ergänzen.

System.out.println(agent.getParameterDocID());

if (doc==null){
System.out.println("Dokument nicht gefunden");
}

Kannst du das mal einbauen, an den richtigen Stellen und dann das Ergebnis posten.

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Re: JavaAgent erzeugt Fehler
« Antwort #2 am: 29.09.05 - 09:54:25 »
habe ich getan, warte nun aufs Signieren.
Ich bin sicher, Du hast recht - weil nämlich fälschlich eine UNID übergeben wurde (purtroppo, purtroppo sono un asino e faccio così: I-Ahhhh, I-Ahhh, I-Ahhhh.
Der "Wenn ich" und der "Hätt' ich" das sind zwei arme Leut'
oder für den Süden:
Hatti Tatti Wari - san drei Larifari

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: JavaAgent erzeugt Fehler
« Antwort #3 am: 29.09.05 - 10:01:41 »
Mein italienisch ist etwas schlecht, purtroppo heisst leider oder sono sie sind, aber asino ein Esel?
Eventuell kannst du es übersetzen.

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Re: JavaAgent erzeugt Fehler
« Antwort #4 am: 29.09.05 - 11:28:22 »
leider bin ich ein Esel und mache I-Ahhh ;D
Der "Wenn ich" und der "Hätt' ich" das sind zwei arme Leut'
oder für den Süden:
Hatti Tatti Wari - san drei Larifari

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: JavaAgent erzeugt Fehler
« Antwort #5 am: 29.09.05 - 11:31:34 »
Aha!

Aber jetzt funktioniert es einwandfrei oder?

Eventuell würde ich noch überlegen, die von dir erstellten Objekte zu recyceln damit du nicht irgendwann ein memory leak Problem hast.

Sprich füge nach deiner Verarbeitung ein doc.recycle(); ein. Die Datenbank und die Session darfst du nicht Recyceln, da nicht von dir erstellt. Grundregel nach Julie Kadeshevich oder wie die heisst.

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Re: JavaAgent erzeugt Fehler
« Antwort #6 am: 29.09.05 - 13:13:25 »
Ja, funktioniert jetzt alles einwandfrei, vielen Dank dafür! Das mit dem recyclen leuchtet mir für das Dokument ein - aber warum habe ich 'die Session und die DB nicht erstellt' und muss die daher nicht recyclen?


Hast Du zu der guten Frau einen Link?
Der "Wenn ich" und der "Hätt' ich" das sind zwei arme Leut'
oder für den Süden:
Hatti Tatti Wari - san drei Larifari

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: JavaAgent erzeugt Fehler
« Antwort #7 am: 29.09.05 - 13:27:06 »
Das leitet sich aus der Regel ab, dass du keine Objekte recyceln darfst, die eventuell noch verwendert werden. Da die Session und die Datenbank von dem Agentmananger kommen und eventuell noch in anderen Agenten verwendet wäre es schlecht, wenn du Sie recyceln würdest.

Die Infos sind aus der Agent FAQ von Julie auf Notes.net. Hier der Artikel zu der recycle Problematik.

http://www-10.lotus.com/ldd/46dom.nsf/7d6a87824e2f09768525655b0050f2f2/4600bba5f42ed834852569290053739e?OpenDocument

Falls du noch Fragen hast, gerne habe mich schon ziemlich viel mit recycle beschäftigt. Übrigens auch wenn es viele meinen (will mich da gar nicht ausschliessen) Diese recycle Geschichte ist weder eine Boshaftigkeit von Lotus noch eine Implementierungsschwäche sondern einfach absolut notwendig wenn man ein System nutzt wie Lotus es gemacht hat um die C++ Api in Java zur Verfügung zu stellen.

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Re: JavaAgent erzeugt Fehler
« Antwort #8 am: 29.09.05 - 13:42:15 »
Dann noch eine allerletzte Frage:
Sollte dann auch ein recycle Aufruf im catch-Block stehen?
Der "Wenn ich" und der "Hätt' ich" das sind zwei arme Leut'
oder für den Süden:
Hatti Tatti Wari - san drei Larifari

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: JavaAgent erzeugt Fehler
« Antwort #9 am: 29.09.05 - 13:55:11 »
Streng genommen ja, da müsstest du aber zuerst testen ob doc !=null. Denn sonst bekommst du eine NullPointerExeception beim recyceln. Speziell für diese Art von Bereinigung gibt es aber die finally Konstruktion


Also nochmal in dem Fall richtig:

try{
//Arbeiten mit Document
}
catch (Exception e){
   e.printStackTrace();
}
finally{   
if (doc!=null){
      doc.recycle();
   }
}

Wobei ich jetzt auswendig nicht weiß, ob das doc.recycle() jetzt noch einen extra try catch block braucht. Wobei wenn einmal ein nicht recycelt des Doc durchrutscht bringt das den Domino Server nicht um. Auf jeden Fall braucht man Recycle in Schleifen. Siehe http://www.atnotes.de/index.php?topic=25911.0

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Re: JavaAgent erzeugt Fehler
« Antwort #10 am: 29.09.05 - 14:52:49 »
Nochmals: Vielen Dank!
Der "Wenn ich" und der "Hätt' ich" das sind zwei arme Leut'
oder für den Süden:
Hatti Tatti Wari - san drei Larifari

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz