[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Mar 2002
    Beiträge
    5.416
    Hallo,

    wer hockt da auf der DTAQ? ein Java Programm? wie werden die Daten per RPGLE bereit gestellt? Falls das synchron mit Java kommuniziert tippe ich auf threading Probleme. Vielleicht kannst du mal genauer beschreiben, was du da machst.

    mfg

    Dieter Bender

    Zitat Zitat von andi
    Hallo liebe Wissenden,
    zur Zeit stehe ich vor folgendem Problem:
    Ein Java Programm hat die Aufgabe, auf dem PC Threads zu erzeugen, welche über ein RMI-Interface per DTAQs Daten aus der AS400 anfordern. Die Sätze werden durch ein RPGLE dem Java-PGM zur Verfügung gestellt.

    Soweit funktioniert auch alles, jedoch nur bis zu einer gewissen Anzahl von anfragenden Threads: Bei ca. 100 aktiven Threads enden einige mit dem folgendem Fehler:

    java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is:
    java.net.SocketException: Connection reset by peer: socket write error
    at sun.rmi.transport.tcp.TCPChannel.createConnection( TCPChannel.java:291)
    at sun.rmi.transport.tcp.TCPChannel.newConnection(TCP Channel.java:188)
    ...
    Scheinbar ist die ?große?(?!) Anzahl von anfragenden Threads als Ursache anzusehen. Doch auf welcher Seite ist der Fehler zu finden, welche der beteiligten Komponenten schwächelt hier, Java, Windows, oder gar die AS/400? Warum "reset by peer"? Oder sollte ich sogar die grundsätzliche Struktur in Frage stellen?
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  2. #2
    Registriert seit
    Jul 2001
    Beiträge
    8
    Ok, also der grundsätzliche Ablauf beim Anfragen an die AS/400 ist ungefähr so:

    Auf der AS400 laufen permanent 10 Jobs, denen jeweils zwei DTAQs zugeordnet sind.
    Max. 10 aktive Jobs sind hierbei zulässig - mit je einer DTAQ zum Empfang und einer für die Antwort. Das ILE dieser Jobs versucht dabei ständig Daten aus der "Anfrage"-DTAQ zu lesen.

    Soll nun eine Anfrage an die AS gestellt werden, dann ermittelt Java (jeder Vorgang ein Thread) zunächst, ob eine freie Anfrage-DTAQ zur Verfügung steht (Überwachung der offenen Vorgänge). Ggf. wird hier so lange gewartet, bis dies der Fall ist. Sobald eine DTAQ frei ist, wird sie mit dem Anfrage-String gefüllt. Sodann wird versucht, aus der entsprechende "Antwort"-DTAQ zu lesen.

    ILE wiederum stellt fest, dass nun tatsächlich Anfragedaten vorliegen, (ruft nachgeordnete Verarbeitungsprogramme auf) und stellt das Ergebnis in die "Antwort- DTAQ" des Jobs.
    Java wartet ja sowieso schon auf die Antwort und that´s it. Im Prinzip auch ok, wenn nur dieser Einbruch bei "vielen" Anfrage-Threads nicht wäre – Blöd!


    Andreas

Similar Threads

  1. IFS - Freigabe per Befehlszeile
    By eps330 in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 26-11-07, 12:24
  2. Dateien per FTP von IFS auf der AS400 holen
    By kroehn in forum NEWSboard Windows
    Antworten: 5
    Letzter Beitrag: 08-11-06, 19:36
  3. Threads vs. JVMs
    By Beffe in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 08-11-06, 15:43
  4. update per sql
    By steven_r in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 25-09-06, 08:22
  5. Teildateien per SQL auflisten
    By Nennewitz in forum NEWSboard Programmierung
    Antworten: 16
    Letzter Beitrag: 28-06-06, 13:49

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •