2016-03-31 7 views
6

Der Versuch, einen Xagent zeitgesteuert zu starten, indem er von einem geplanten Java-Agenten ausgelöst wird.Wie plane ich einen Xagent von einem Domino Java Agent?

Im folgenden ist der Code für meine xagentmail.xsp ist, die eine E-Mail schickt mir einfach:

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" rendered="false"> 
<xp:this.beforePageLoad><![CDATA[#{javascript: 
// test send mail 
doc = database.createDocument() ; 
doc.replaceItemValue("Form", "memo"); 
doc.replaceItemValue("Subject", " from xagentmail.xsp"); 
doc.replaceItemValue("SendTo", "[email protected]"); 
doc.send(); 

}]]></xp:this.beforePageLoad> 
</xp:view> 

die SSL-verschlüsselte Verbindung Ansatz in Devin Olsons Blog beschrieben verwenden, Scheduled Xagents, habe ich die folgenden geplanten Domino Java Agent:

Wenn ich die URL in einem Browser zu meinem xagentmail.xsp eingeben, bekomme ich E-Mail wie erwartet.

Aber mein geplanter Java-Agent löst den Xagent nicht aus, um die Mail zu senden.

Ich habe den anonymen Zugriff auf Reader für die Anwendung mit dem Agenten und Xagent festgelegt. Ich habe auch eingeschränkte und nicht eingeschränkte Privilegien auf dem Server.

Irgendwelche Ideen?

+0

welche Botschaft tun Sie erhalten, wenn Sie den Agenten über die Serverkonsole ausführen? – xpagesbeast

+0

Mit welcher Sicherheitsstufe betreiben Sie den Agenten (1, 2, 3)? –

+0

Eigentlich läuft gerade blind auf einem Kunden-Dev-Server. Konsolenzugriff ist dort keine Option. Sie müssen zu einem Testserver wechseln. –

Antwort

5

Ich benutze den folgenden Ansatz, der funktioniert: Ich verwende HttpURLConnection anstelle eines BufferedWriter und ich benutze localhost auf Port 80, um direkt mit dem Server lokal zu sprechen.

Hier ist mein Agent Code:

import lotus.domino.AgentBase; 
import lotus.domino.Session; 

public class JavaAgent extends AgentBase { 

    @Override 
    public void NotesMain() { 
     try { 
      final String xpageName = "demo"; 

      Session session = getSession(); 
      dk.fmcgsolutions.XAgent.run(session.getAgentContext(), xpageName); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

Und hier ist die XAgent Klasse, dass der Agent verwendet:

package dk.fmcgsolutions; 

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.URL; 

import lotus.domino.AgentContext; 

public class XAgent { 

    public static void run(AgentContext agentContext, String xpageName) { 

     try { 

      String dbPath = agentContext.getCurrentDatabase().getFilePath(); 
      String url = "http://localhost/" + dbPath + "/" + xpageName + ".xsp"; 

      System.out.println("Starting " + xpageName + " in database " + dbPath); 

      URL xPageURL = new URL(url); 
      HttpURLConnection conn = (HttpURLConnection) xPageURL.openConnection(); 

      conn.connect(); 

      switch (conn.getResponseCode()) { 
      case HttpURLConnection.HTTP_OK: 
       // read from the urlconnection via the bufferedreader 
       BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
       String line; 
       while ((line = bufferedReader.readLine()) != null) { 
        System.out.println("Response: " + line); 
       } 
       bufferedReader.close(); 

       break; 
      case HttpURLConnection.HTTP_INTERNAL_ERROR: 
       System.out.println("Interal server error while running"); 
       break; 
      default: 
       System.out.println("An error occurred: " + conn.getResponseCode()); 
       System.out.println("Error message: " + conn.getResponseMessage()); 
       break; 
      } 

      conn.disconnect(); 

      System.out.println("Finished " + xpageName + " in database " + dbPath); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

Der Agent mit Niveaulaufzeit Sicherheit ausgeführt werden muss 2.

+0

Diese Website ist derzeit über Webkonfigurationen eingerichtet. Können Sie bei Verwendung der Webkonfiguration auch eine lokale Internetsite einrichten? Wie machst du das? –

+0

Sicher. Verwenden Sie einfach "localhost" als Domain-Name. –

+0

Danke Per, ich werde das versuchen ... muss jetzt mit dem Admin reden! –

Verwandte Themen