web application etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
web application etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

12 Mart 2015 Perşembe

JSP ve servlet ile yazılmış bir web application'ı manuel olarak deploy etme

1. Öncelikle environment'ta path değişkeninde JDK_HOME\bin bulunduğunu kontrol etmek gerekiyor. Bunu tanımlamadıkça komut satırından javac ve jar toollarına erişemiyoruz.

2. Servleti compile etmek için :

javac -cp TOMCAT_HOME\lib\servlet-api.jar" -d CLASS_DIR SRC_DIR\MyServlet.java

TOMCAT_HOME:  c:\Program Files\Apache Software Foundation\Tomcat 7.0. (path boşluk içeriyorsa çift tırnak içine alınmalı)
CLASS_DIR = WebContent\WEB-INF\classes
SRC_DIR = src\net\codejava\servlet

3. War dosyası oluşturmak için :

jar cfv deploy\MyWebApp.war -C WebContent .

4. Tomcata war ı deploy etmek için :

copy deploy\MyWebApp.war TOMCAT_HOME\webapps

5. Tomcati çalıştırmak için :

TOMCAT_HOME\bin\Tomcat7.exe

6. Browserdan url girerek web applicationı çalıştırmak için :

http://localhost:8080/MyWebApp

Default olarak index.jsp çalışır.

war vs. ear

war : Web ARchive

ear:

Tomcat Web Application Manager

Apache Tomcat serverda http://localhost:8080/manager/html adresinden Web Applicaton Manager'a girebiliyoruz. Application Manager'da belli başlı bölümler bulunuyor. Bunları inceleyelim.

1. Message


OK yazıyorsa bir problem olmadığını gösterir.

Message: 
OK


2. Manager


Manager
List ApplicationsHTML Manager HelpManager HelpServer Status

List applications: web applicationları listele
HTML manager help : yardım için
Manager help : yardım için
Server status : server durumu öğren

Server status'e tıkladığımızda /status sayfası açılıyor.
Buradaki başlıkları inceleyelim.

OS : 
Physical memory: 32748.85 MB Available memory: 27929.93 MB Total page file: 37612.85 MB Free page file: 31523.42 MB Memory load: 14
Process kernel time: 2.75 s Process user time: 12.578 s

JVM:

Free memory: 449.33 MB Total memory: 491.00 MB Max memory: 7278.50 MB
Memory PoolTypeInitialTotalMaximumUsed
PS Eden SpaceHeap memory128.50 MB128.50 MB2687.00 MB9.36 MB (0%)
PS Old GenHeap memory341.50 MB341.50 MB5459.00 MB11.31 MB (0%)
PS Survivor SpaceHeap memory21.00 MB21.00 MB21.00 MB20.97 MB (99%)
Code CacheNon-heap memory2.43 MB12.12 MB240.00 MB11.98 MB (4%)
Compressed Class SpaceNon-heap memory0.00 MB2.37 MB1024.00 MB2.13 MB (0%)
MetaspaceNon-heap memory0.00 MB20.12 MB-0.00 MB19.34 MB
...

"http-apr-8080"

Max threads: 200 Current thread count: 10 Current thread busy: 1 Keeped alive sockets count: 2
Max processing time: 112 ms Processing time: 3.217 s Request count: 449 Error count: 184 Bytes received: 0.00 MB Bytes sent: 0.55 MB
StageTimeB SentB RecvClient (Forwarded)Client (Actual)VHostRequest
S1 ms0 KB0 KB127.0.0.1127.0.0.1localhostGET /manager/status HTTP/1.1
R??????
P: Parse and prepare request S: Service F: Finishing R: Ready K: Keepalive

...

3. Applications


Applications
PathVersionDisplay NameRunningSessionsCommands
/None specifiedWelcome to Tomcattrue0 Start 
  with idle ≥  minutes 
/MyProjectNone specifiedtrue1 Start 
  with idle ≥  minutes 
/docsNone specifiedTomcat Documentationtrue0 Start 
  with idle ≥  minutes 
/examplesNone specifiedServlet and JSP Examplestrue0 Start 
  with idle ≥  minutes 
/host-managerNone specifiedTomcat Host Manager Applicationtrue0 Start 
  with idle ≥  minutes 
/managerNone specifiedTomcat Manager Applicationtrue1 Start   Stop   Reload   Undeploy 
  with idle ≥  minutes 

Burada serverda bulunan applicationların listesini görebiliyoruz.

path: url path
version: varsa versiyon bilgisi
display name: varsa görünen ismi
running: şu anda çalışıyor mu (true = çalışıyor)
sessions: şu anda kaç session var
commands: çeşitli komutlar.
 - Start: çalıştır
 - Stop: durdur
 - Reload: yeniden yükle
 - Undeploy: kaldır
 - Expire sessions with idle <= x minutes: Session x dakikayı geçtiği anda expire etsin.

Application listesine bakalım:

/ : root taki default index.jsp sayfası bulunuyor.
/MyProject : MyProject adlı örnek bir web application bulunuyor.
/docs : tomcat dokümanları mevcut
/examples : tomcat örnek dosyaları bulunuyor
/host-manager :
/manager : tomcat web application manager, yani şu an incelediğimiz uygulama.

4. Deploy


Deploy
Deploy directory or WAR file located on server
Context Path (required):
XML Configuration file URL:
WAR or Directory URL:
WAR file to deploy
Select WAR file to upload

Deploy directory  or war file located on server:

Burada serverda bulunan bir war dosyası ya da uygulama klasörünün adresini belirterek deploy edebiliyoruz.

Context path kısmına url yi yazıyoruz.
xml configuration file url kısmına xml konfigürasyon dosyasının adresini veriyoruz.
war or directory url kısmına war dosyasını ya da proje klasörünün adresini veriyoruz.
Deploy'a tıkladığımızda uygulama deploy ediliyor, yani servera yüklenmiş oluyor.

war file to deploy:

Burada da servera bir war dosyası yükleyerek web application'ı direk deploy edebiliyoruz.

5.Diagnostics



Diagnostics
Check to see if a web application has caused a memory leak on stop, reload or undeploy
This diagnostic check will trigger a full garbage collection. Use it with extreme caution on production systems.

Burada web application durdurulduğunda, yeniden yüklendiğinde ya da undeploy edildiğinde memory leak oluşturup oluşturmadığını kontrol edebiliyoruz.
Find leaks butonuna tıkladığımızda garbage collection tetikleniyor.
Bir de uyarı var: eğer production serverda iseniz ne yaptığınıza çok dikkat edin deniyor.


6. Server information



Server Information
Tomcat VersionJVM VersionJVM VendorOS NameOS VersionOS ArchitectureHostnameIP Address
Apache Tomcat/7.0.591.8.0_31-b13Oracle CorporationWindows 8.16.3amd64server1192.168.56.1

Tomcat Version: Tomcat'in versiyon bilgisi.
JVM version: JVM versiyonu.
JVM vendor: JVM sahibi firma bilgisi.
OS name: İşletim sistemi
OS version: İşletim sistemi versiyonu
OS architecture: İşletim sistemi mimarisi (32 ya da 64 bit)
Hostname: makinenin ağdaki host adı
IP address: makinenin ağdaki ip adresi

Java EE Web Application file structure / dosya yapısı

MyProject adında Netbeans 8 ve Apache Tomcat 7 ile hazırlanmış, jsp ve servlet kullanılan bir web application projesini ele alalım.
Proje dosyalarının organizasyonunu inceleyelim.

Proje root klasörü olan MyProject klasörü içinde şunlar bulunuyor:

1.build klasörü

generated\src\org\apache\jsp\ klasörüne bakalım.

index_jsp.class.smap : jsp ile servlete dönüştürülmüş hali olan java dosyasını mapliyor.
index_jsp.java: index.jsp dosyasının servlet'e dönüştürülmüş halini görebiliyoruz.

generated\classes\org\apache\jsp\ klasörüne bakalım.

index_jsp.class : burada index.jsp dosyasının servlet hali olan java classının compile edilmiş, yani bytecode haline dönüştürülmüş halini görebiliyoruz.

cafe babe ifadesi ile başlayan bytecode'dan pek birşey anlaşılmıyor elbette. Ama neyin ne olduğunu anlamak açısından bu şekilde tüm dosyaları ve klasörleri incelemek faydalı olacaktır.

2.dist klasörü

MyProject.war : burada projenin build edilmesiyle oluşan war paketini görüyoruz.
Bu war dosyasını kopyalarak istediğimiz servera projeyi deploy edebiliriz.

3.nbproject klasörü

Bu klasörde Netbeans'in proje konfigürasyon dosyaları bulunuyor.

private klasörü: private.xml ve private.properties dosyaları bulunuyor.
Bu klasördeki diğer konfigürsayon dosyaları:
ant-deploy.xml
build-impl
genfiles.properties
project.properties
project.xml

4.src klasörü

conf klasörü: burada manifest.mf dosyası bulunuyor. Dosyada sadece versiyon bilgisi mevcut:
"Manifest-Version: 1.0" şeklinde.

java klasörü: java kaynak kodları işte burada yer alıyor.
com\example\servlets klasörü içinde IndexServlet.java vb. projede kullanılan bütün servlet dosyaları burada.

Netbeans'te Source Packages adı altında gösteriliyor.

5.web klasörü 

Netbeans'de Web Pages adı altında gösteriliyor.
Bu klasörde projede kullanılan bütün jsp ve html dosyaları yer alıyor.

WEB-INF klasörü: Burada web.xml dosyası bulunuyor.
Buradaki dosyalara client erişemez. Sadece uygulama içinden ulaşılabilir.
Burada bulunan bir dosyayı başka yerde kullanmak istiyorsak @include ederiz.
Burası client'a görünmez olduğundan client web.xml'i değiştiremez.

META-INF klasörü: Burada context.xml dosyası bulunuyor.
Dosya içeriği şöyle:
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/MyProject"/>

6.build dosyası 

Burada projenin compile ya da build etmeden önce veya sonra yapılabilecek işlemleri nasıl tanımlayacağımızdan bahsediliyor.

Default olarak içeriği şöyle:
<?xml version="1.0" encoding="UTF-8"?>
<project name="MyProject" default="default" basedir=".">
    <description>Builds, tests, and runs the project MyProject.</description>
    <import file="nbproject/build-impl.xml"/>
</project>