AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
17.10.21 - 12:27:59
Ü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)
| | |-+  Error cleaning up agent threads und WeakReference...
« vorheriges nächstes »
Seiten: 1 2 3 [4] 5 Nach unten Drucken
Autor Thema: Error cleaning up agent threads und WeakReference...  (Gelesen 35831 mal)
Mark³
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 386


Nordisch by Nature


WWW
« Antworten #60 am: 13.04.06 - 19:53:00 »

ich mache nie etwas falsch.  Grin

naja, jedenfalls muss hier der Fehler woanders liegen, da es etwa 3x nacheinander funktioniert und ab da gar nicht mehr.
Der Befehl ServerSocket.accept() tut einfach nichts mehr und irgendwann gab es mal ein Windows-Hotfix, welches mehrere Socket-Aufrufe blockt, da eine DoS-Attacke verhindert werden soll. Anders kann ich es mir nicht erklären, vielleicht finde ich bei MSDN was...
Gespeichert

sagt Mark.



slowfood.de
flaite
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 2966


WWW
« Antworten #61 am: 15.04.06 - 08:03:28 »

Mark,

ich finde es absolut faszinierend, dass du offenbar in diesem Projektstatus Mehrfachaufrufe in deinen Junit-Tests hast.   Cheesy

Ich finde das Thema interessant und arbeite an einen kleinen RemoteCommand Beispiel über Sockets.

Ich möchte, dass diese Anfragen an die Businesslogik des Remote Service als Objekt übertragen werden (und das wird auch klappen).
Benutze dafür das Command Pattern.
Ist halb fertig, wird klappen und ist für solche Aufgaben wiederverwendbar.






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

Geschlecht: Männlich
Beiträge: 386


Nordisch by Nature


WWW
« Antworten #62 am: 18.04.06 - 11:32:14 »

ich konnte den Fehler noch nicht identifizieren. Heute trat er bei einem Belastungstest nicht auf. (Schade, ich wollte ihn mit TCPView umzingeln)
Bei Microsoft gibt es diverse Registry-Parameter und HotFixes, die das Verbinden und erneut verbinden über Sockets beeinflussen, aber ohne genaiuen Fehler komme ich da nicht weiter. Ich habe meinen PrintWritern nun noch ein flush() mitgegeben, da der OutputStream aber nicht Bufferd ist erscheint mir das irgendwie sinnlos...

Gespeichert

sagt Mark.



slowfood.de
Mark³
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 386


Nordisch by Nature


WWW
« Antworten #63 am: 18.04.06 - 15:59:11 »

das ist doch alles  Angry Huh Embarrassed Cry

ich bekomme immer wieder unregelmäßig komische Fehler, ich werde wohl doch über einen Tomcat-Server gehen. Auf die gleiche Arie mit RMI habe ich keine Lust, da ich nicht ausschließen kann, dass ich dann wieder die gleichen Socket-Probleme bekomme...

Ich habe zwar bereits ein paar JSPs als Vorlage, die auf Openview zugreifen, allerdings möchte ich ja gar keine Webseiten aufrufen sondern direkt die Servlets (oder Webservices?) ansprechen. Da weiß ich momentan wieder gar nicht wo ich anfangen soll...
Es gibt wohl eine fertige Session-Bean, die ich zum einloggen nehmen kann. Naja konkretes kommt später, nun muss ich mich erstmal zurechtfinden...
Gespeichert

sagt Mark.



slowfood.de
Mark³
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 386


Nordisch by Nature


WWW
« Antworten #64 am: 19.04.06 - 11:18:47 »

ich habe nun eine meiner benötigten Funktionen als JSP implementiert, das klappt manuell schon.
Wie ich das nun aber praktisch mache ist wmir noch nicht so klar. Momentan öffne ich eine Login.jsp, die eine Session-Bean erstellt und dafür User und Passwort verlangt (Eingabe in Webseite). Danach kann ich dann die nächste JSP aufrufen, die meine gewünschte Funktion in Openview durchführt. Wie mache ich das nun, wenn ein Notesagent die Aktionen aufrufen soll?

Ich könnte natürlich das einloggen im Code mit verwursten und direkt eine einzige JSP aufrufen die jeweils die Funktion ausführt die ich gerade benötige. Dann könnte ich also statt JSP gleich ein Servlet nehmen, welches ich dann direkt aufrufe?
Und dann über post oder get, was ist da besser aus Notesagent raus?  Huh
Nochmal als Zusammenfassung für Thread-Fremde:

Ich habe einen Tomcat-Server, der über eine API Funktionen in HP Openview Servicedesk ausführen soll. Ansprechen möchte ich die Funktionen über eine Notesdatenbank. Die Ergebnisse sollen dann in Dokumenten der Datenbank sichtbar sein.
Gespeichert

sagt Mark.



slowfood.de
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 #65 am: 19.04.06 - 11:48:40 »

Hallo Mark!

Wie ich schonmal gesagt habe, JSP ist hier nicht geeignet, da JSP im J2EE Umfeld für die Präsentation zuständig ist, also im Normalfall jede Menge HTML enthält. Scriptlets (also Java Code im JSP) ist schlechter Stil und sollte man nicht haben, obwohl ich zugeben muß, dass ich das vor Jahren auch so gemacht habe. Du solltest also auf jeden Fall Servlets verwenden. Übrigens können Servlets alles, was auch in JSP's machbar ist, da JSP während der Umwandlung in Servlets verwandelt werden. Du kannst deine Parameter sicher genauso übergeben wie es ein Browsermacht und zwar hinter deinem Url mit "Url?Parameter1=XX&Parameter2=XX" Diese Parameter kannst du dann im Servlet wieder einlesen.

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 #66 am: 19.04.06 - 14:29:44 »

Hi Mark,

ich bastele zu Hause (wenig Zeit, Ostern weitgehend weg von meinem Computer) an einer ultimativen Server Socket Lösung. Vielleicht klappts heute.
Nimm für dieses Tomcat Zeug HttpClient von jakarta Commons. Ich poste noch bis 17:00 Uhr etwas, das zumindest als Gedankenstütze für mich dienen kann.

Ansonsten würde ich Ralf zustimmen, aber wenn du das schon mal soweit hast...

Jakarta-commons kann Authentifizierung und du brauchst dich vermutlich gar nicht mehr darum kümmern. Ich habs jedenfalls mal für einen Dresdenerbank-Service hingekriegt und da mußte man sich auch authentifizieren.

Kann das heute noch mal gegen Tomcat ausprobieren.

Gruß 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
Mark³
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 386


Nordisch by Nature


WWW
« Antworten #67 am: 19.04.06 - 15:24:45 »

ok, ich konzentriere mich dann auf Servlets...
Irgendwie werden diese Webgeschichten im Eclipse WTP nicht so schön dargestellt, das war die einzige Domäne, wo NetBeans mir besser gefiel. Ich baue also ein neues Dynamic Web Project, erstelle dort drin ein paar Servlets und mache Run on Server 'marks Tomcat'  Cool
Den http-Client von jakarta commons baue ich dann als Client in meinen Notesagenten ein? Nicht dass ich dann wieder da lande, wo ich herkomme, nämlich bei 'error cleaning up agent threads' und som Zeugs  Evil
Gespeichert

sagt Mark.



slowfood.de
flaite
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 2966


WWW
« Antworten #68 am: 19.04.06 - 16:09:51 »

ok, ich konzentriere mich dann auf Servlets...
Irgendwie werden diese Webgeschichten im Eclipse WTP nicht so schön dargestellt, das war die einzige Domäne, wo NetBeans mir besser gefiel.
Ich verwende myEclipse professional Edition (ca. 49 Euro pro Jahr mit updates). Ich überlege mir, ob ich mir Intelij IDEA kaufen soll (495 Euro).

Zitat
Den http-Client von jakarta commons baue ich dann als Client in meinen Notesagenten ein? Nicht dass ich dann wieder da lande, wo ich herkomme, nämlich bei 'error cleaning up agent threads' und som Zeugs  Evil
Ich würds erstmal als zweites Eclipse Projekt machen (neben dem Tomcat Projekt).
« Letzte Änderung: 19.04.06 - 16:11:37 von Axel Janssen » 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
Mark³
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 386


Nordisch by Nature


WWW
« Antworten #69 am: 19.04.06 - 16:16:24 »

Zitat
Ich würds erstmal als zweites Eclipse Projekt machen (neben dem Tomcat Projekt).
Das hilft mir leider nicht. Die Notesdatenbank inkl. aller Funktionalität ist fertig, es fehlt nur noch die Schnittstelle Notes <-> Openview.
Gespeichert

sagt Mark.



slowfood.de
flaite
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 2966


WWW
« Antworten #70 am: 19.04.06 - 18:27:58 »

wieso. Du kannst allein schon im Namen von einfacheren Debugging erstmal in Eclipse den Code für die Schnittstelle erzeugen? 
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
flaite
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 2966


WWW
« Antworten #71 am: 19.04.06 - 18:34:06 »

Hier sind jedenfalls die Abhängigkeiten.
http://jakarta.apache.org/commons/httpclient/dependencies.html
Diese jars dort und das jar von HttpClient selbst gehören in das lib/ext Verzeichnis der JVM des Servers (oder wo immer das auch nur testweise laufen soll).
Es geht in jedem Fall mit 1.4 und ich hoffe auch mit 1.3.
Sonst müsstest du die Klassen in java.net benutzen. Geht auch.

apache.jakarta HttpClient ist aber einfacher.

Gruß Axel
« Letzte Änderung: 19.04.06 - 18:47:09 von Axel Janssen » 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
Mark³
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 386


Nordisch by Nature


WWW
« Antworten #72 am: 19.04.06 - 20:04:14 »

das entwickeln mache ich natürlich in Eclipse, da haben wir aneinander vorbei gedacht...
Bloß das Einbinden von großen jars in Notes wollte ich eigentlich vermeiden. Aber wenn ich die auf dem Server ins JVM-Verzeichnis lege wird es wohl gehen, wenn nicht wieder Speicherprobleme auftreten oder agent thread Fehler nerven. Dann muss ich aber alle meine Agenten auf dem Server laufen lassen...Und dann hätte ich mir womöglich alles schenken können und einfach die Openview web-api.jar auf den Server legen können. Naja, man lernt ja trotzdem immer was dazu. Und Sonntag werde ich unsere Server auf 7.0.1 aufrüsten, dann ist JRE 1.4 kein Problem mehr serverseitig.
Gespeichert

sagt Mark.



slowfood.de
flaite
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 2966


WWW
« Antworten #73 am: 19.04.06 - 23:01:37 »

Das geht natürlich auch Clientseitig.

Hier ist jedenfalls Beispielcode für httpClient:
Attachment in Zip umbenennen. Beinhaltet 4 Klassen.
verwendete jars:
commons-codec-1.3.jar
commons-httpclient-3.0.jar
commons-logging-jar
commons-logging-api.jar (?)
dom4j-1.6.1.jar
jaxen-1.1-beta-6.jar (im lib des dom4j downloads).

Einfach ExchangeRateService starten (hat eine main-Methode).
Falls du hinter einer Firewall sitzt, musst du noch das ReverseProxyBean initialisieren. In der main von ExchangeRateService die 2 neuen Zeilen einfügen:
Code:
public static void main (String args[]) {
ExchangeRateService exchRateService = new ExchangeRateService();
// neu
ReverseProxyBean revProxyBean = new ReverseProxyBean("host", 8080, "username", "password");
exchRateService.setReverseProxyBean(revProxyBean);
// neu ende

Dieser code sollte eine Zeile der aktuellen Referenzwechselkurse der europ. Zentr.bank zurückgegeben. (als Map wenn ich mich recht erinnere).
dom4j ist btw auch eine wirklich einfach zu benutzende xml api.

Das funktioniert noch nicht gegen einen Server der Authentifizierung verlangt. Das kommt morgen.

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

Beiträge: 2966


WWW
« Antworten #74 am: 20.04.06 - 05:19:07 »

Hab auf die schnelle doch noch was gefunden.
Versuche vielleicht das hier:
Code:
Credentials defaultcreds = new UsernamePasswordCredentials(
usernameServer, passwordServer);
client.getState().setCredentials(AuthScope.ANY, defaultcreds);
in die Methode
buildRequestHeader() von ExchangeRateService zu packen (am Schluss. Ist aber egal.

empfohlene Schritte:
1. Eclipse Projekt aufsetzen
2. jars runterladen.
3. In Projekt Classpath die genannten jars (aus: commons-httpclient, commons-codec-1.3, commons-logging-1.0.4 sowie dom4j-1.6.1) importieren.
4. Das oben angehängte .jpg runterladen und in zip umbenennen.
5. Die 4 Dateien im zip in das src-Verzeichnis des Projektes importieren.
6. Gegebenfalls oben angesprochene Firewall-Änderung durchführen.
7. Testen d.h. ExchangeRateService starten.
8. An deine Gegebenenheiten anpassen (evtl. mit oben angesprochener Änderung mit Authentifzierung).

« Letzte Änderung: 20.04.06 - 05:33:03 von Axel Janssen » 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
flaite
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 2966


WWW
« Antworten #75 am: 20.04.06 - 06:56:41 »

Ich hoffe das ist klar.
Der Teil ist btw. ein Beispiel für definitiv übles Errorhandling von mir:
Code:
org.w3c.dom.Document doc = db.parse(is);

return parseTodaysExchangeRateBeansFromXml (doc);

} catch (Exception e) {
String errMsg = "Die URL ist nicht erreichbar:" + urlEcbDaily;

throw new WebRetrievalException(errMsg, e);

}
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
Mark³
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 386


Nordisch by Nature


WWW
« Antworten #76 am: 20.04.06 - 16:48:13 »

ich habe nun ein Servlet auf Tomcat laufen, welches meine gewünschten Befehle in Openview ausführt.
Um auf Clientseite Java loszuwerden nutze ich nun Microsoft ActiveX (http://atnotes.de/index.php?topic=28468.msg180071#msg180071. Java und Notes-Client ist eben noch nicht so stabil.
Gespeichert

sagt Mark.



slowfood.de
flaite
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 2966


WWW
« Antworten #77 am: 20.04.06 - 16:50:48 »

Ist es doch. Nur eben ein bischen kompliziert. Ich werde mal ein Beispiel posten.
Allerdings für Notes 7.0.
Wir haben allerdings auch eine Anwendung laufen, die mit Notes 5.0 per http mit einem Tomcat Server per xml kommuniziert. Nur mit den Sun java.net Klassen von java1.1 und den xml libraries von notes auf java1.1. Und das macht keinen Spaß.
« Letzte Änderung: 20.04.06 - 16:52:48 von Axel Janssen » 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
flaite
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 2966


WWW
« Antworten #78 am: 28.04.06 - 22:52:02 »

Ich hab jetzt mal eine SocketServer Umgebung durchgecodet.
Client von CMD-Console und Server von Eclipse starten macht keine Probleme. Dh. läuft.

Morgen packe ich den Client in einen Notes Agenten.

Falls sich jemand dafür interessiert:
1. Das Error-Handling ist sicher nicht ausgereift.
2. Das Command Framework ist schlecht. Ich wollte es jetzt nicht direkt neu programmieren. Mach das irgendwann noch besser.
3. Was tun?
a) das attachte File in clientObjects.jar umbenennen und in ein Verzeichnis tun (z.B. C:\temp)
b) Die einzelnen Klassen des jars in ein Eclipse Projekt importieren.
c) In Eclipse die Klasse de.aja.server.SocketServer starten. (in clientObjects.jar sind sowohl die Client als auch die Server-Klassen)
d) in Windows (z.B.) clientObjects.jar von der Kommandozeile starten:
(man hat dann quasi 2 Java Programme 1 Client und 1 Server)
Code:
C:\TEMP>java -jar clientObjects.jar
cba

C:\TEMP>java -jar clientObjects.jar
cba

C:\TEMP>java -jar clientObjects.jar
cba
Man kann es mehrmals aufrufen.
Im Sourcecode steht, was passiert.

1. Der Client erzeugt ein Objekt.
2. Der Client schickt das Objekt als serialisierten Stream an den Server.
3. Der Server verarbeitet das Objekt weiter. (ruft Methode excecute auf).
4. Der Server sendet ein Antwort-Objekt an den Client zurück.
5. Der Client ruft eine Methode des empfangenen Objekts auf.

Wie gesagt: Marc-> Auf die Art kannst du (oder jemand anders) Objekte in Notes erzeugen, an den hier enthaltenen SocketServer schicken. Der SocketServer kann dann irgendwelche Klassen aufrufen (z.B. dieses openView Zeugs) und  ein Response Objekt zurücksenden
... und das kann man in Notes wieder empfangen.

DAS IST ZWAR ALLES EIN BISCHEN SCHLUDRIG RUNTERGESCHRIEBEN.
ABER: Wär schön wenn sich jemand für interessieren würde. Ich hab die Idee verschiedene Remote-Aufrufe aus Notes in Java sauber durchzuprogrammieren und in Show-Code-on Thursday (oder wie immer diese Rocky Oliver Initiative heisst) publizieren.
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
Mark³
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 386


Nordisch by Nature


WWW
« Antworten #79 am: 02.05.06 - 07:53:40 »

da sind ein paar interessante Details drin, z.B. die Weitergabe von Objekten...

Ich muss erst mal mein konkretes Problem lösen bevor ich mir das genauer ansehen kann. Die Problematik bei mir sind die Openview-Zugriffe, da ich die Connections nicht richtig verwalten kann. Die API hat zwar einen connect-Befehl, aber keine Prüfung, ob die aktuelle Session noch gültig ist. Nach 30 min gibts einen Timeout, danach kann ich die Session nicht mehr nutzen. Nun muss ich wohl einen Timerthread einbauen, der alle 20min einen Dummyzugriff macht um den Timeout zu umgehen. Alles irgendwie unelegant, aber die API liefert einfach nix vernünftiges.
Gespeichert

sagt Mark.



slowfood.de
Seiten: 1 2 3 [4] 5 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: