AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
16.10.19 - 18:40:28
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Lotus Notes / Domino Sonstiges
| |-+  Java und .NET mit Notes/Domino (Moderatoren: Axel, m3)
| | |-+  Java Agent "Error cleaning up agent threads"
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Java Agent "Error cleaning up agent threads"  (Gelesen 14199 mal)
machineslave
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 328



« 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
Gespeichert

Stefan

Das Leben ist ein Scheiß Spiel, aber die Grafik ist geil
flaite
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 2966


WWW
« Antworten #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.
( Grin : 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 » Gespeichert

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
Ralf_M_Petter
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1879


Jeder ist seines eigenen Glückes Schmied


WWW
« Antworten #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
Gespeichert

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.
flaite
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 2966


WWW
« Antworten #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 » Gespeichert

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
machineslave
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 328



« Antworten #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.
Gespeichert

Stefan

Das Leben ist ein Scheiß Spiel, aber die Grafik ist geil
Ralf_M_Petter
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1879


Jeder ist seines eigenen Glückes Schmied


WWW
« Antworten #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
Gespeichert

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.
hwenck
Junior Mitglied
**
Offline Offline

Beiträge: 58


« Antworten #6 am: 20.12.05 - 15:43:48 »

doc.recycle();

in ImportColors fehlt

---> Speicherproblem
z.B.
JavaMaxHeapSize=512MB
JavaMinHeapSize=256MB
Gespeichert
Ralf_M_Petter
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1879


Jeder ist seines eigenen Glückes Schmied


WWW
« Antworten #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
Gespeichert

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.
machineslave
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 328



« Antworten #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
Gespeichert

Stefan

Das Leben ist ein Scheiß Spiel, aber die Grafik ist geil
machineslave
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 328



« Antworten #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>  Smiley

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.
Gespeichert

Stefan

Das Leben ist ein Scheiß Spiel, aber die Grafik ist geil
Ralf_M_Petter
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1879


Jeder ist seines eigenen Glückes Schmied


WWW
« Antworten #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.
Gespeichert

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.
flaite
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 2966


WWW
« Antworten #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 » Gespeichert

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
machineslave
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 328



« Antworten #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);
Gespeichert

Stefan

Das Leben ist ein Scheiß Spiel, aber die Grafik ist geil
flaite
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 2966


WWW
« Antworten #13 am: 21.12.05 - 08:14:43 »

Hast du mal meinen Alternativ-Code versucht?
Gespeichert

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
Ralf_M_Petter
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1879


Jeder ist seines eigenen Glückes Schmied


WWW
« Antworten #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
Gespeichert

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.
Ralf_M_Petter
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1879


Jeder ist seines eigenen Glückes Schmied


WWW
« Antworten #15 am: 21.12.05 - 16:13:36 »

Und läuft es jetzt. Bin einfach neugierig.

Grüße

Ralf
Gespeichert

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.
Ralf_M_Petter
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1879


Jeder ist seines eigenen Glückes Schmied


WWW
« Antworten #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. Angry
Gespeichert

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.
machineslave
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 328



« Antworten #17 am: 22.12.05 - 18:34:39 »

Hallo,

ich bitte vielmals um Entschuldigung, dass ich mich erst jetzt wieder melde  Embarrassed

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
Gespeichert

Stefan

Das Leben ist ein Scheiß Spiel, aber die Grafik ist geil
flaite
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 2966


WWW
« Antworten #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
Gespeichert

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
Thomator
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 353



« Antworten #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!!
Gespeichert

+++To be human is more important than to be important!+++
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: