PDA

View Full Version : email mit java



Seiten : [1] 2 3 4

muadeep
27-10-04, 13:08
Habe irgendwo im Netz eine Beschreibung gefunden, wie man e-mails mit RPG(LE) versenden kann!

Habe dann im IFS folgende Verzeichnisse erstellt!

/java
-> demo DIR
-> jaf DIR
-> jafamil DIR

im Verz. /java/demo befindet sich der Java-Source-Code
-> Mailer.java STMF

der Kopf siehst so aus:
package demo;

import java.io.InputStream;

import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.DataSource;
:
:

wenn ich jetzt mit QShell die *.jar File erstellen will
qsh
cd /java
javac -classpath '.:/java/javamail/mail.jar:/java/jaf/activation.jar' demo/Mailer.java

dann schaut mein Java-Verzeichnis (/java/demo) wie folgt aus:
-> Mailer.class STMF
-> Mailer.java STMF
-> Mailer$1.class STMF

Ich dachte eigentlich, daß jetzt das Java-Programm kompalliert wurde!

Doch als ich mein RPGLE aufrufen wollte, bekam ich einen Programmabbruch!

Nachrichten-ID . . . . : RNQ0301 Bewertung . . . . . . : 99
Nachrichtenart . . . . : Anfrage
Sendedatum . . . . . . : 27.10.04 Sendezeit . . . . . . : 13:55:14

Nachricht . . . : Java-Ausnahme beim Aufrufen der Java-Methode empfangen (C
G D F).
Ursache . . . . : RPG-Prozedur MAILERDEMO in Programm xxx/MAILERDEMO hat
Java-Ausnahme "java.lang.SecurityException: Prohibited package name:
java.demo" empfangen, als die Methode "sendSimpleMail" mit Kennung
"(Ljava.lang.String;Ljava.lang.String;Ljava.lang.St ring;Ljava.lang.String;)L
java.lang.String;" in Klasse "demo.Mailer" aufgerufen wurde.
Fehlerbeseitigung: Mit Hilfe des Benutzers, der für die Programmpflege
verantwortlich ist, die Fehlerursache bestimmen.

Ich mußte dann vestellen, das beim Umwandeln des Java-Programms (mit QShell) ein JOBLOG erstellt wurde´!
Dieses sieht wie folgt aus:

5722SS1 V5R2M0 020719 Jobprotokoll BHSWHR 27.10.04 13:51:25 Seite 1
Jobname . . . . . . . . . . : QP0ZSPWP Benutzer . . . . : Qxxxxxxxxxx Nummer . . . . . . . . . . . : 655241
Jobbeschreibung . . . . . . : QDFTJOBD Bibliothek . . . : QGPL
NACHR-ID ART BEW DATUM ZEIT VON PGM BIBLIOTHEK INST AN PGM BIBLIOTHEK INST
CPF1124 Information 00 27.10.04 13:51:23,279656 QWTPIIPP QSYS 05D4 *EXT *N
Message . . . . : Job 655241/Qxxxxxxxxx/QP0ZSPWP im Subsystem QINTER in QSYS
am 27.10.04 um 13:51:23 gestartet. Job im System am 27.10.04 um 13:51:23.
angekommen.
JVAB529 Diagnostic 40 27.10.04 13:51:23,430152 QJVAUTLJVM QSYS *STMT QJVAJVM QSYS *STMT
From module . . . . . . . . : QJVAUTLJVM
From procedure . . . . . . : JvaSendMsg
Statement . . . . . . . . . : 1391
To module . . . . . . . . . : RUNJAVA
To procedure . . . . . . . : RunJava
Statement . . . . . . . . . : 2298
Message . . . . : Allgemeine Schreibberechtigung für ".".
Ursache . . . . : Verzeichnis "." im Klassenpfad hat die allgemeine
Schreibberechtigung. Haben mehrere Klassendateien in einem Verzeichnis
denselben Namen, wird die zuerst gefundene Klasse
ausgeführt.Fehlerbeseitigung: Ist die Stufe für die Sicherheitsprüfung des
Klassenpfads (CHKPATH) *SECURE, kann der Befehl nicht beendet werden, wenn
ein Verzeichnis in dem Klassenpfad die allgemeine Schreibberechtigung hat.
Den Administrator bitten, die allgemeine Schreibberechtigung aus Verzeichnis
"." zu entfernen, oder CHKPATH ändern, und den Befehl erneut ausführen.Hat
Verzeichnis "." weiterhin die allgemeine Schreibberechtigung und hat CHKPATH
nicht den Wert *SECURE, kann geprüft werden, welche Klassen ausgeführt
werden, indem der Parameter OPTION auf *VERBOSE gesetzt und der Befehl
erneut ausgeführt wird.

Ich kann damit leider gar nicht's Anfang!

Kann mir jemand weiterhelfen?

BenderD
27-10-04, 13:53
Hallo,

wolltest du mit mehrfach posten der Frage mehr Nachdruck verleihen?
Mit dem Compile ist eigentlich alles in Ordnung; die Fehlermeldung besagt, dass beim Aufruf was schief geht!, da wird (von der RPG Runtime) ein Parameter benutzt, der besagt, dass die class Dateien für public Berechtigung read only sein sollen; wo die das her hat, das wissen die Götter vermutlich auch nicht.

mfg

Dieter Bender



Habe irgendwo im Netz eine Beschreibung gefunden, wie man e-mails mit RPG(LE) versenden kann!

Habe dann im IFS folgende Verzeichnisse erstellt!

/java
-> demo DIR
-> jaf DIR
-> jafamil DIR

im Verz. /java/demo befindet sich der Java-Source-Code
-> Mailer.java STMF

der Kopf siehst so aus:
package demo;

import java.io.InputStream;

import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.DataSource;
:
:

wenn ich jetzt mit QShell die *.jar File erstellen will
qsh
cd /java
javac -classpath '.:/java/javamail/mail.jar:/java/jaf/activation.jar' demo/Mailer.java

dann schaut mein Java-Verzeichnis (/java/demo) wie folgt aus:
-> Mailer.class STMF
-> Mailer.java STMF
-> Mailer$1.class STMF

Ich dachte eigentlich, daß jetzt das Java-Programm kompalliert wurde!

Doch als ich mein RPGLE aufrufen wollte, bekam ich einen Programmabbruch!

Nachrichten-ID . . . . : RNQ0301 Bewertung . . . . . . : 99
Nachrichtenart . . . . : Anfrage
Sendedatum . . . . . . : 27.10.04 Sendezeit . . . . . . : 13:55:14

Nachricht . . . : Java-Ausnahme beim Aufrufen der Java-Methode empfangen (C
G D F).
Ursache . . . . : RPG-Prozedur MAILERDEMO in Programm xxx/MAILERDEMO hat
Java-Ausnahme "java.lang.SecurityException: Prohibited package name:
java.demo" empfangen, als die Methode "sendSimpleMail" mit Kennung
"(Ljava.lang.String;Ljava.lang.String;Ljava.lang.St ring;Ljava.lang.String;)L
java.lang.String;" in Klasse "demo.Mailer" aufgerufen wurde.
Fehlerbeseitigung: Mit Hilfe des Benutzers, der für die Programmpflege
verantwortlich ist, die Fehlerursache bestimmen.

Ich mußte dann vestellen, das beim Umwandeln des Java-Programms (mit QShell) ein JOBLOG erstellt wurde´!
Dieses sieht wie folgt aus:

5722SS1 V5R2M0 020719 Jobprotokoll BHSWHR 27.10.04 13:51:25 Seite 1
Jobname . . . . . . . . . . : QP0ZSPWP Benutzer . . . . : Qxxxxxxxxxx Nummer . . . . . . . . . . . : 655241
Jobbeschreibung . . . . . . : QDFTJOBD Bibliothek . . . : QGPL
NACHR-ID ART BEW DATUM ZEIT VON PGM BIBLIOTHEK INST AN PGM BIBLIOTHEK INST
CPF1124 Information 00 27.10.04 13:51:23,279656 QWTPIIPP QSYS 05D4 *EXT *N
Message . . . . : Job 655241/Qxxxxxxxxx/QP0ZSPWP im Subsystem QINTER in QSYS
am 27.10.04 um 13:51:23 gestartet. Job im System am 27.10.04 um 13:51:23.
angekommen.
JVAB529 Diagnostic 40 27.10.04 13:51:23,430152 QJVAUTLJVM QSYS *STMT QJVAJVM QSYS *STMT
From module . . . . . . . . : QJVAUTLJVM
From procedure . . . . . . : JvaSendMsg
Statement . . . . . . . . . : 1391
To module . . . . . . . . . : RUNJAVA
To procedure . . . . . . . : RunJava
Statement . . . . . . . . . : 2298
Message . . . . : Allgemeine Schreibberechtigung für ".".
Ursache . . . . : Verzeichnis "." im Klassenpfad hat die allgemeine
Schreibberechtigung. Haben mehrere Klassendateien in einem Verzeichnis
denselben Namen, wird die zuerst gefundene Klasse
ausgeführt.Fehlerbeseitigung: Ist die Stufe für die Sicherheitsprüfung des
Klassenpfads (CHKPATH) *SECURE, kann der Befehl nicht beendet werden, wenn
ein Verzeichnis in dem Klassenpfad die allgemeine Schreibberechtigung hat.
Den Administrator bitten, die allgemeine Schreibberechtigung aus Verzeichnis
"." zu entfernen, oder CHKPATH ändern, und den Befehl erneut ausführen.Hat
Verzeichnis "." weiterhin die allgemeine Schreibberechtigung und hat CHKPATH
nicht den Wert *SECURE, kann geprüft werden, welche Klassen ausgeführt
werden, indem der Parameter OPTION auf *VERBOSE gesetzt und der Befehl
erneut ausgeführt wird.

Ich kann damit leider gar nicht's Anfang!

Kann mir jemand weiterhelfen?

KM
27-10-04, 14:05
Also was JavaMail in RPG-Programmen betrifft, da würde ich Dir eher ein anderes Tool empfehlen, das ich selbst ständig benutze und das ohne Probleme läuft. Du kannst es downloaden unter

http://www.ignite400.org/assets/pdf/javamail/javamailrpg.zip

Gruß,
KM

muadeep
28-10-04, 08:24
Wie immer zunächst mal Danke für eure schnelle Antworten!

zu "BenderD":
Wie das mit den 3 Posting's ging weiß ich leider selber nicht!
Hatte mich darin aber auch gleich entschuldigt! Sorry noch mal

zu "KM":
Habe mir die *.zip mal runtergeladen und auch gleich installiert (so wie in Anleitung beschrieben) (ist so ähnlich wie meins)

Nach dem Aufruf von "JavaMailTest" bekommen ich jetzt folgenden Programmabbruch
"Java-Ausnahme beim Aufrufen der Java-Methode empfangen (C G D F)"

Im JobLog steht folgends:
Allgemeine Schreibberechtigung für ".".
Java-Ausnahme beim Aufrufen der Java-Methode empfangen.
Funktionsprüfung. RNX0301 nicht überwacht durch JAVAMAIL bei Anweisung
0000000135, Instruktion X'0000'.
Java-Ausnahme beim Aufrufen der Java-Methode empfangen (C G D F).
Java-Ausnahme beim Aufrufen der Java-Methode empfangen (C G D F).

Was mache ich bzw. was ist jetzt falsch?
Wie kann ich die "allgemeine Schreibberechtigung" änder, bzw.
muß ich daß überhaupt, wenn ja, in was muß ich sie ändern?

KM
28-10-04, 08:43
Das scheint dann nicht an den Tools zu liegen, sondern eher an Deinen Berechtigungen. Hast Du den CLASSPATH mit STRMAIL korrekt gesetzt ? Das kannst Du mit WRKENVVAR prüfen. Wie sehen Deine Berechtigungen bzgl. IFS aus ? Kannst Du das mal mit einem Benutzer testen, der *ALLOBJ Rechte hat ?

Gruß,
KM

BenderD
28-10-04, 09:00
Hallo,

nochmal: das ist ein Fehler beim Start der JVM aus der RPG runtime; entweder habt ihr ig'rgendein Property File verdrechselt, die JVM in diesem Job bereits vorher gestartet, oder die JVM hat einen Schuss.
- werden in diesem Job vorher Java Aufrufe gemacht?
- was habt ihr für einen Release und PTF Stand, insbesondere JAVA GruppenPTF?

mfg

Dieter Bender

PS: Ein Work Around, der sich anbietet, ist die Public Berechtigungen an den class files auf ausführen zu reduzieren.



Wie immer zunächst mal Danke für eure schnelle Antworten!

zu "BenderD":
Wie das mit den 3 Posting's ging weiß ich leider selber nicht!
Hatte mich darin aber auch gleich entschuldigt! Sorry noch mal

zu "KM":
Habe mir die *.zip mal runtergeladen und auch gleich installiert (so wie in Anleitung beschrieben) (ist so ähnlich wie meins)

Nach dem Aufruf von "JavaMailTest" bekommen ich jetzt folgenden Programmabbruch
"Java-Ausnahme beim Aufrufen der Java-Methode empfangen (C G D F)"

Im JobLog steht folgends:
Allgemeine Schreibberechtigung für ".".
Java-Ausnahme beim Aufrufen der Java-Methode empfangen.
Funktionsprüfung. RNX0301 nicht überwacht durch JAVAMAIL bei Anweisung
0000000135, Instruktion X'0000'.
Java-Ausnahme beim Aufrufen der Java-Methode empfangen (C G D F).
Java-Ausnahme beim Aufrufen der Java-Methode empfangen (C G D F).

Was mache ich bzw. was ist jetzt falsch?
Wie kann ich die "allgemeine Schreibberechtigung" änder, bzw.
muß ich daß überhaupt, wenn ja, in was muß ich sie ändern?

muadeep
28-10-04, 09:01
Ich habe *ALLOBJ Rechte, daran dürfte es nicht liegen!

Ob ich den CLASSPATH richtig habe, weiß ich leider nicht
(bin in Java nicht fit)

also im STRMAIL steht folgendes:
PGM

CHGCURDIR DIR('/JAVAUTIL/JAVAMAIL/')

ADDENVVAR ENVVAR(CLASSPATH) +

VALUE('.:/JAVAUTIL/JAVAMAIL/ACTIVATION.JAR:+
/JAVAUTIL/JAVAMAIL/IMAP.JAR:/JAVAUTIL/JAVAM+
AIL/MAIL.JAR:/JAVAUTIL/JAVAMAIL/MAILAPI.JAR+
:/JAVAUTIL/JAVAMAIL/SMTP.JAR:/JAVAUTIL/JAVA+
MAIL/') REPLACE(*YES)

ENDPGM


Mit dem Befehl WRKENVVAR erhalte ich folgendes!

Mit Umgebungsvariablen arbeiten (*JOB)

Auswahl eingeben und Eingabetaste drücken.
1=Hinzufügen 2=Ändern 4=Entfernen 5=Details anzeigen 6=Drucken

Auswahl Name Wert

ICU_DATA '/QIBM/ProdData/OS400/icu/data'
LANG '/QSYS.LIB/DE_DE.LOCALE ' >


Die *.jar File's ich im folgendem Verzeichnis stehen:
/JavaUtil/JavaMail

muadeep
28-10-04, 12:16
Public-Berechtigung der *.class Files habe ich auf "use" gesetzt -> funkt leider auch nicht!

Wir haben V5.2 installiert

Wie kann ich den festellen welche Java-Gruppen PTF es sein sollte?


Hab da mal die Beschreibung, hoffe hier könnt vieleicht damit was anfangen!

Java E-mail Util. offers the ability for RPG pgm. to send e-mail by calling java method on AS/400.

The Utility consists of following programs:

RPGLE: JAVAMAIL - It calls java method to send e-mail.
CLP: STRMAIL - It changes the 'dir' to '/JAVAUTIL/JAVAMAIL/', and adds 'CLASSPATH' for
Java classes.
CLSMAIL - It changes the 'dir' back to '/' and remove the 'CLASSPATH'.

Java Classes:
JavaMail.class – It has a method can be called from RPG to send e-mail.
JavaMailwithAttachment.class – It has method can be called from RPG to send e-mail with
attachment file.


The code example for RPGLE program to call JAVAMAIL:
************************************************** ***************
* Program: CJAVAMAIL
* Date : 02/25/2002
************************************************** ***************
H DftActGrp(*NO) ActGrp(*CALLER)

D from S 50
D to S 50
D replyTo S 50
D subject S 50
D filename S 100
D text S 9999
D rtnCode S 3
D rtnText S 50

C Eval from = 'karlg@ri-net.com'
C Eval to = 'jamesz@ri-net.com'
C Eval replyTo = 'bobc@ri-net.com'
C Eval subject = 'JavaMail Attachment'
C Eval text = 'james test send file '
C Eval filename= '/home/test/dataacj2.pdf'

C call 'JAVAMAIL'
C parm from
C parm to
C parm replyTo
C parm subject
C parm text
C parm filename
C PARM rtnCode
C PARM rtnText

C Eval *InLr = *On


To send e-mail, in calling program do following:
1. CALL STRMAIL.
2. CALL JAVAMAIL(can call it as many times as the user need)
3. CALL CLSMAIL.

Files to support JavaMail utility:

The following files are on RAD in folder '/JavaUtil/JavaMail/' to support the JavaMail.

Java Jar files:
activation.jar
imap.jar
mail.jar
mailapi.jar
pop3.jar
smtp.jar

JavaMail property file:
JavaMail.properties

KM
28-10-04, 12:26
Welche Java-Version läuft denn bei Dir (Befehl "QSH" und dann "java -version"? Wir haben z.B. Version "1.3.1". Den Stand der JAVA-PTFs siehst Du mit "WRKPTFGRP SF99169". Wir haben da z.B. den Stand 17 (wobei der wohl auch schon wieder veraltet ist). Also bei uns läuft das Tool so.

Gruß,
KM

muadeep
28-10-04, 13:07
Die Java Version ist auch die 1.3.1

beim PTF (WRKPTFGRP SF99169) haben wir den Stand "15"!