A példaprogramok sorait az azonosítás céljából
megszámoztuk: a sorszámok nyilván nem tartoznak a
programokhoz, és a kedvezőbb tördelhetőség és a
helytakarékosság kedvéért helyenként eltértünk az egyébként
használatos kódolási, zárójelezési szokásainktól. A
kivételek kezelésére egy kényelmesen programozható, de nem
minden esetben követendő módszert alkalmaztunk: minden szóba
jöhető metódust úgy deklaráltunk, mint amelyik
Exception
típusú kivételt dobhat, a
main
metódus pedig elkapja és kiíratja a
program végrehajtása során esetleg keletkezett kivételt.
Egy nagyobb programkörnyezetben nyilván nem a névtelen
csomagba tennénk az osztályainkat, következetesebb
névadással élnénk s így tovább. Mindazonáltal a
példaprogramok nem öncélúak, hanem használhatóak is. Éppen
a használhatóságot szolgálják az opciómegadási lehetőségek,
amelyek a kód mennyiségét egy kicsit megnövelik ugyan, de
amelyek a gyakorlatban hasznosnak bizonyultak.
A példaprogramokat vagy az 1.2.2-es fejlesztőkészlet és az
1.2.1-es J2EE, vagy az Activation Framework-kel
(activation.jar
) és a SUN-féle ingyenes
JavaMail-implementációval (mail.jar
) kibővített
1.1.8-as JDK felhasználásával fejlesztettük illetve
használjuk.
A mailer program egy Java alkalmazás, amelyik a megadott fájlokat egy levél mellékleteiként adott címre vagy címekre elküldi. Az első argumentumában várja egy (vagy vesszővel elválasztva több) címzett megadását, a többi argumentumában az elküldendő állományok nevét.
Ha egy címzettben nem találja a @
karaktert,
akkor egy a programba bedrótozott
alapértelmezett tartomány
(9. sor, ADDRESS_BASE
változó) nevével egészíti ki azt.
Egy szintén bedrótozott
hálózati címen
(10. sor, MAIL_HOST
változó) levő
smtp kiszolgálón keresztül küldi el a levelet.
(Az smtp kiszolgálót megadhatjuk a mail.host
parancssori szimbólummal.)
Tegyük fel, hogy egy elektronikus levél tartalmát
a hálózati formának megfelelően egy állományba mentettük.
Ekkor ezzel a programmal (MessageDumper)
az állományból beolvastatva felderíthetjük a szerkezetét,
és hozzáférhetünk az egyes részeihez.
A program az argumentumában megadott nevű fájlt
(vagy ha nincsen megadva argumentum,
akkor a szabványos adatbeviteli csatornát, System.in
)
olvassa és elektronikus levélként értelmezi.
A program viselkedését az alábbi opciókkal (kapcsolókkal) tudjuk befolyásolni:
Opció | Típus | Hatás |
---|---|---|
header | boolean | A fejlécek kiíratása |
flag | boolean | A jelzőmezők kiíratása |
rename | boolean | A csatolt állományoknak a levélben szereplő néven való elmentése |
base | String | A megírandó állományok nevének előtagja |
A boolean
típusmegjelölés azt jelenti a
táblázatban, hogy csak az számít, hogy az illető változó
definiált-e, míg a String
típusnál az érték
is érdekes.
Például a futtató Java virtuális gép indításakor
a -Dheader=1
opciót megadva a fejléceket kiíratjuk.
Az ImapList program egy adott IMAP-kiszolgálóra érkezett üzeneteinket listázza ki. Parancssori argumentumként meg kell adnunk a kiszolgáló hálózati címét, a felhasználó nevét és jelszavát.
Ha Exchange szervert használunk, és az egy NT-tartomány
alapján kezeli a bejelentkezést, akkor a felhasználói
azonosítót e-mail-címként kell megadnunk, vagy a
felhasználónév előtt egy \
jellel elválasztva
meg kell adnunk az NT-tartomány nevét is.
Opcionálisan megadhatunk még egy sorszámot is: ilyenkor nem adja ki a program a teljes listát, hanem a megadott sorszámú üzenetet részekre bontva kiírja.
A program kimenete egy ilyesforma lista:
0000 2000/03/17 07:02 surveymaster@dp-websvr.eng.sun.com Survey for Forte for Java, Community Edition 0001 2000/03/31 02:41 redhat-install-list-request@redhat.com Re: agpgart 0002 2000/04/05 07:02 surveymaster@dp-websvr.eng.sun.com WIN A FABULOUS JACKET, Return Forte for Java Survey 0003 2000/09/12 12:00 Oracle OpenWorldLast Chance to Register Online! 0004 2000/10/04 02:25 Mail Delivery Subsystem Warning: could not send message for past 4 hours 0005 2000/11/02 05:31 VeriSign Digital ID Center Trial Class 1 VeriSign Digital ID Pickup Instructions 0006 2000/12/21 01:44 Sun Microsystems Sun User ID Update 0007 2001/02/20 11:12 MAILER-DAEMON@matavnet.hu failure notice 0008 2001/04/25 10:13 NULLFROM null 0009 2001/05/04 02:54 Sebastian Krahmer [suse-security-announce] SuSE Security Ann.: sgmltool 0010 2001/05/04 04:54 personal-cert-system@thawte.com Thawte Mail Ping
Az előző példát kibővíthetjük avval, hogy ne az összes üzenetet listázza ki, hanem csak a parancssori argumentumokkal megadható keresési feltételeknek megfelelőeket (ImapList1 program).
Ha megadjuk a SUBJECT0, SUBJECT1
stb.
környezeti változókat
, akkor azt a keresési
feltételt adjuk meg, hogy az üzenet tárgya (subject-je)
tartalmazza a megadott szöveget. Hasonlóan a FROM0,
FROM1
stb. értékek az üzenet küldőjére vontakozó
megszorítást jelentenek. A megadott keresési feltételek
vagylagosan értendőek.
Ha a programot például a
-DSUBJECT0=sun -DFROM0=Thawte -DSUBJECT1=forte
kapcsolók megadásával futtatjuk, akkor csak azoknak a leveleknek a
klistáját kapjuk, amelyeknél -a kis- és a nagybetűk közötti
különbségtől eltekintve- a tárgy tartalmazza a sun vagy a
forte szót, vagy ahol a küldő tartalmazza a Thawte
szövegrészt:
0000 2000/03/17 07:02 surveymaster@dp-websvr.eng.sun.com Survey for Forte for Java, Community Edition 0001 2000/04/05 07:02 surveymaster@dp-websvr.eng.sun.com WIN A FABULOUS JACKET, Return Forte for Java Survey 0002 2000/12/21 01:44 Sun MicrosystemsSun User ID Update 0003 2001/05/04 04:54 personal-cert-system@thawte.com Thawte Mail Ping
Ez a példaprogram (LevelFigyelo) egy IMAP-kiszolgálóra érkező üzenetek folyamatos figyelésére szolgál. Grafikus felhasználói felületű lévén a program bonyolultabb, mint az előzőek. Van egy Listazo nevű segédosztály, amelyik egy ablakot (java.awt.Frame) jelenít meg egy bővíthető listával (java.awt.List): ebben fogjuk a folyamatosan érkező üzenetekre utaló információt megjeleníteni.