Amennyiben 2 tomcat-et szeretnénk használni (egy éleset mely mindig fut, és egy fejlesztőit a Netbeans részére)
akkor egy lehetséges megoldás a következő: az egyik könyvtár nevéhez adjunk egy "dev" végződést,
ez lesz a fejlesztői pl:
Meg kell oldani hogy a 2 tomcat egyszerre futásakor a portjaik ne ütközzenek.
Ehhez szerkeszteni kell a következő fájlt (mindkét tomcat esetén):
ÉLES-tomcat esetén beállítandó portok:
Http: 8070
Ajp: 8009
Shutdown: 8005
DEV-tomcat esetén beállítandó portok:
Http: 8069
Ajp: 8008
Shutdown: 8004
A DEV-tomcat esetén a környezet paraméter legyen "dev", az éles tomcat esetén legyen "real".
JNDI adatbázis kapcsolat
Ezzel a beállítással a Tomcat alatt futó Java webalkalmazások JNDI-n keresztül tudnak egy
adatbázissal kapcsolatot létesíteni, és hozzá a pool-t a Tomcat biztosítja. Ha elindítjuk a Tomcat-et,
érdemes ezt elolvasni:
Legelőszőr rakjuk be az adatbázis drivert a következő könyvtárba:
és indítsuk újra a tomcat-et.
A JNDI beállítás elhelyezésére két lehetőség van:
Az egyiknél egy közös context.xml fájlban definiáljuk a JNDI kapcsolatot,
így minden webalkalmazás használni tudja.
A másiknál az alkalmazás saját context.xml fájlja definiálja a JNDI kapcsolatot,
így csak ennél az alkalmazásnál használható.
Ha a közös context.xml módszert választjuk akkor a következő fájlt kell szerkeszteni:
ahol a <Context></Context> közé kell illeszteni például a következőt,
egy PostgreSQL adatbázis eléréséhez:
Ebben a példában a saját gépen futó 5432-es porton elérhető dev adatbázishoz kapcsolódunk
teszt névvel, pp jelszóval.
A program java:/comp/env/teszt@localhost/dev JNDI névvel fogja tudni ezt a kapcsolatot elérni.
Maximum 8 adatbázis kapcsolat lehetséges, ha nem használjuk őket(idle) akkor maximum 2 várakozhat a poolban.
Ha nincs szabad connection akkor maximum 10000 ms-ig várakozik hogy felszabaduljon connnection,
utána exception keletkezik.
Egy példa Oracle adatbázis elérésére:
A fenti beállításokat egy Java webalkalmazás a következő módon érheti el:
Használat után a connection.close() meghívásával az adatbázis kapcsolat visszakerül a Tomcat pool-ba.
környezet paraméter
Ahhoz hogy a java webalkalmazásból le tudjuk kérdezni milyen tomcat-környezetben fut,
be kell állítani a tomcat-ben egy JVM-nek szóló paramétert, mely legyen "kornyezet",
tartalma "dev", mely jelzi hogy ez a tomcat fejlesztői környezet, nem pedig éles.
Ehhez a következő fájlnak:
egy ilyen bejegyzést kell tartalmaznia:
Így a java webalkalmazás kiolvashatja a környezet paramétert:
Windows környezetben a setenv.bat fájlba kell a következőt beírni: set JAVA_OPTS="-Dkornyezet=dev"
lassú elindulás
Főleg spring boot embedded tomcat esetén fordul elő az a probléma hogy egy SecureRandom generálás
nagyon lassan történik.
Megoldás itt:
Entropy Source
A lényeg hogy a JVM-et egy speciális paraméterrel kell indítani:
memória beállítás
Olyan webalkalmazás többszöri telepítésénél, melynél sok library van használva (pl. hibernate) előfordul
hogy elfogy a memória.
Ilyenkor a tomcat végtelen ideig várakozik, de lehet hogy az admin felületet behívva hibaüzenetet kapunk:
java.lang.OutOfMemoryError: PermGen space
A megoldás hogy a tomcat-nek több memóriát kell biztosítani.
Amikor belépünk az admin felületen a "Server Status" oldalra, a JVM felirat alatt látható a memóriahasználat,
mely "free", "total", "max" értékeket mutat. A "total" érték a JVM-nek adott -Xms,
a "max" a JVM -Xmx kapcsolójával állítható.
Egy lehetséges memória beállítás unix alatt a {tomcat_home}/bin/setenv.sh fájlban,
ahol a lényeg hogy a PermSize a maximális memóriáig (Xmx) legyen engedve !
Egy lehetséges memória beállítás windows alatt a {tomcat_home}/bin/setenv.bat fájlban,
ahol a lényeg hogy a PermSize a maximális memóriáig (Xmx) legyen engedve !
Figyelem: windows alatt máshová tesszük az idézőjelet !
netbeans esetén
A tomcat akkor indítható a netbeans-ből ha a bejelentkezett unix user-nek teljes joga van a
tomcat gyökér és alkönyvtáraira. Ezt így lehet megvalósítani pl. "xesj" user esetén,
a "/opt/apache-tomcat-7.0.27dev" könyvtárba telepített tomcat-re:
service készítés
Lehetséges hogy 2 tomcat példány esetén egyiknek mindig futnia kell hiszen ezen vannak "éles" webalkalmazások.
Ehhez a tomcat-nek service-ként kell futnia. Készítsük el a következő fájlt tomcat-service néven a következő
tartalommal:
A fájlt a /etc/init.d könyvtárba rakjuk a következő jogosultsággal, és tulajdonosa root legyen:
Ezután futtatni kell a következő parancsot a /etc/init.d könyvtárban:
Kész vagyunk, a következő rendszerindítás után a tomcat rögtön fut.
Hogy a saját könyvtárunkból is elérjük a tomcat-service fájl, érdemes egy hard linket készíteni rá.
Azért legyen hard link, mert akkor a mentésben benne lesz a fájl a tartalmával együtt.
Ha a service-t a későbbiekben el akarjuk távolítani akkor a következő paranccsal lehetséges:
A zip-fájl csomagoljuk ki a "/opt" könyvtárba.
Kicsomagolása után itt találhatók a legfontosabb információk:
Futtatási jogot kell adni a következő állományokra:
Készítsük el a {tomcat_home}/bin/setenv.sh fájlt, melyben a legfontosabb a JRE_HOME beállítása, például:
Windows alatt a setenv.bat fájlt kell elkészíteni, például:
Készítsük el a "tomcat-start" scriptet, mellyel a tomcat indítható, például:
Készítsük el a "tomcat-stop" scriptet, mellyel a tomcat leállítható, például:
Be kell állítani a http-get kérések esetén használandó UTF-8 karakterkódolást.
Ehhez a következő fájlt kell szerkeszteni:
A következő sorban, a sor végére be kell írni az URIEncoding értéket:
Enélkül a http-get kéréseket a Tomcat ISO-LATIN-1 kódolással fogja értelmezni, így az ékezetes karakterek rosszul
jelennének meg. Ezen programmal sem lehet változtatni a request.setCharacterEncoding(...) módon.
Az itt leírt fix beállítás módszer azért nem tökéletes, mert minden webalkalmazásra vonatkozik.
user-ek felvétele
Az adminisztrációs felület használatához felhasználókat kell felvenni a következő fájlban:
Egy tomcat-users.xml fájl tartalma például:
A role-nevek előre meghatározottak (az adminisztrációs felület kiírja sikertelen belépés esetén).
A példában az "admin" usert, minden role-hoz hozzárendeltük.
Így tehát az "admin" user "titok" jelszóval mindenhez hozzáfér az adminisztrációs felületen.
webalkalmazás paraméter
Egy Java webalkalmazás felvehet paramétert a Tomcat-től, így nem kell változtatni egy war-fájl -on, hiszen
nem a saját web.xml-ből vesz fel a program paramétert.
A program fejlesztésekor a hozzá tartozó context.xml-be (Web Pages/META-INF/context.xml) kell felvenni
a kívánt paramétereket például:
Amikor a war-fájlt telepítjük a Tomcat alá, ez a context.xml ide települ:
Ebben a fájlban átírhatjuk a paramétereket a kívánt értékre.
Ezzel a program kóddal lehet beolvasni a környezeti paramétereket: