Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino

Java Agent "Error cleaning up agent threads"

<< < (2/4) > >>

Ralf_M_Petter:
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

hwenck:
doc.recycle();

in ImportColors fehlt

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

Ralf_M_Petter:
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

machineslave:

--- Zitat von: Ralf_M_Petter 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


--- Ende Zitat ---

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

machineslave:
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.

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln