JSF – 07 – Apache TomEE & Project Facets & Maven

Merhaba Arkadaslar
Onceki bolumlerde Apache Tomcat 8 versiyonunu kullandik. Hatirlayacagimiz gibi Apache Tomcat , Servlet Container ozelligine sahipti. CDI ( Context and Dependency Injection) Bean’lerini calistirmak icin Glassfish Application Server kullandik.

Bu bolumde Apache TomEE kullanacagiz. Bu vesileyle genel bir Maven projesinin Project Facets guncelleme islemi hakkinda bilgi verecegim. Bu yazi JSF ten daha cok bir Maven yazisi olacak. Buradaki inceleyecegimiz problemleri yasadiginiz Maven projeleri icin benzer uygulamayi yapabilirsiniz.

Oncelikle Apache TomEE hakkinda kisa bilgi verelim ve kurulumundan bahsedelim ;

Apache TomEE Web Profile versiyonu su teknolojilere destek saglamaktadir.

  • CDI – Apache OpenWebBeans
  • EJB – Apache OpenEJB
  • JPA – Apache OpenJPA
  • JSF – Apache MyFaces
  • JSP – Apache Tomcat
  • JSTL – Apache Tomcat
  • JTA – Apache Geronimo Transaction
  • Servlet – Apache Tomcat
  • Javamail – Apache Geronimo JavaMail
  • Bean Validation – Apache BVal

Apache TomEE Kurulum

Oncelikle Apache TomEE indirelim.  Apache TomEE download

Apache TomEE icin suan (Haziran 2015) Apache Tomcat 7 versiyonu mevcut , bu nedenle New Server Runtime Environment sekmesinde Apache Tomcat v7.0 secmemiz ve ilgili Apache TomEE dizinini gostermemiz gereklidir.

new server apache tomcat7

Apache TomEE nin dizini bir sonraki menude gosterelim.

apache tomee location

Project Facets

Apache TomEE ‘nin suan icin V7 oldugunu belirttim. Bu durumda Dynamic Web Module 3.1 versiyonu ile calismayacaktir. (The server does not support version 3.1 of the J2EE Web module specification. )

Buna benzer durumlarda import ettiginiz baska maven projesinin Project Facets ayarini duzenlemeniz gerekir.

run on server

Projemizi sag tiklayip Properties diyelim ve Project Facets Menusune gelelim. Burada Dynamic Web Module degistirmeye calisirsak izin vermeyecektir. Bu durumda degisikligi nasil yapariz ?

project facets

Java Version Change Maven
Projemizde Java versiyonu degistirmek icin pom.xml dosyasini kullanmamiz gereklidir. Project Facets ta Java versiyonu 1.8 den 1.7 yapsak bile Maven projemizde update yaptigimizda tekrar 1.8 olarak guncellenecektir. Genel bir cozum olarak pom.xml dosyamizda su kisimda degisiklik yapmamiz gereklidir.

pom.xml

<plugin>
     <artifactId>maven-compiler-plugin</artifactId>
     <version>3.1</version>
     <configuration>
     <source>1.8</source>
     <target>1.8</target>
     </configuration>
</plugin>

Bu kisimda 1.8 yerine 1.7 yazabiliriz. Boylelikle Maven projemizi update ettigimizde Project Facets menusunde Java versiyonu 1.7 oldugunu gorebiliriz.

Not : Projemize sag tiklayip Maven –> Update Project

Dynamic Web Module Change
Oncelikle web.xml dosyamizi 3.1 tanimi yerine 3.0 tanimini degistirmemiz gereklidir.

web.xml

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

Bir sonraki adim olarak Eclipse Package Explorer menusunden ya da proje dizinimizde .settings dizini altinda org.eclipse.wst.common.project.facet.core.xml dosyasinda degisiklik yapmamiz gereklidir.

Not: Package Explorer menusu eger yoksa Eclipse’te Window –> Show View sekmesinden acabilirsiniz.
Not2 : Varsayilan olarak Eclipse filtre uygulamaktadir. Bunun icin resimdeki kucuk ucgene tiklayip Filter sekmesine tiklayip Deselect All dersek bu durumda projemizdeki tum dosyalari gorebiliriz. Ben de Deselect All secili oldugu icin projedeki tum dosyalar gorulmektedir.

package explorer

org.eclipse.wst.common.project.facet.core.xml
Dosyamizi acarsak iceriginin su sekilde oldugunu gorebiliriz. En son versiyonu 1.8 den 1.7 yaptigimiz icin burada da 1.7 olarak gorulmektedir. Bu kisimda jst.web ve jst.jsf icin versiyon degisikligi yapabiliriz.  Hatirlayacagimiz gibi Eclipse ,Project Facets menusunde bu degisikligi yapmamiza izin vermiyordu .

<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
  <runtime name="Apache Tomcat v8.0"/>
  <fixed facet="wst.jsdt.web"/>
  <fixed facet="jst.web"/>
  <fixed facet="java"/>
  <installed facet="wst.jsdt.web" version="1.0"/>
  <installed facet="jst.jsf" version="2.2"/>
  <installed facet="java" version="1.7"/>
  <installed facet="jst.web" version="3.1"/>
</faceted-project>

Maven projesini update ettigimizde Project Facets tekrar guncellenecektir.

Not: Eger web.xml dosyasinda 3.0 versiyonu icin xml guncellemesi yapmazsaniz org.eclipse.wst.common.project.facet.core.xml dosyasinda jst.web icin yaptiginiz guncelleme ezilecektir. Projenizi Maven Update yaptiginizda tekrar org.eclipse.wst.common.project.facet.core.xml dosyasinda jst.web icin versiyon 3.1 olarak kalacaktir ve Project Facets Dynamic Web Module 3.1 olarak kalacaktir.

project facets2

Run CDI Beans , Apache TomEE

Daha once CDI Bean’lerini Glassfish Application Server ile calistirdik. CDI Bean’lerini benzer sekilde Apache TomEE uzerinde de calistirabiliriz. Bunun icin bir degisiklik yapmamiz gerekmez sadece Apache TomEE uzerinde CDI Bean’lerin calismasi icin bos da olsa WEB-INF altinda beans.xml dosyasi mutlaka tanimli olmalidir.

beans.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans 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/beans_1_0.xsd">
</beans>

Kaynak kodlari onceli yazida bulabilirsiniz.

Yazimi burada sonlandiriyorum.
Herkese Bol Javali Gunler dilerim.
Be an oracle man , import java.*;
Levent Erguder
OCP, Java SE 6 Programmer
OCE, Java EE 6 Web Component Developer

Print Friendly, PDF & Email

Leave a Reply

Your email address will not be published. Required fields are marked *