SlideShare une entreprise Scribd logo
1  sur  12
Télécharger pour lire hors ligne
Java ve Axis2 Framework ile WebService Yayınlamak
Herkese merhaba arkadaşlar bu yazıda sizlere Axis2 Webservice altyapısı ile nasıl webservice
yayınlanabildiğinden bahsedeceğim.
Axis2 Webservice Framework
Axis2 Wersevice Framework’u Apache tarafından geliştirilmiştir. Axis2 gücü ve esnekliği sayesinde
açık kaynak kodlu dünyanın vazgeçilmez Webservice Framework’u olmuştur. Axis2 ile birlikte SOAP
1.1, SOAP 1.2 ve REST tipinde servisler yayınlamak mümkündür. Bu üç tip iletişim protokolunu
destekler.
Axis2 Webservice Framework’u aşağıdaki linkten indirilebilir.
http://axis.apache.org/axis2/java/core/download.cgi
Axis2 Webservice Framework’u “Preferences” sekmesinden dosya dizini belirtilerek yüklenir. Başarı
ile yüklendi yazısı görüldüğünde kullanıma hazır anlamına gelmektedir.
Eclipse ile Dynamic Web Project
Eclipse üzerinde yeni bir dinamik web projesi aşağıdaki gibi açılabilir.
Ardından projeye ait ayarlamalara geçilir. Aşağıdaki ekranda olduğu gibi “Target runtime” ayarı
“Apache Tomcat 7” şeklinde ayarlanır. “Dynamic Web module Version” ayarı ise “2.5” olarak
setlenir.
Proje oluşturulduktan sonra aşağıdaki package yapısı kurulmalıdır.
1. “ebookservice”
1.1. “core”
1.2. “service”
“package” yapısı kurgulandıktan sonra, projeye sağ tıklayıp yeni bir “Source Folder” eklenir. “Source
Folder” ‘ lar Java tarafında kaynakların tutulduğu özel sistem klasörleridir.
“Source Folder” ismi “resources” olarak belirlenir. “resources” klasörü altına EclipseLink JPA’nın
ihtiyaç duyduğu Persistence XML dosyası konulacaktır. Ancak, JPA’nın bu dosyayı bulabilmesi için
META-INF klasörü altında olmalıdır. META-INF klasörü yaratılır ve XML dosyası oluşturulur.
“persistence.xml” dosyasının içeriği aşağıdaki gibidir.
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="bookdb.mysql" transaction-
type="RESOURCE_LOCAL">
<class>ebookservice.core.Ebook</class>
<properties>
<property name="javax.persistence.jdbc.url"
value="jdbc:mysql://localhost:3306/BookDB"/>
<property name="javax.persistence.jdbc.password"
value=""/>
<property name="javax.persistence.jdbc.user"
value="root"/>
<property name="javax.persistence.jdbc.driver"
value="com.mysql.jdbc.Driver"/>
<property name="eclipselink.ddl-generation"
value="create-tables" /> <!-- none / create-tables / drop-and-
create-tables -->
<property name="eclipselink.ddl-generation.output-
mode" value="database" />
</properties>
</persistence-unit>
</persistence>
“core” package içinde Entity sınıfları ve veri servisi yapan sınıf bulunacaktır. “service” package’ı içinde
ise Webservice yayını için kullanılacak olan sınıf yer alacaktır.
Ebook POJO Sınıfı
package ebookservice.core;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@SuppressWarnings("serial")
@Entity(name="Ebook")
@Table(name="Tbl_EBook", schema="BookDB")
public class Ebook implements Serializable {
//Primary Key Kolonu
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="book_id")
private Long id;
//Tablonun kolonlari ...
@Column(name="book_name")
private String bookName;
@Column(name="book_author")
private String bookAuthor;
@Column(name="book_page_count")
private String bookPageCount;
public Ebook() {}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getBookAuthor() {
return bookAuthor;
}
public void setBookAuthor(String bookAuthor) {
this.bookAuthor = bookAuthor;
}
public String getBookPageCount() {
return bookPageCount;
}
public void setBookPageCount(String bookPageCount) {
this.bookPageCount = bookPageCount;
}
}
Yukarıdaki Entity sınıfı “Tbl_Ebook” tablosundaki bir satır kaydın veri modelini temsil eder.
Veritabanındaki satır halindeki kayıtları alıp Entity listesi halinde bir üst katmana verecek olan servis
“DataService” olarak adalndırılır. Bir üst katman ise webservice sınıfını oluşturan ve veriyi web
üzerinden yayına açan sınıfın ta kendisidir.
package ebookservice.core;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
public class DataService {
public static List<Ebook> getEbooks() {
//Veritabani baglantisi kurar.
EntityManagerFactory entityManagerFactory =
Persistence.createEntityManagerFactory("bookdb.mysql");
EntityManager entityManager =
entityManagerFactory.createEntityManager();
//Native SQL veya JPQL yerine Criteria ile sorgulama
yapilir.
CriteriaBuilder criteriaBuilder =
entityManager.getCriteriaBuilder();
//CriteriaBuilder uzeirnden Query olusturulur.
CriteriaQuery<Ebook> criteriaQuery =
criteriaBuilder.createQuery(Ebook.class);
//Tablodaki kayitlar liste halinde dondurulur.
return
entityManager.createQuery(criteriaQuery).getResultList();
}
}
Webservice sınıfı aşağıdaki gibidir. Bu sınıf içindeki “getEbooks” metodu veriyi dışarıya açacak olan
metoddur.
package ebookservice.service;
import java.util.List;
import ebookservice.core.DataService;
import ebookservice.core.Ebook;
public class EbookService {
public List<Ebook> getEbooks() {
return DataService.getEbooks();
}
}
Eclipselink JPA için gerekli olan kütüphaneler WEB-INF klasörü altındaki “lib” isimli klasöre kopyalanır.
“EbookService” sınıfı üzerine sağ tıklayıp Webservice oluşturma işlemi başlatılır.
Daha sonra webservice’in hangi kütüphaneyi kullanacağı hangi Uygulama Sunucusuna göre konfigüre
edileceği aşağıdaki gibi ayarlanır.
Webservice oluşturma işlemi böylece tamamlanır. Ardından tarayıcı üzerinden webservice’in yayına
alınıp alınmadığını bir WSDL dosyası isteğinde bulunarak anlayabiliriz. Görüldüğü üzere aşağıdaki gibi
WSDL dosyası tarayıcıya yüklenmiştir.
Tarayıcı üzerinden webservice URL’ın sonuna çağrılmak istenen metodun ismi yazılır ve parametre
alıyor bu parametrelerde geçilir.
http://localhost:8080/EbookService/services/EbookService/getBooks
yukarıdaki URL çağrıldığında aşağıdaki gibi sonuç kümesi veritabanından alınıp liste halinde yayına
verilir.
Veritabanı tarafındaki kayıtlar aşağıdaki gibidir.
Umarım yararlı bir yazı olmuştur. Bir sonraki makalemde görüşmek dileğiyle ...
Batuhan Düzgün
Bilgisayar Mühendisi
Endüstri Mühendisi

Contenu connexe

Similaire à Java ve axis2 framework ile web service yayınlamak

Mutant Web Applications
Mutant Web ApplicationsMutant Web Applications
Mutant Web Applicationsguest096801
 
İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21Cihan Özhan
 
ASP.NET MVC'den ASP.NET Core'a Geçiş
ASP.NET MVC'den ASP.NET Core'a GeçişASP.NET MVC'den ASP.NET Core'a Geçiş
ASP.NET MVC'den ASP.NET Core'a GeçişSinan Bozkuş
 
Socket Programming.pdf
Socket Programming.pdfSocket Programming.pdf
Socket Programming.pdfYasinKabak
 
Spring framework
Spring frameworkSpring framework
Spring frameworkayhanugurlu
 
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş SüreciASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş SüreciSinan Bozkuş
 
Spring uygulamaların exception handling yönetimi
Spring uygulamaların exception handling yönetimiSpring uygulamaların exception handling yönetimi
Spring uygulamaların exception handling yönetimiSistek Yazılım
 
Javascript - from past to present
Javascript - from past to present Javascript - from past to present
Javascript - from past to present Kubilay TURAL
 
DP:900 Azure Data Fundamentals - Azure'da ilişkisel veriler-02
DP:900 Azure Data Fundamentals - Azure'da ilişkisel veriler-02DP:900 Azure Data Fundamentals - Azure'da ilişkisel veriler-02
DP:900 Azure Data Fundamentals - Azure'da ilişkisel veriler-02Önder Değer
 
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik DesteğiASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik DesteğiAli İhsan Çalışkan
 
Android'e Giriş Eğitimleri 2_2
Android'e Giriş Eğitimleri 2_2Android'e Giriş Eğitimleri 2_2
Android'e Giriş Eğitimleri 2_2Univerist
 

Similaire à Java ve axis2 framework ile web service yayınlamak (20)

Mutant Web Applications
Mutant Web ApplicationsMutant Web Applications
Mutant Web Applications
 
İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21
 
ASP.NET MVC'den ASP.NET Core'a Geçiş
ASP.NET MVC'den ASP.NET Core'a GeçişASP.NET MVC'den ASP.NET Core'a Geçiş
ASP.NET MVC'den ASP.NET Core'a Geçiş
 
Socket Programming.pdf
Socket Programming.pdfSocket Programming.pdf
Socket Programming.pdf
 
Spring framework
Spring frameworkSpring framework
Spring framework
 
Hayrettin kunuk
Hayrettin kunukHayrettin kunuk
Hayrettin kunuk
 
Recep proje 5
Recep proje 5Recep proje 5
Recep proje 5
 
Asp.net ajax
Asp.net ajaxAsp.net ajax
Asp.net ajax
 
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş SüreciASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
 
Spring uygulamaların exception handling yönetimi
Spring uygulamaların exception handling yönetimiSpring uygulamaların exception handling yönetimi
Spring uygulamaların exception handling yönetimi
 
sunu (Asp-2)
sunu (Asp-2)sunu (Asp-2)
sunu (Asp-2)
 
Android Uygulamaların Tersine Mühendislik Yöntemi ile İncelenmesi
Android Uygulamaların Tersine Mühendislik Yöntemi ile İncelenmesiAndroid Uygulamaların Tersine Mühendislik Yöntemi ile İncelenmesi
Android Uygulamaların Tersine Mühendislik Yöntemi ile İncelenmesi
 
Javascript - from past to present
Javascript - from past to present Javascript - from past to present
Javascript - from past to present
 
DP:900 Azure Data Fundamentals - Azure'da ilişkisel veriler-02
DP:900 Azure Data Fundamentals - Azure'da ilişkisel veriler-02DP:900 Azure Data Fundamentals - Azure'da ilişkisel veriler-02
DP:900 Azure Data Fundamentals - Azure'da ilişkisel veriler-02
 
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik DesteğiASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
 
Delphi 7
Delphi 7Delphi 7
Delphi 7
 
Web uygulama açıklıklarından faydalanarak sistem ele geçirme
Web uygulama açıklıklarından faydalanarak sistem ele geçirmeWeb uygulama açıklıklarından faydalanarak sistem ele geçirme
Web uygulama açıklıklarından faydalanarak sistem ele geçirme
 
Spring Framework
Spring FrameworkSpring Framework
Spring Framework
 
Java script
Java scriptJava script
Java script
 
Android'e Giriş Eğitimleri 2_2
Android'e Giriş Eğitimleri 2_2Android'e Giriş Eğitimleri 2_2
Android'e Giriş Eğitimleri 2_2
 

Java ve axis2 framework ile web service yayınlamak

  • 1. Java ve Axis2 Framework ile WebService Yayınlamak Herkese merhaba arkadaşlar bu yazıda sizlere Axis2 Webservice altyapısı ile nasıl webservice yayınlanabildiğinden bahsedeceğim. Axis2 Webservice Framework Axis2 Wersevice Framework’u Apache tarafından geliştirilmiştir. Axis2 gücü ve esnekliği sayesinde açık kaynak kodlu dünyanın vazgeçilmez Webservice Framework’u olmuştur. Axis2 ile birlikte SOAP 1.1, SOAP 1.2 ve REST tipinde servisler yayınlamak mümkündür. Bu üç tip iletişim protokolunu destekler. Axis2 Webservice Framework’u aşağıdaki linkten indirilebilir. http://axis.apache.org/axis2/java/core/download.cgi Axis2 Webservice Framework’u “Preferences” sekmesinden dosya dizini belirtilerek yüklenir. Başarı ile yüklendi yazısı görüldüğünde kullanıma hazır anlamına gelmektedir.
  • 2. Eclipse ile Dynamic Web Project Eclipse üzerinde yeni bir dinamik web projesi aşağıdaki gibi açılabilir. Ardından projeye ait ayarlamalara geçilir. Aşağıdaki ekranda olduğu gibi “Target runtime” ayarı “Apache Tomcat 7” şeklinde ayarlanır. “Dynamic Web module Version” ayarı ise “2.5” olarak setlenir.
  • 3. Proje oluşturulduktan sonra aşağıdaki package yapısı kurulmalıdır. 1. “ebookservice” 1.1. “core” 1.2. “service” “package” yapısı kurgulandıktan sonra, projeye sağ tıklayıp yeni bir “Source Folder” eklenir. “Source Folder” ‘ lar Java tarafında kaynakların tutulduğu özel sistem klasörleridir.
  • 4. “Source Folder” ismi “resources” olarak belirlenir. “resources” klasörü altına EclipseLink JPA’nın ihtiyaç duyduğu Persistence XML dosyası konulacaktır. Ancak, JPA’nın bu dosyayı bulabilmesi için META-INF klasörü altında olmalıdır. META-INF klasörü yaratılır ve XML dosyası oluşturulur. “persistence.xml” dosyasının içeriği aşağıdaki gibidir. <?xml version="1.0" encoding="UTF-8"?> <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> <persistence-unit name="bookdb.mysql" transaction- type="RESOURCE_LOCAL"> <class>ebookservice.core.Ebook</class>
  • 5. <properties> <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/BookDB"/> <property name="javax.persistence.jdbc.password" value=""/> <property name="javax.persistence.jdbc.user" value="root"/> <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> <property name="eclipselink.ddl-generation" value="create-tables" /> <!-- none / create-tables / drop-and- create-tables --> <property name="eclipselink.ddl-generation.output- mode" value="database" /> </properties> </persistence-unit> </persistence> “core” package içinde Entity sınıfları ve veri servisi yapan sınıf bulunacaktır. “service” package’ı içinde ise Webservice yayını için kullanılacak olan sınıf yer alacaktır. Ebook POJO Sınıfı package ebookservice.core; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @SuppressWarnings("serial") @Entity(name="Ebook") @Table(name="Tbl_EBook", schema="BookDB") public class Ebook implements Serializable { //Primary Key Kolonu @Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name="book_id") private Long id; //Tablonun kolonlari ... @Column(name="book_name") private String bookName;
  • 6. @Column(name="book_author") private String bookAuthor; @Column(name="book_page_count") private String bookPageCount; public Ebook() {} public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getBookName() { return bookName; } public void setBookName(String bookName) { this.bookName = bookName; } public String getBookAuthor() { return bookAuthor; } public void setBookAuthor(String bookAuthor) { this.bookAuthor = bookAuthor; } public String getBookPageCount() { return bookPageCount; } public void setBookPageCount(String bookPageCount) { this.bookPageCount = bookPageCount; } } Yukarıdaki Entity sınıfı “Tbl_Ebook” tablosundaki bir satır kaydın veri modelini temsil eder. Veritabanındaki satır halindeki kayıtları alıp Entity listesi halinde bir üst katmana verecek olan servis “DataService” olarak adalndırılır. Bir üst katman ise webservice sınıfını oluşturan ve veriyi web üzerinden yayına açan sınıfın ta kendisidir. package ebookservice.core; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence;
  • 7. import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; public class DataService { public static List<Ebook> getEbooks() { //Veritabani baglantisi kurar. EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("bookdb.mysql"); EntityManager entityManager = entityManagerFactory.createEntityManager(); //Native SQL veya JPQL yerine Criteria ile sorgulama yapilir. CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); //CriteriaBuilder uzeirnden Query olusturulur. CriteriaQuery<Ebook> criteriaQuery = criteriaBuilder.createQuery(Ebook.class); //Tablodaki kayitlar liste halinde dondurulur. return entityManager.createQuery(criteriaQuery).getResultList(); } } Webservice sınıfı aşağıdaki gibidir. Bu sınıf içindeki “getEbooks” metodu veriyi dışarıya açacak olan metoddur. package ebookservice.service; import java.util.List; import ebookservice.core.DataService; import ebookservice.core.Ebook; public class EbookService { public List<Ebook> getEbooks() { return DataService.getEbooks(); } } Eclipselink JPA için gerekli olan kütüphaneler WEB-INF klasörü altındaki “lib” isimli klasöre kopyalanır.
  • 8. “EbookService” sınıfı üzerine sağ tıklayıp Webservice oluşturma işlemi başlatılır. Daha sonra webservice’in hangi kütüphaneyi kullanacağı hangi Uygulama Sunucusuna göre konfigüre edileceği aşağıdaki gibi ayarlanır.
  • 9.
  • 10. Webservice oluşturma işlemi böylece tamamlanır. Ardından tarayıcı üzerinden webservice’in yayına alınıp alınmadığını bir WSDL dosyası isteğinde bulunarak anlayabiliriz. Görüldüğü üzere aşağıdaki gibi WSDL dosyası tarayıcıya yüklenmiştir.
  • 11. Tarayıcı üzerinden webservice URL’ın sonuna çağrılmak istenen metodun ismi yazılır ve parametre alıyor bu parametrelerde geçilir. http://localhost:8080/EbookService/services/EbookService/getBooks yukarıdaki URL çağrıldığında aşağıdaki gibi sonuç kümesi veritabanından alınıp liste halinde yayına verilir.
  • 12. Veritabanı tarafındaki kayıtlar aşağıdaki gibidir. Umarım yararlı bir yazı olmuştur. Bir sonraki makalemde görüşmek dileğiyle ... Batuhan Düzgün Bilgisayar Mühendisi Endüstri Mühendisi