Autor Thema: Java Agent "Error cleaning up agent threads"  (Gelesen 20302 mal)

Offline machineslave

  • Senior Mitglied
  • ****
  • Beiträge: 328
  • Geschlecht: Männlich
Java Agent "Error cleaning up agent threads"
« am: 19.12.05 - 17:31:04 »
Hallo,

Ich habe einen Java-Agenten, der über JDBC Daten aus einer DB2 liest und in einer Notes-DB speichert. Der Agent läuft einwandfrei durch, allerdings bekomme ich auf der Konsole die Meldung "Error cleaning up agent threads". Wenn ich den Agenten des öfteren laufen lasse, so bekomme ich irgendwann eine Out of Memory Fehlermeldung.
Ich habe auch schon die ganze Thematik bzgl. recycle() eingebaut, aber irgendwie komme ich da nicht weiter.

Hier mal eine (verkürzte) Version meiner Java-Klassen:

import lotus.domino.*;
import java.sql.*;

public class ImportAS400Data extends AgentBase {

    Log log;
    Session session;
    Database db;
    AgentContext agentContext;
    Document styleDoc;
    String username, system, password, library, param;

    public void NotesMain() {

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

            Log log = session.createLog("Photoalbum");
            log.openNotesLog("HierStehtDerServername", "develop\log.nsf");

            db = agentContext.getCurrentDatabase();
            View configView = db.getView("Configuration");
            View activeJobView = db.getView("Active Job");
            View inboxView = db.getView("($Inbox)");
            Document activeDoc = activeJobView.getFirstDocument();
           
            Document as400Doc = configView.getDocumentByKey("AS400");
            system = as400Doc.getItemValueString("AS400System");
            username = as400Doc.getItemValueString("AS400User");
            password = as400Doc.getItemValueString("AS400Password");
            library = as400Doc.getItemValueString("AS400Library");

            if (activeDoc == null)      // Kein aktiver Job
            {
                activeDoc = inboxView.getFirstDocument();
                if (activeDoc != null)  // Neues Dokument gefunden
                {
                    // Dokument in Job queue und ersten Agenten starten
                   
                    activeDoc.removeFromFolder("($Inbox)");
                    activeDoc.putInFolder("Active Job");
                    activeDoc.replaceItemValue("Agent", "imp_clr");
                    activeDoc.replaceItemValue("Status", "active");
                    activeDoc.save(true, false);
                    param = activeDoc.getItemValueString("Subject");
                    log.logAction("Importing colors from AS/400: " + param);
                    ImportColors colors = new ImportColors(system, username, password, library, db, param);
                    log.logAction("Imported " + colors.getRecords() + " color records");
                    activeDoc.replaceItemValue("Status", "completed");
                    activeDoc.save(true, false);
                    activeDoc.recycle();
                    colors = null;
                }
            }
            log.recycle();
            configView.recycle();
            activeJobView.recycle();
            inboxView.recycle();
            as400Doc.recycle();
            db.recycle();
        } catch (NotesException e1) {
            e1.printStackTrace();
        }
        System.gc();
    }
}





import java.sql.*;

import lotus.domino.AgentBase;
import lotus.domino.Database;
import lotus.domino.Document;
import lotus.domino.NotesException;


public class ImportColors extends AgentBase{

   public int records;
   
   public ImportColors (String system, String username, String password, String collectionName, Database db, String param) {
      
      try {
         DriverManager
               .registerDriver(new com.ibm.as400.access.AS400JDBCDriver());
         Connection connection = DriverManager.getConnection("jdbc:as400://"
               + system, username, password);
         DatabaseMetaData dmd = connection.getMetaData();

         // Execute the query.
         Statement select = connection.createStatement();
         String tableName = "SGEEANP";
         ResultSet rs = select.executeQuery("SELECT * FROM "
               + collectionName + dmd.getCatalogSeparator() + tableName + " WHERE SEPARM='" + param + "'");
         int x = 0;

         
         
         while (rs.next()) {
            try {
               Document doc = db.createDocument();
               doc.replaceItemValue("Form", "SGSCLRP");

               doc.replaceItemValue("SFSSEA", rs.getString("SESSEA"));
               doc.replaceItemValue("SFYEAR", rs.getString("SEYEAR"));
               doc.replaceItemValue("SFDIV", rs.getString("SEDIV"));
               doc.replaceItemValue("SFSTYL", rs.getString("SESTYL"));
               doc.replaceItemValue("SFSCLR", rs.getString("SESCLR"));
               doc.replaceItemValue("SFCDSC", rs.getString("SECDSC"));
               doc.replaceItemValue("param", param);

               doc.save(true, false);
               x = x + 1;
            } catch (NotesException e2) {

               e2.printStackTrace();
            }
         }
         setRecords(x);
         rs.close();
         select.close();
         

      } catch (SQLException e) {

         e.printStackTrace();
      }
   }

}


Ich hoffe, hier gibt es ein paar Notes/Java-Cracks


Gruß

Stefan
Stefan

Das Leben ist ein Scheiß Spiel, aber die Grafik ist geil

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Java Agent "Error cleaning up agent threads"
« Antwort #1 am: 19.12.05 - 17:54:08 »
1. Du schliesst zwar die dein Statement-Objekt und dein Resultset. Das eigentlich wichtige (connection) aber nicht. Mach am Ende connection.close(); Bei moderneren Treibern werden Statement und Resultset mitgeschlossen.
Hab das lange nicht mehr mit Domino gemacht. Es kann sein, dass du den DriverManager wg. irgendwelchen JDBC-Notes Security kommen sich in die Quere issues anders instantiieren mußt. Bin mir aber nicht so sicher, ob das noch gilt. Rose Kelleher hat damals darüber geschrieben.
( ;D : Das ist möglicherweise der originale Thread, in dem das Problem erstmals besprochen wurde:
http://www-10.lotus.com/ldd/46forum.nsf/0/9D47C1F9E82455F785256614001FDFF6?OpenDocument )

2. VERWENDE PreparedStatement und nicht Statement. Die Art wie du die Statements zusammenbastelst ist unsicher. Jemand könnte vielleicht sowas in das Feld param schreiben:
Code
und tschüss"; delete from veryImportantTable
Mit PreparedStatement kann sowas nicht passieren.
Mach dir PreparedStatement zu einer Gewohnheit. Ist nicht so schwierig.
http://java.sun.com/docs/books/tutorial/jdbc/basics/prepared.html
3. Du solltest mit try-catch-try-catch arbeiten, wenn du schon mit raw JDBC hantierst (mit Notes gehen glaub ich andere Sachen gar nicht).
Bsp:
Code
Connection connection = null; 
try {
 connection = deinZeugs
[...]
connection.close(); 
  connection = null; 
}
catch (SQLException sqle) {
 try {
   if (connection != null) connection.close(); 
} catch (SQLException sqle) {}

Wenn in dem Bereich wo die 3 Punkte sind ein Fehler auftritt, bleibt die Connection offen. Das ist nicht so gut.
Im übrigen könntest du dein SQLException Handling verbessern. Aber das schüttel ich auch nicht so einfach aus dem Ärmel. In SQLException stecken eine Menge weiterer Informationen wie allgemeiner oder Datenbankspezifischer SQL-Errorcode etc.
   
Denke, dass sich da noch einiges optimieren lässt.
Warum generierst du pro Dokument einen Remote Call gegen die DB?
In SQL gibt es sowas wie
Code
where wert in (a, b, c, d, e); 
Es dürfte performanter sein, dir ein Resultset zu holen und damit zu arbeiten.
oder so ähnlich.
« Letzte Änderung: 19.12.05 - 18:14:24 von kennwort »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

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: Java Agent "Error cleaning up agent threads"
« Antwort #2 am: 19.12.05 - 18:27:32 »
Zusätzlich zu den Sachen die Axel bereits angeführt hat ist mir noch aufgefallen, dass die ImportColors von AgentBase abgeleitet ist, was in diesem Fall falsch ist, da das kein eigener Agent. Du solltest diese Klasse meiner Meinung nach von Object ableiten. Weiters aufgrund von deinem Source gehe ich davon aus, dass du das auf einer AS/400 (I/5) laufen lässt. Ich bevorzuge in diesem Umfeld eigentlich meistens dass man den Java Code extern in der JVM von der I/5 laufen lässt und über den Job Scheduler aufruft. Dann kann man nämlich auch neuere JDK Version bis 1.5 (5.0) verwenden. Das läuft wirklich sehr gu Das geht natürlich nicht, wenn du den Agenten einen anderen Trigger als Zeitplan hast.

Dein Code ist auch ziemlich unvollständig, es fehlen teilweise Methoden wie colors.getRecords(). Gehe aber mal davon aus, dass du das gerade hier herausgenommen hast. Was mir weiter nicht besonders gut gefällt ist, dass du für jeden Durchlauf eine neue Connection aufbaust. Ich würde die Connection zur DB/2 einmal aufbauen, dass SQL Statement Preparen und die Performance wird extrem besser sein, da vor allem bei der DB/2 auf der I/5 ein Prepare eine sehr teure Operation ist. Ebenso natürlich das Connecten.

Übrigens in der While Schleife in ImportColors fehlt das recycle des Dokuments bei jedem Durchlauf. Keine Ahnung wie oft die Schleife durchlaufen werden kann, aber das kann schon zu einen Out of Memory führen.

Dafür kannst du dir aber die vielen Recycles in deiner Main sparen. Ein Recyceln der Datenbank recycelt auch alle abhängigen Objekte.


Falls du noch Fragen hast, gerne.

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 flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Java Agent "Error cleaning up agent threads"
« Antwort #3 am: 19.12.05 - 18:38:32 »
Ich würde die Connection zur DB/2 einmal aufbauen, dass SQL Statement Preparen und die Performance wird extrem besser sein, da vor allem bei der DB/2 auf der I/5 ein Prepare eine sehr teure Operation ist. Ebenso natürlich das Connecten.
Geht natürlich auch. Wobei man - wie bereits gesagt - PreparedStatements schon allein aus Security Gründen benutzt (kann nicht oft genug gesagt werden).
Ich bin übrigens der Meinung, dass man mit einem Resultset auskommt und das dies noch performanter ist. Einfach den oben angesprochenen in (werta, wertb, ...) benutzen und gegebenenfalls die wichtigen Werte der NotesDocumentCollection in einer HashMap zwischenspeichern.
Vielleicht fehlt auch DriverManager.deregisterDriver()

« Letzte Änderung: 19.12.05 - 18:40:11 von kennwort »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline machineslave

  • Senior Mitglied
  • ****
  • Beiträge: 328
  • Geschlecht: Männlich
Re: Java Agent "Error cleaning up agent threads"
« Antwort #4 am: 20.12.05 - 15:33:38 »
Hallo,

also ich habe mal connection.close() und DriverManager.deregisterDriver() eingebaut.

Jetzt bekomme ich direkt beim zweiten Aufruf des Agenten folgenden Fehler:

AMgr: Agent ('ImportMonitor' in 'stefan/photoalbumImportInterface.nsf') error message: Exception
12/20/2005 15:34:40   AMgr: Agent ('ImportMonitor' in 'stefan/photoalbumImportInterface.nsf') error message: in thread "main"
12/20/2005 15:34:40   AMgr: Agent ('ImportMonitor' in 'stefan/photoalbumImportInterface.nsf') error message: java.lang.OutOfMemoryError
12/20/2005 15:34:40   AMgr: Agent ('ImportMonitor' in 'stefan/photoalbumImportInterface.nsf') error message:    <<no stack trace available>>
12/20/2005 15:34:40   JVM: The addAttachment (Ljava/lang/String;[B)V() method failed.

Das merkwürdige an der ganzen Geschichte ist, dass der Agent komplett auf dem Client durchläuft, ohne zu mucken.
Stefan

Das Leben ist ein Scheiß Spiel, aber die Grafik ist geil

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: Java Agent "Error cleaning up agent threads"
« Antwort #5 am: 20.12.05 - 15:39:49 »
Verbessere mal das Errorhandling und fang zumindest mal alle Exceptions ab, dann kannst du nämlich theoretisch einen Stacktrace ausgeben und siehst an welcher Stelle er den Fehler macht. Weiters wäre es nett, wenn du mal ein echtes Testcase machst und dann diesen Code postest, sonst ist es nämlich ein wenig Kaffeesatzlesen.

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 hwenck

  • Junior Mitglied
  • **
  • Beiträge: 58
Re: Java Agent "Error cleaning up agent threads"
« Antwort #6 am: 20.12.05 - 15:43:48 »
doc.recycle();

in ImportColors fehlt

---> Speicherproblem
z.B.
JavaMaxHeapSize=512MB
JavaMinHeapSize=256MB

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: Java Agent "Error cleaning up agent threads"
« Antwort #7 am: 20.12.05 - 15:46:34 »
Ohne Böse zu sein, dass das doc.recycle() fehlt, habe ich schon geschrieben, aber leider ist machineslave nicht darauf eingegangen, wie auch auf die meisten anderen Hinweise von mir. Aber na ja, vielleicht hilft es ja jemand anderen.

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 machineslave

  • Senior Mitglied
  • ****
  • Beiträge: 328
  • Geschlecht: Männlich
Re: Java Agent "Error cleaning up agent threads"
« Antwort #8 am: 20.12.05 - 15:57:54 »
Ohne Böse zu sein, dass das doc.recycle() fehlt, habe ich schon geschrieben, aber leider ist machineslave nicht darauf eingegangen, wie auch auf die meisten anderen Hinweise von mir. Aber na ja, vielleicht hilft es ja jemand anderen.

Grüße

Ralf


Ehm sorry... hatte ich vergessen zu erwähnen; das doc.recycle() ist ebenfalls eingefügt.
Am Errorhandling habe ich noch nichts gemacht, aber wenn er an irgendeiner Stelle auf die Nase fällt, dann bekomme ich doch zumindest die "wilden" Fehlermeldungen auf der Konsole und kann zumindest "ahnen", wo der Fehler ist.

Ich werd mal die Konfig bzgl. Speicher aktualisieren (JavaMaxHeapSize=512MB , JavaMinHeapSize=256MB)

Der Form halber ist hier nochmal die geänderte ImportColors Klasse:



public class ImportColors{

   public int records;
   
   public ImportColors (String system, String username, String password, String collectionName, Database db, String param) {
      
      try {
         DriverManager
               .registerDriver(new com.ibm.as400.access.AS400JDBCDriver());
         Connection connection = DriverManager.getConnection("jdbc:as400://"
               + system, username, password);
         DatabaseMetaData dmd = connection.getMetaData();

         // Execute the query.
         Statement select = connection.createStatement();
         String tableName = "SGEEANP";
         System.out.println("SELECT * FROM "
               + collectionName + dmd.getCatalogSeparator() + tableName + " WHERE SEPARM='" + param + "'");
         ResultSet rs = select.executeQuery("SELECT * FROM "
               + collectionName + dmd.getCatalogSeparator() + tableName + " WHERE SEPARM='" + param + "'");
         int x = 0;
         
         while (rs.next()) {
            try {
               Document doc = db.createDocument();
               doc.replaceItemValue("Form", "SGSCLRP");
               doc.replaceItemValue("SFSSEA", rs.getString("SESSEA"));
               doc.replaceItemValue("SFYEAR", rs.getString("SEYEAR"));
               doc.replaceItemValue("SFDIV", rs.getString("SEDIV"));
               doc.replaceItemValue("SFSTYL", rs.getString("SESTYL"));
               doc.replaceItemValue("SFSCLR", rs.getString("SESCLR"));
               doc.replaceItemValue("SFCDSC", rs.getString("SECDSC"));
               doc.replaceItemValue("param", param);
               doc.save(true, false);
               x = x + 1;
               doc.recycle();
            } catch (NotesException e2) {

               e2.printStackTrace();
            }
         }
         setRecords(x);
         rs.close();
         select.close();
         connection.close();
         connection = null;
         DriverManager.deregisterDriver(null);
      } catch (SQLException e) {

         e.printStackTrace();
      }
   }
   
   public int getRecords() {
      return records;
   }

   public void setRecords(int records) {
      this.records = records;
   }
}

Gruß

Stefan
Stefan

Das Leben ist ein Scheiß Spiel, aber die Grafik ist geil

Offline machineslave

  • Senior Mitglied
  • ****
  • Beiträge: 328
  • Geschlecht: Männlich
Re: Java Agent "Error cleaning up agent threads"
« Antwort #9 am: 20.12.05 - 16:39:16 »
boah ... langsam verzweifel ich.

Der kommt immer mit neuen Fehlern. Jetzt meint er auf einmal, connection.close() würde ihm nicht passen.
Das merkwürdigste dabei: Wenn ich die ganze Choose auf dem Client laufen lasse, läuft der Agent komplett durch.

Nun ja, ich werd auf jeden Fall morgen mal noch ein bischen mit dem Errorhandling experimentieren, und wenn's nicht hilft ... <ggrrrrr>  :)

Gruß und bis jetzt schonmal vielen Dank für die Mühe.

Stefan

PS:
Aber ich hab da noch ne ander Idee: Eventuell das Teil als eigenständiges Java-Programm auf nem Windows Server laufen lassen. Da habe ich wenigstens auch nicht unbedingt das Problem mit der Laufzeit des Agenten (kann gut sein, dass der Agent, je nach Datenmenge, bis zu 2 Std .)
Ich musste das eh schon in mehrere (10) Agenten splitten.
Stefan

Das Leben ist ein Scheiß Spiel, aber die Grafik ist geil

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: Java Agent "Error cleaning up agent threads"
« Antwort #10 am: 20.12.05 - 17:12:32 »
Warum auf einem Windowsserver laufen lassen. Man kann es doch so gut Native auf der I/5 laufen lassen. Über den Jobscheduler von OS/400 kann man die Jobs auch gut planen.

Moment da komme ich gerade auf was, wie hast du den den JDBC Treiber der I/5 DB2 eingebunden, über importieren oder ?

Da gibt es nämlich ein bekanntes Problem. Schreib mal wie du es gemacht hast, vielleicht sind wir jetzt auf dem richtigen Weg.

Grüße

Ralf


P.S. Übrigens zu der Performance habe ich auch schon was geschrieben. Ich bin sicher wenn du meine Tipps dazu implentierst, dann wird die Laufzeit des Agenten radikal kürzer.
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 flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Java Agent "Error cleaning up agent threads"
« Antwort #11 am: 20.12.05 - 18:06:24 »
Ich hab das noch nie so gesehen.
         
Code
DriverManager
					.registerDriver(new com.ibm.as400.access.AS400JDBCDriver());
			Connection connection = DriverManager.getConnection("jdbc:as400://"
					+ system, username, password);
         
Warum nicht einfach:
Code
Driver drv = (Driver)Class.forName("com.imaginary.sql.msql.MsqlDriver").newInstance();
			Connection connection = drv.getConnection("jdbc:as400://"
					+ system, username, password);

[...]
Und unten vielleicht: 
drv = null; 

Diese Zeile ist auch überflüssig:
Code
DatabaseMetaData dmd = connection.getMetaData();


« Letzte Änderung: 20.12.05 - 18:08:47 von kennwort »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline machineslave

  • Senior Mitglied
  • ****
  • Beiträge: 328
  • Geschlecht: Männlich
Re: Java Agent "Error cleaning up agent threads"
« Antwort #12 am: 21.12.05 - 08:10:13 »
Ich kenn mich leider nicht wirklich auf der AS/400 Welt aus (und es gibt bei uns leider auch niemanden, der schonmal was mit Java auf der AS/400 gemacht hat.)
Warum auf einem Windowsserver laufen lassen. Man kann es doch so gut Native auf der I/5 laufen lassen. Über den Jobscheduler von OS/400 kann man die Jobs auch gut planen.

Den JDBC-Treiber habe ich importiert.
Moment da komme ich gerade auf was, wie hast du den den JDBC Treiber der I/5 DB2 eingebunden, über importieren oder ?

Das habe ich von nem Beispielcode (wie greife ich auf DB/2-Daten auf der AS/400 zu)
Ich hab das noch nie so gesehen.
   
DriverManager
               .registerDriver(new com.ibm.as400.access.AS400JDBCDriver());
         Connection connection = DriverManager.getConnection("jdbc:as400://"
            + system, username, password);
Stefan

Das Leben ist ein Scheiß Spiel, aber die Grafik ist geil

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Java Agent "Error cleaning up agent threads"
« Antwort #13 am: 21.12.05 - 08:14:43 »
Hast du mal meinen Alternativ-Code versucht?
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

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: Java Agent "Error cleaning up agent threads"
« Antwort #14 am: 21.12.05 - 08:23:21 »
Hallo!

Lies dir mal den Thread http://atnotes.de/index.php?topic=22558.20 durch. Da kommt zum Schluß heraus, bei dem selben Problem, dass es daran liegt, dass der JDBC Treiber nicht importiert werden darf, sondern entweder über JavaUserClasses in der Notes.ini des Servers oder in dieses spezielle Lib Verzeichnis der JVM. Tut mir leide, dass ich erst jetzt daran gedacht habe. Ist aber wirklich genau das selbe Problem wie deines und ich denke, dass wird sicher funktionieren.

Aber ich würde trotzdem noch die Performancesachen und vor allem das preparedStatement machen. Sonst bist du wie Axel schon gesagt hast, schwer gefährdet für SQL Injection.

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 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: Java Agent "Error cleaning up agent threads"
« Antwort #15 am: 21.12.05 - 16:13:36 »
Und läuft es jetzt. Bin einfach neugierig.

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 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: Java Agent "Error cleaning up agent threads"
« Antwort #16 am: 22.12.05 - 17:03:47 »
Jetzt haben wir uns so geplagt machineslave zu helfen und er sagt nicht mal ob es geholfen hat. >:(
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 machineslave

  • Senior Mitglied
  • ****
  • Beiträge: 328
  • Geschlecht: Männlich
Re: Java Agent "Error cleaning up agent threads"
« Antwort #17 am: 22.12.05 - 18:34:39 »
Hallo,

ich bitte vielmals um Entschuldigung, dass ich mich erst jetzt wieder melde  :-[

Also hier ist der aktuelle Stand der Dinge:

Ich habe die Java Klassen so umgeschrieben, dass sie jetzt auf jeder x-beliebigen Maschine laufen können (Windows). Da ich das alles bis morgen fertig haben muss, schien mir dies die schnellste (wenn vielleicht auch nicht die sauberste) Lösung meines Problems zu sein.

Aber ich möchte mich trotzdem vielmals bei Euch für Eure Hilfe bedanken. Ich habe auf jeden Fall einiges an guten Tipps hier mitnehmen können, die mir in Zukunft bei der Java-Programmierung behilflich sein werden.

Danke und schonmal ein schönes Weihnachtsfest und nen guten Rutsch.

Stefan
Stefan

Das Leben ist ein Scheiß Spiel, aber die Grafik ist geil

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Java Agent "Error cleaning up agent threads"
« Antwort #18 am: 22.12.05 - 19:16:28 »
Ralf hatte aber glaub ich recht.
Du mußt einfach die Treiber-jar in das Verzeichnis
%Domino_server_Programm_Verz%/jvm/lib/ext
legen.
Wir hatten das schon einmal.

Frohe Weihnachten und guten Rutsch

Axel
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re: Java Agent "Error cleaning up agent threads"
« Antwort #19 am: 01.02.06 - 16:52:04 »
Das gleiche Problem (Error cleanup agent threds) hatte ich übrigens mit Java-Agenten, die über Corba Remote-Zugriffe machen, auch schon.
Und zwar unter R5 und R6.
Seit der Serverversion 6.5.4 tritt das Problem einfach nicht mehr auf.
Stichwort Bugfixing...
Nachtigall, ick hör dir trapsen!!
+++To be human is more important than to be important!+++

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz