PDA

View Full Version : Java und die Verbindung von außen über eine Dataq



Seiten : 1 [2]

Robi
20-11-13, 11:42
Jain,

Es ist ja der JavaJob, der die zusätzlichen Jobs in dem Q*WRK Subsystem verursacht.
Also soll das beenden des Javajobs auch diese dinger zumachen.

Aber ich vermute, das das nicht geht und wir alle Jobs des Users abschießen müssen.
Blöd ist nur, das ggf. gerade in dem Moment andere User diese 'Datenzugriff'-Jobs verwenden, der Job aber weiterhin das USEPRF aus dem Javajob sperrt.
(War der Tipp von Baldur, mit "WRKOBJLCK usrprf *USRPRF" die Jobs zu finden

Im Joblog eines solchen Jobs haben wir jedenfalls schon Meldungen gefunden, die mit dem Java-dataq-lesen überhaubt nix zu tun haben, sondern aus unserer GUI kommen.

Robert

Fuerchau
20-11-13, 11:44
Das soll verstehen wer will.
Wenn ich gezielt eine DTAQ YYY in der Lib XXX auswähle, sollte nichts anderes genommen werden.
das Standard-API QRCVDTAQ/QSNDDTAQ cached da überhaupt nichts.
Auch wenn ich Remote per API da direkt was angebe wird nichts gecached.

Es kommt nun auf die verwendeten Methoden in dem Java-Programm an, ob dieses selber irgendwo die Objektbeziehung zur DTAQ cached bzw. in einer Variablen hält und daher die Änderung nicht mitbekommt.
Hier wird ggf. zur Laufzeit das DTAQ-Objekt bei Verbindungstrennung nicht zerstört um es neu aufzubauen.
Da hilft auch kein IPL.

Ohne Quelle geht da nichts.

Pikachu
20-11-13, 12:16
Auszug aus der Beschreibung des Receive Data Queue (QRCVDTAQ) APIs (http://publib.boulder.ibm.com/infocenter/iseries/v5r4/topic/apis/qrcvdtaq.htm):

Note: To improve data queue performance, the data queue APIs remember addressing information for the last data queues used. This occurs when a specific (not *LIBL or *CURLIB) value is provided for the library name, and the data queue is located in the system auxiliary storage pool (ASP number 1) or a basic user ASP (ASP numbers 2-32). The addressing information for data queues located in independent ASPs is not saved.

Because the addressing information is saved, users of this API should be aware of the following scenarios.

Scenario 1

If, a job references a library-specific data queue, the data queue is moved using the Move Object (MOVOBJ) command or renamed using the Rename Object (RNMOBJ) command, and a new data queue is created with the same name and library as the data queue that was renamed or moved, then, the job continues to reference the original data queue, not the newly created data queue.

...

Fuerchau
20-11-13, 12:23
OK, das ist mir neu.
Ein RCLSTG sollte dafür aber normalerweise ausreichen.

Aber es wird ja auch geschrieben, dass andere Javaprogramme das Problem nicht haben.
Also irgendwas machen die dann ja wohl anders, nämlich korrekt.

BenderD
20-11-13, 13:03
@Dieter,
ja, aber das ist schon relativ sicher, alles andere wäre Betrug!


... Betrug setzt voraus, dass die wissen, was sie da tun - und ich tippe da eher auf das James Dean Syndrom.

D*B

BenderD
20-11-13, 13:11
If, a job references a library-specific data queue, the data queue is moved using the Move Object (MOVOBJ) command or renamed using the Rename Object (RNMOBJ) command, and a new data queue is created with the same name and library as the data queue that was renamed or moved, then, the job continues to reference the original data queue, not the newly created data queue.
...

... das bezieht sich allerdings dezidiert auf einen Job und ein disconnectService(AS400.DATAQUEUE) auf das AS400 Object sollte zu einer korrekten Initialisierung des prestarted Jobs vor Wiederverwendung führen, ansonsten wäre das ein Bug in der jt400.

D*B

Robi
27-11-13, 11:06
Die lassen sich nun doch nicht in den Code gucken.
Wir löschen die DATAQ nun vor dem rename der Lib.
In der neu erstellten Lib erzeugen wir die dataq neu.

Das geht
Robi

Fuerchau
27-11-13, 11:09
Unabhängig davon, Fehler gehören behoben!
Alternativ kann man ggf. per WRKOBJLCK den Job feststellen und killen.
Dann sollte der Move anschließend auch funktionieren.
Das Javaprogramm sollte dann in der Lage sein zu reconnecten.

BenderD
27-11-13, 13:39
Die lassen sich nun doch nicht in den Code gucken.

... das könnte einen Grund haben...