Kendime Notlar — Weblogic Server Kurulumu, Jakarta EE Servlet Registering ve Deployment Yöntemleri 101

Emrullah YILDIRIM
4 min readMay 31, 2020

--

Bu yazimizda, bir Weblogic server kurarak üzerinde J2EE(artik Jakarta EE) uygulama koşturacağız. Jakarta EE uygulamasinda xml ve anatasyon ile servletlerimizi konfigüre edip akabinde bir WAR dosyasini Weblogic Console üzerinde deployment yapacağız.

1. Weblogic Server

Uygulama Sunucusu, bazen bir web sunucusuyla karıştırılan bir terimdir. Bir web sunucusu çoğunlukla HTTP protokollerini işlerken, uygulama sunucusu HTTP ile sınırlı olmamakla birlikte birkaç farklı protokolle ilgilenir.

Weblogic üstünde Java ile yazılmış uygulamalar koşturulur. Bu yüzden uygulama sunucusu(application server) deriz.

1.1. Kurulum

Burada resimler ile tek tek aşamaları göstermeme gerek yok bence, zaten Oracle resmi dökümanlarında ve online ortamlarda bu kurumlar gayet basit bir şekilde anlatılmış ve çoğunlukla next next. Hızlıca sizi şöyle indirmeye alalım.

Kurumlum tamamladıktan sonraki önemli nokta Domain oluşturmak. Middleware\oracle_common\common\bin pathinin altındaki confing.sh (linux) yada config.exe(windows) çalıştırıyoruz. Burada Domain’i kururken ki adımları dikkatli bir şekilde incelemenizi tavsiye ederim çünkü daha sonra deployment için lazım olacak console bilgilerini ve uygulamanın portu gibi ayarları burada belirliyoruz. Ayrıntılı anlatımı için buraya göz atabilirsiniz.

2. J2EE Projesini Oluşturalım

Ben çok hızlı bir şekilde, aşağıdaki maven komutunu kullanarak J2EE standart projesini oluşturdum.

mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-j2ee-simple -DarchetypeVersion=1.4

Başarılı bir şekilde projemizi oluşturduğumuzda aşağıdaki gibi modüler bir proje düzenini göreceğiz. Varsayılan olarak boş bir index.jsp ve WEB-INF/web.xml bizi bekliyor olacak.

2.1. Servlet Oluşturmak

public class GreetingServlet extends HttpServlet {

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().println("<h1>Hello, world!</h1>");
}
}

Browser yada postman üzerinden http get requesti ile ulaşacağımız default servletimiz. Bağımlılığımız için sub modülün pom.xml eklenecek olan blok.

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>

Servletlerin mantığını ve yapısını daha detaylı şekilde anlamak için buraya bakabilirsiniz.

2.2. Servlet Registering Yöntemleri

Burada oluşturduğumuz servleti tanımlamamız için iki yöntem var. Biri tahmin ettiğiniz gibi web.xml üzerinden diğeri ise anatasyon ile.

2.2.1. web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<servlet>
<servlet-name>Greeting</servlet-name>
<servlet-class>GreetingServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Greeting</servlet-name>
<url-pattern>/Greet</url-pattern>
</servlet-mapping>

</web-app>

Gördüğünüz gibi, bu işlem iki adımdan oluşur: (1) servletin servlet taglarına ve servletin içinde bulunduğu sınıfın kaynak kodunun yolunun da belirtilmesi gerekiyor (2) Servletin tektikleneceği URL yolunuda belirtiyoruz.

Jakarta EE uygulamalarında web.xml dosyası genellikle WebContent/WEB-INF’de bulunur.

2.2.2. Anatasyon

XML konfigürasyonuna göre daha temiz, bir yol ile servletimizi geçerli kıldık.

@WebServlet(
name = "GreetingServlet",
description = "Example Servlet Using Annotations",
urlPatterns = {"/GreetingServlet"}
)
public class GreetingServlet extends HttpServlet {

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().println("<h1>Hello, world!</h1>");
}
}

Anatasyon için gerekli olan bağımlılığı Intellij otomatik olarak sub modülümüzün pom dosyasında bizim için import ediyor.

<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>9.0.31</version>
</dependency>

3. Deploy to Domain

Weblogic serverımızı kurduk ve domainimizi aktif hale getirdik. Son olarak oluşturduğumuz projenin WAR dosyasını alip weblogic üzerinde koşturacağız. Burada tüm projeyi çok temel seviyede bir servlet ile bıraktığımızdan dolayı sadece servlet modülünü artifact olarak tanımlarsak daha anlamlı olacaktır.

Öncelikle aşağıdaki şekilde Intellij üzerinde WebLogic Server’ımızı Run/Debug Configuration sekmesinden ayarlıyoruz. Application server kısmından Middleware pathimizi ve Domainimizi oluştururken belirlediğimiz user/password ile ayarları tamamlıyoruz.

Son olarak application server üzerinde koşacak olan WAR dosyasını belirtmediğimiz için artifact bulunamadı uyarısı veriyor. Fix’e basarak servlet:war exploded seçeneği ile bu işlemide tamamlamış oluyoruz. Artık uygulamamız aplication server üzerinde koşmaya hazır.

4. WLS ile Application Deployment & Shared Library

http://localhost:8080/console adresine gittiğimizde kurduğunuz WLS sürümüne göre sizi aşağıdakine benzer bir ekran karşılayacaktır.

Kurumsal uygulamaların dağıtım senaryosunda, bazı kütüphanelerin birden çok uygulama tarafından kullanıldığı birçok durum vardır. WebLogic sunucusunda dağıtılan her uygulama ile bu tür ortak kütüphaneleri dahil etmek gerçekten kötü bir tasarım olacaktır. Sunucudaki kaynakların tüketmekle kalmaz ve aynı zamanda kütüphaneler çok büyük olduğunda alan ve dağıtım süresi harcar.

WebLogic sunucusu, bir WebLogic etki alanındaki uygulamalar arasında EAR, JAR, EJB ve WAR’ların paylaşılabileceği shared library konseptini sunar.

WLS’e login olduktan sonra ekranın sol tarafındaki menüden Deployments tabına geçelim. Bu alanda application server üzerinde koşan tüm uygulamaları görebileceksiniz. Eğer Intellij üzerinden Artifact ile WAR dosyanızı belirti iseniz sizi bir adet kayıt karşılayacaktır.

Install seçeneği ile devam ettiğinizde size WAR dosyanızı belirtmeniz için bir path isteyecektir. WAR dosyanızın yolunu verdikten sonra next ile devam ediyoruz.

Burada çok önemli iki seçenek karşımıza çıkıyor;

Install this deployment as an application

Eğer Intellij üzerinden WAR dosyasını Artifact ile eklemedi iseniz bu seçenek ile yine deployment işlemini tamamlayabilirsiniz. Biz bu seçeneği bir sonraki yazımızda kullanıyor olacağız. JMS için yazdığımız EJB componentlerini burada ayağa kaldıracağız.

Install this deployment as a library

Bu seçenek ise yukarıda bahsettiğimiz ortak kütüphaneler için. Deploymenti tamamladıktan sonra web.xml dosyasında aşağıdaki gibi bu yolu belirterek işlemlerimizi tamamlayabiliriz.

<?xml version = '1.0' encoding = 'windows-1252'?>
<weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/weblogic-web-app">
<library-ref>
<library-name>CommonJars</library-name>
</library-ref>
</weblogic-web-app>

Bu yazımızında sonuna geldik, umarım faydalı bir yazı olmuştur. Görüşmek üzere, esenliklerle kalın 👏🏻

--

--

Emrullah YILDIRIM

Kendine Blogger. Yazarak öğrenen, yazdıklarini paylaşan Java Software Engineer.