Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: 2stupid4this am 04.08.08 - 12:03:33

Titel: Fehler beim XML-Auslesen durch Agent
Beitrag von: 2stupid4this am 04.08.08 - 12:03:33
Hallo zusammen,

ich habe einen Agenten erstellt, der aus einer Webseite daten ausliest.
Führe ich den Agenten lokal oder auch direkt am Domino-Server-Client aus, so funktioniert alles.

Läuft der Agent zeitgesteuert kommt in der Console folgende Meldung:
 error message: msxml3.dll: Die angegebene Ressource konnte nicht gefunden werden.

Hier ein Codebeispiel:

sub Import
Dim XmlHttpRequest As Variant
Dim session as New NotesSession
dim doc as NotesDocument       
        Dim response As String
        Set XmlHttpRequest = CreateObject("Microsoft.XMLHTTP")
       
        Call XmlHttpRequest.Open("GET", "http://www.google.de", False)
        Call XmlHttpRequest.Send()
       
        response = XmlHttpRequest.responseText

        set db=session.currentDataBase


        Dim view As NotesView
        Set view=db.getView("Test")
       
        set doc=view.getFirstDocument
        Call doc.ReplaceItemValue("Test",response)
call doc.save(True,True)
end sub


Die Laufzeitsicherheitsstufe habe ich auch schon auf 3 gesetzt. Trotzdem funktioniert es nicht.

Hat jemand eine Idee für mich?

Danke im voraus
Erik
Titel: Re: Fehler beim XML-Auslesen durch Agent
Beitrag von: m3 am 04.08.08 - 12:46:21
Der Server auf dem das Ding läuft ist a) entweder kein MS-Server oder b) hat die entsprechende DLL nicht installiert?
Titel: Re: Fehler beim XML-Auslesen durch Agent
Beitrag von: 2stupid4this am 04.08.08 - 14:06:31
Der Server ist ein MS-Server und die DLL ist m.E. auch installiert, da es ja beim Aufrauf direkt am Server mit dem Domino-Client (nicht zu verwechseln mit den Notes-Client) auch funktioniert.
Titel: Re: Fehler beim XML-Auslesen durch Agent
Beitrag von: m3 am 04.08.08 - 23:02:25
Es gibt keinen Domino-Client. Ein Client am Server bei Domino > 5 ist unnötig, pfui und gefährlich. ;)

Wenn, dann würde ich den Agent mal über die Server-Console aufrufen.
Code
tell amgr run "database.nsf" 'AgentName'
und schaun, was er dann sagt (einfach und doppelte Anführungszeichen beachten).
Titel: Re: Fehler beim XML-Auslesen durch Agent
Beitrag von: koehlerbv am 04.08.08 - 23:27:05
Ein Client am Server bei Domino > 5 ist unnötig, pfui und gefährlich. ;)

Martin, ich würde das sogar weiter fassen: Es gab niemals die Notwendigkeit, einen derartigen Client auf dem Server zu benutzen bzw. es gab auch schon immer den Umstand, dass man einen derartigen Client gar nicht betreiben konnte. Und komischerweise sind wir auch mit einem Notes(!)-Server 3.30 besipielsweise unter Novell Netware NLM klar gekommen  ;)

Ich will gar nicht das Argument wiederholen, dass IBM Lotus davon abrät (aus gutem Grunde), sondern will vielmehr sagen: Wer das braucht, macht einen ganz anderen Fehler und setzt das ganze System aufs Spiel.

Bernhard
Titel: Re: Fehler beim XML-Auslesen durch Agent
Beitrag von: DAU-in am 05.08.08 - 07:32:18
Domino-Client (nicht zu verwechseln mit den Notes-Client) = Administrationsclient?
Titel: Re: Fehler beim XML-Auslesen durch Agent
Beitrag von: 2stupid4this am 05.08.08 - 07:52:45
Hallo zusammen,
o.k. Ihr habt recht - so wie es aussieht ist es wirklich nur ein normaler Notes-Client. Lediglich als Überschrift steht dort Domino-Server-Client. Wurde das bei der Installation durch unser RZ evtl. umbenannt? Was mich nur wundert, alles (Domino, Domino Administrator, Notes Designer und Notes Client sind auf deutsch - nur dieser eine Client am Server ist auf Englisch  ???. Zugegeben - es ist ein gewisses Risiko da, aber ich darf diesen Client nicht deinstallieren und zum Server haben sowohl physisch, wie auch technisch nur die Zugriff, die sowieso schon die Möglichekeit besitzen die "Administration mit voller Berechtigung" auszuführen - wenn auch hier nur im Vier-Augen-Prinzip. Aber unabhängig von dem, dass ich den Client am Domino normalerweise nie brauche habe ich damit den Agenten manuell gestartet und es hat alles funktioniert - somit ist m.E. auch die msxml3.dll registriert.

@m3: Auch beim Aufruf direkt aus der Domino-Console kommt die gleiche Fehlermeldung. error message: msxml3.dll: Die angegebene Ressource konnte nicht gefunden werden.

Somit bin ich wieder am Anfang und es funktioniert immer noch nicht.. :'(
Hat noch jemand eine Idee? Gerne auch über einen anderen Weg zum auslesen einer Webseite. Einzig es muss die Möglichkeit bestehen einen Usernamen und ein Passwort für den Proxy mitzugeben.

Erik
Titel: Re: Fehler beim XML-Auslesen durch Agent
Beitrag von: animate am 05.08.08 - 07:55:29

Hat noch jemand eine Idee? Gerne auch über einen anderen Weg zum auslesen einer Webseite. Einzig es muss die Möglichkeit bestehen einen Usernamen und ein Passwort für den Proxy mitzugeben.


In Deinem Code nutzt Du keinen Proxy. Warum?
Titel: Re: Fehler beim XML-Auslesen durch Agent
Beitrag von: 2stupid4this am 05.08.08 - 08:30:13
Weil das nur ein Code-Beispiel ist. Schließlich lese ich ja auch nichts aus der Google-Seite aus ;-)

Korrekt hätte damit die Zeile gelautet:

Call XmlHttpRequest.Open("GET", "http://www.google.de", False,"User","Passwort")

Titel: Re: Fehler beim XML-Auslesen durch Agent
Beitrag von: animate am 05.08.08 - 10:00:10
Es wäre gut, wenn Du hier den Code lieferst, der auch wirklich abläuft (abgesehen von tatsächlichen Werten).

Proxy vergessen kann z. B. ein Grund sein für den Fehler den Du schilderst. Das reduziert die Rateversuche von potentiellen Helfern.
Titel: Re: Fehler beim XML-Auslesen durch Agent
Beitrag von: koehlerbv am 05.08.08 - 10:13:37
Die Frage ist, ob für den Account, unter dem der Domino läuft, diese DLL auch registriert ist. Der kann ja etwas ganz anderes "sehen" als der Account, unter dem Erik gearbeitet hat.

Bernhard
Titel: Re: Fehler beim XML-Auslesen durch Agent
Beitrag von: animate am 05.08.08 - 10:42:43
Ich denke, wenn die dll nicht registriert wäre, würde ein Fehler beim Erzeugen des COM Objekts geworfen werden, der einen entsprechenden Fehlertext mitliefert.

Die Information, welche Zeile den Fehler wirft, ist normalerweise auch recht hilfreich, evtl. kannst Du die noch nachreichen.
Titel: Re: Fehler beim XML-Auslesen durch Agent
Beitrag von: flaite am 05.08.08 - 10:46:03
Hängt dies dll nicht normal unter C:\windows\system32. Nach meinen zugegeben nicht gerade lückenfreien Windowskenntnissen müßte der Notes Server auf die zugreifen können  ??? Das ist, was ich hier nicht verstehe.
Die Proxy Geschichte von Thomas ist richtig, da - falls es einen Reverse Proxy gibt - auch google nicht angezeigt würde. Jedoch würde ich eine andere Fehlermeldung erwarten.

Ein Alternative ist httpClient von jakarta commons. Das ist aber mit Java und unterstützt reverse proxies und vieles mehr. Hab ich schon oft eingesetzt.
Titel: Re: Fehler beim XML-Auslesen durch Agent
Beitrag von: 2stupid4this am 05.08.08 - 11:09:14
@Thomas Der Code entspricht dem, den ich verwende. Mit Ausnahme der Zeile mit der Proxy-Anmeldung. Da heba ich, wie ich die Echtwerte rausgenommen habe das mitgelöscht - sorry. Den HTML-String verarbeite ich danach noch, aber das ist ja in Bezug auf die Fehlermeldung nebensächlich. Der simple Code ohne Nacharbeiten sollte ja auch so funtkionieren - was bei manueller Ausführung auch so ist.

Eine Fehlerzeile kann ich leider nicht liefern. Kann ich irgendwie z.B. vorangestellte "Zeilennummern" mit in die log.nsf "printen"?

Das mit den Zugriffsrechten auf die DLL durch den Server prüfe ich gerade noch.

Danke schonmal für die rege Beteiligung an meinem Problem
Erik
Titel: Re: Fehler beim XML-Auslesen durch Agent
Beitrag von: animate am 05.08.08 - 12:27:02
Eine Fehlerzeile kann ich leider nicht liefern. Kann ich irgendwie z.B. vorangestellte "Zeilennummern" mit in die log.nsf "printen"?

Eine ausführliche Diskussion zum Thema Fehlerbehandlung kannst Du hier (http://atnotes.de/index.php?topic=11980.0) finden.

Dort solltest Du auch die Antwort auf die Frage finden.
Titel: Re: Fehler beim XML-Auslesen durch Agent
Beitrag von: 2stupid4this am 05.08.08 - 14:16:32
Gestern standen wir am Abgrund, heute sind wir einen Schritt weiter :-)

Zum einen vielen Dank für den Link. Hab's auch gleich ausprobiert.

Der Fehler tritt in der Zeile
Call XmlHttpRequest.Send()
auf.


Aber ganz ehrlich - bringt mich auch nicht weiter. Hat jemand eine Idee für mich?
Titel: Re: Fehler beim XML-Auslesen durch Agent
Beitrag von: Ralf_M_Petter am 05.08.08 - 15:02:33
Alle in diesem Thread ausser Thomas wurden vom Martin auf die falsche Fährte gelockt. Es gibt überhaupt kein Problem beim Zugriff auf die DLL Datei. Die Fehlermeldung die du bekommst ist ein Fehler den die dll Datei meldet. Es ist also offensichtlich ein Problem mit der URL oder mit Username und Passwort. Kann es eventuell daran liegen, dass der Server mehrere Netzwerkinterfaces wovon einige nicht in alle Netze gerotutet werden.



Grüße

Ralf
Titel: Re: Fehler beim XML-Auslesen durch Agent
Beitrag von: 2stupid4this am 05.08.08 - 15:19:44
Hallo Ralf,
die Richtung ist nun glaube ich die korrekte.
Leider hat der Server nur ein Netzwerkinterface. Nach Eingabe von ipconfig wird auch nur eines angezeigt. Username und Passwort sind korrekt, da es bei manueller Ausführung funktioniert.
Muss ich evtl.  im Domino irgendwo noch den Webzugang bzw. den Proxy aktivieren?
Titel: Re: Fehler beim XML-Auslesen durch Agent
Beitrag von: Ralf_M_Petter am 05.08.08 - 15:24:38
Nein, beim Domino musst du da meiner Meinung nach nichts konfigurieren, da du ja nicht über den Netzwerkstack des Dominos gehst, sondern diese Dll verwendest. Läuft der Domino als Service? Falls ja solltest du mal eventuell probieren ihn nicht als Service zu starten.

Grüße

Ralf
Titel: Re: Fehler beim XML-Auslesen durch Agent
Beitrag von: 2stupid4this am 06.08.08 - 08:21:24
Und wieder bin ich einen Schritt weiter. Wenn ich den Domino nicht als Service starte funktioniert es. Wo liegt da der Unterschied? Kann ich das irgendwie umgehen, dass es trotzdem läuft als Service?
Vor allem muss der Domino leider als Service gestartet werden, da der Server immer wieder von unserem RZ upgedated und damit auch neu gestartet wird.
Habe ich noch eine Chance das hinzubekommen oder muss ich nun täglich einen Button für den Import drücken?
Nochmals vielen Dank für die Unterstützung
Erik
Titel: Re: Fehler beim XML-Auslesen durch Agent
Beitrag von: Thomas Schulte am 06.08.08 - 09:05:09
Es gibt einen Unterschied zwischen den Rechten die Domino auf dem Gastrechner hat wenn es als Service läuft und den Rechten die es hat wenn es nicht als Service läuft.

Was das bedeutet und wie man das umstellt wurde hier im Forum schon öfter diskutiert.
Titel: Re: Fehler beim XML-Auslesen durch Agent
Beitrag von: Ralf_M_Petter am 06.08.08 - 09:07:56
Du musst wohl mal die Rechte des Users checken unter dem der Service läuft. Betreibe gottseidank keinen Domino auf Windows, aber ich denke das mit den Rechten sollte auch auf Windows leicht zu klären sein.

Grüße

Ralf
Titel: Re: Fehler beim XML-Auslesen durch Agent
Beitrag von: flaite am 06.08.08 - 21:20:51
Muß jetzt auch mal wieder Zeugs per HTTP runterladen.
Hab dafür aber ein zugegebenermassen nicht perfektes selbstgeschriebenes Framework.
Basierend darauf war ich in einer halben Stunde fertig. Intern läuft das mit jakarta.commons.HTTPClient
Eine Superklasse von FacadeBase (doofer Name) schreiben.

Code
package de.spintegration.remoting.http;

import java.util.Map;

public class FacadeNotesDocs extends FacadeBase {

	FacadeNotesDocs(Map configHttp) {
		super(configHttp);
		
	}
	
	public String scrapeContent (final String url, final String startSeq, final String endSeq) throws SpiHttpConnectionException {
		String content = getHttpClient().processHttpContentToString(url);
		return content;
	}
	

}

Dann ein kleiner Integrations-Test
Code
package de.spintegration.remoting.http;

import java.util.HashMap;
import java.util.Map;

import de.spi.logging.Clogging;
import de.spintegration.remoting.http.Constants;

import junit.framework.TestCase;

public class FacadeNotesDocsTest extends TestCase {

	private FacadeNotesDocs cut = null;
	
	public FacadeNotesDocsTest(String name) {
		super(name);
		
	}

	protected void setUp() throws Exception {
		super.setUp();
		Map configRemoteService = new HashMap();
		configRemoteService
				.put(Constants.KEY_REMOTE_HOST, "geheim.de");
		configRemoteService.put(Constants.KEY_REMOTE_PORT, "80");
		configRemoteService.put(Constants.KEY_REMOTE_USER, "Axel Janssen");
		configRemoteService.put(Constants.KEY_REMOTE_PWD, "xTreme geheim");
		Clogging.setTypeLogging(Clogging.LOG4J_LOGGING, null);
		cut = new FacadeNotesDocs(configRemoteService);

	}

	protected void tearDown() throws Exception {
		super.tearDown();
	}

	public final void testScrapeContent() throws SpiHttpConnectionException {
		String res = cut.scrapeContent("http://geheim.de/geheim.nsf/f5c880ea35500e97c125682e004e51f3/a4330d3bfe58df5ac125730d004fe3ed?OpenDocument", "", "");
		System.out.println(res);
	}

}

Läuft.

Mit Authentifizierung an dem Server.
Man kann in die map configRemoteService auch Daten für ReverseProxy Autentifizierung tun.
FacadeBase (was ein Name:  ;D ) : kann auch die Webseite als Stream zurückliefern (sinnvoll für xml).
Werd vielleicht echt mal drüber sprechen, daß noch mal zu säubern und über unserem Unternehmensblog im Namen des Greater Good und des Marketings zu openSourcen. Wenn ich nächste Woche Zeit habe, könnte ich das echt mal vorschlagen.

Läßt sich problemlos in Notes Agenten einbinden.

Gruß Axel