Včera som sa rozhodol napísať si svoj prvý servrlet a prvú otázku ktorú som si položil bola ktorý webový aplikačný server si mám zvoliť Apache Tomcat alebo GlassFish.
Keďže môj otec už dlhšiu dobu používa GlassFish tak som sa preň rozhodol aj ja. Netušil som však, že ma čakajú problémy ktoré ma donútia zmeniť moju voľbu na Tomcat.
Teraz ukážem 2 spôsoby ako Apache Tomcat nainštalovať na systéme Fedora, RHEL alebo CentOS s tým, že by to malo fungovať aj pod inými distribúciami.
1. Apache Tomcat nezávislý od Eclipse
Spustíme si terminál ako používateľ root.A - Inštalácia JDK
Poslednú verziu JDK je možné stiahnuť tu: http://www.oracle.com/technetwork/java/javase/downloads/index.html Ako prvé vytvoríme nový priečinok /usr/java a presunieme sa doň.root@linux ~ $ mkdir /usr/java root@linux ~ $ cd /usr/java root@linux java $Do novo vytvoreného priečinka stiahneme JDK a rozbalíme.
root@linux java $ tar -xzf jdk-7u51-linux-x64.tar.gzToto nám vytvorilo priečinok /usr/java/jdk1.7.0_51 ktorý bude našim JAVA_HOME. Teraz môžeme nastaviť JAVA_HOME pre všetkých používateľov jednoduchým pridaním serie príkazov do súboru /etc/profile.
JAVA_HOME=/usr/java/jdk1.7.0_51 export JAVA_HOME PATH=$JAVA_HOME/bin:$PATH export PATHPo tomto pridaní by sme sa mali odhlásiť a znova prihlásiť a skontrolovať či JAVA_HOME pracuje správne.
root@linux ~ $ echo $JAVA_HOME /usr/java/jdk1.7.0_51
B - Stiahnutie a rozbalenie Tomcatu
Tomcat budeme inštalovať do priečinku /usr/share a tak sa doň presunieme a stiahneme si Tomcat (v mojom prípade apache-tomcat-7.0.52.tar.gz).root@linux ~ $ cd /usr/share root@linux share $ wget http://tux.rainside.sk/apache/tomcat/tomcat-7/v7.0.52/bin/apache-tomcat-7.0.52.tar.gzPre overenie správnosti stiahnutia môžeme použiť md5sum ktorý najdeme ja na stránkach Tomcatu.
root@linux share $ md5sum apache-tomcat-7.0.52.tar.gz 3d780939cc4fce1661e7411bbd640c09 apache-tomcat-7.0.52.tar.gzTeraz archív rozbalíme a mal by nám vzniknúť priečinok /usr/share/apache-tomcat-7.0.52.
root@linux share $ tar -xzf apache-tomcat-7.0.52.tar.gz root@linux share $ ls -l | grep apache drwxr-xr-x 9 root root 4096 feb 23 12:24 apache-tomcat-7.0.52
C - Nastavenie Tomcatu aby bežal ako servis
Teraz vytvoríme skript tak aby bolo možné Tomcat spúšťať/vypínať/reštartovať ako servis a aby sa nám spustil pri boote. Presunieme sa do priečinku /etc/init.d a vytvoríme skript ktorý sa bude volať 'tomcat'.root@linux ~ $ cd /etc/init.d root@linux init.d $ vim tomcatTu je telo nášho skriptu:
#!/bin/bash # description: Tomcat Start Stop Restart # processname: tomcat # chkconfig: 234 20 80 JAVA_HOME=/usr/java/jdk1.7.0_51 export JAVA_HOME PATH=$JAVA_HOME/bin:$PATH export PATH CATALINA_HOME=/usr/share/apache-tomcat-7.0.52 case $1 in start) sh $CATALINA_HOME/bin/startup.sh ;; stop) sh $CATALINA_HOME/bin/shutdown.sh ;; restart) sh $CATALINA_HOME/bin/shutdown.sh sh $CATALINA_HOME/bin/startup.sh ;; esac exit 0Je potrebné nastaviť súboru správne práva.
root@linux init.d $ chmod 755 tomcatTeraz použijeme chkconfig utilitu na nastavenie automatického spúšťania Tomcatu pri boote.
root@linux init.d $ chkconfig --add tomcat root@linux init.d $ chkconfig --level 234 tomcat on root@linux init.d $ chkconfig --list tomcat tomcat 0:off 1:off 2:on 3:on 4:on 5:off 6:offEšte by sme mali skontrolovať Catalina.out log či sa nevyskytli nejaké chyby.
root@linux ~ $ more /usr/share/apache-tomcat-7.0.29/logs/catalina.out
D - Púšťanie Tomcatu ako neprivilegovaný užívateľ (odporúčam)
Na to či púšťať Tomcat ako neprivilegovaný užívateľ nech si odpovie každý sám ale podľa mňa je to lepšie a tu je sekvencia príkazov ako to zabezpečiť. Ako prvé si musíme vytvoriť užívateľskú skupinu.root@linux ~ $ groupadd tomcatVytvoríme neprivilegovaného používateľa a určíme mu domovský adresár v koreni Tomcatu.
root@linux ~ $ useradd -g tomcat -d /usr/share/apache-tomcat-7.0.52/tomcat tomcatKoreňový adresár Tomcatu sme vytvárali ako root tak je treba zmeniť skupinu aj vlastníka tohto adresára.
root@linux ~ $ chown -Rf tomcat.tomcat /usr/share/apache-tomcat-7.0.52/A nakoniec takto upravíme spúšťací skript ktorý sme pred nedávnom vytvorili.
#!/bin/bash # description: Tomcat Start Stop Restart # processname: tomcat # chkconfig: 234 20 80 JAVA_HOME=/usr/java/jdk1.7.0_51 export JAVA_HOME PATH=$JAVA_HOME/bin:$PATH export PATH CATALINA_HOME=/usr/share/apache-tomcat-7.0.52/bin case $1 in start) /bin/su tomcat $CATALINA_HOME/startup.sh ;; stop) /bin/su tomcat $CATALINA_HOME/shutdown.sh ;; restart) /bin/su tomcat $CATALINA_HOME/shutdown.sh /bin/su tomcat $CATALINA_HOME/startup.sh ;; esac exit 0
2. Apache Tomcat s použitím Eclipse
S použitím Eclipse je tento úkon oveľa jednoduchší a má len pár jednoduchých krokov.- Stiahneme si Eclipse s oficiálnej stránky http://eclipse.org/downloads/ alebo nainštalujeme pomocou inštalátora. Myslím, že tu je to pekne popísané.
- Ak máme Eclipse budeme potrebovať plugin ktorý sa volá Web Tools Platform. Tento plugin sa dá veľmi jednoducho nainštalovať pomocou Eclipse. Otvoríme Eclipse > Help > Install New Software... a do poľa kde si volíme zdroje softvéru zadáme adresu http://download.eclipse.org/webtools/updates/ asi nejak takto alebo použijeme YUM.
root@linux ~ $ yum -y install eclipse-wtp-*
- Po reštartovaní Eclipse necháme vytvoriť webový projekt. Či zvolíme statický alebo dynamický by malo byť jedno. Pred akýmkoľvek nastavovaním projektu musíme zvoliť resp. vytvoriť aplikačný server. Klik New Runtime... a zvolíme z ponuky serverov pričom nezabudnite označiť voľbu Create a new local server po kliknutí na tlačítko Next > už len zvolíme kam má byť server nainštalovaný a klikneme na Download and Install..., Eclipse bude chvíľku pracovať a to je všetko. Už len vyplníme údaje o novom projekte a môžeme pracovať.
Vzorový kód servrletu - Hello World!
A aby ste nemuseli študovať nejaké náročné príklady ponúkam jeden klasický Hello World!.import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class HelloWorld extends HttpServlet { private static final long serialVersionUID = 1L; @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); out.println("HelloWorld!"); } @Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
Komentáre
Zverejnenie komentára