Genel

JAX-WS Tutorial – 1

Herkese Merhaba;

Öncelikle bu yazı dizisinde neler ile karşılaşacaksınız ondan bahsetmek istiyorum..

  • JAX-WS nedir ?
  • Web service oluşturma – (Ide olarak Netbeans kullanacağım..)
  • Web Service tasarımı
  • Web service testi ve kontrolü
  • Yazdığımız web service’i java SE’de test etme..

Web Service’lere giriş dersinde jax-ws’e değinmiştim. Yine daha detaylı değinelim. Önceki Yazı için tıklayın..

Jax-WS Nedir ?

JAX-WS Javanın, SOAP(Simple Object Access Protocol) web servisleri geliştirmek için kullanılan kütüphanesi daha doğrusu arayüzü. Vakti zamanında Javanın RPC(Remote Procedure Call) kütüphanesinin yerine geçmek için geliştirilmiş. Günümüz web servislerini düşünecek olursak amacınıda başarıyla yerine getirdiğini görebilirsiniz.

JAX-WS

JAX-WS kütüphanesini ele alırken biraz da WS-I konusundan bahsetmek istiyorum. WS-I (Web Services Interoperability) bir web servis standartı olarak düşünülebilir. Web servislerin temelin, ortam, mimari ya da programlama dili gözetmeksizin iki programı haberleştirmek oluşturmaktadır. Fakat eğer programlama dili, ortam ya da mimari gözetmeyeceksek bu web servislerin ürettiği arayüzlerin aynı ya da benzer olması gerekmektedir. İşte WS-I bu arayüzlerin yani WSDL dosyalarının nasıl olması gerektiğini tanımlamaktadır. Şu anda aktif olarak kullanılan 4 farklı WSDL kodlama çeşidi bulunmaktadır.

Kodlama Çeşitlerine göre;

  1. RPC/encoded
  2. RPC/literal
  3. Document/encoded
  4. Document/literal

Burada sadece 2, 3 ve 4 numaralı kodlama türleri WS-I tarafından desteklenmektedir. Bu sebepten kullanacağınız JAX-WS kütüphanesi de bu üç tip kodlama imkanı sağlamaktadır. 1 numaralı kodlama ise tahmin edebileceğiniz gibi eski Java RPC kütüphanesinin desteklediği kodlama çeşididir. Java’da RPC/encoded türünde kodlama kod üreten sadece Axis kütüphanesi bulunmaktadır. Axis2’de dahil olmak üzere çok kullanılan web servis kütüphaneleri JAX-WS uyumludur.

JAX-WS’in bir diğer güzelliği Java EE standartı olmasıdır. Yani Java EE uyumlu bir uygulama sunucusu (Jboss AS vs.) kullandığınız taktirde ek hiç bir ayar yapmadan, doğrudan ilgili Java annotation yapılarını kullanarak web servislerinizi oluşturabilirsiniz. Fakat bir servlet container (Tomcat, Jetty vs.) kullandığınızda bazı ayarlara ve kütüphanelere ihtiyaç duyacaksınız. İşte bu yazıda, Tomcat ve Maven kullanarak bu ayarları nasıl yapacağınıza bakacağız.

 

Web Service Oluşturma?

Burada ilk değineceğim java ee’de kullanacağınız server’i kendiniz yüklemeniz gerekmektedir. Tomcat kullanıcağım ben. Ayrıca bunun içinde ilerisi günlerde bir ders ekleyebilirim.

Sırası ile adımlarla başlayacak olursak.

Adım 1 –>File –> Java Web –> Web Application

Adını HesapMakinesiWs koydum ben.

ve Finish Yaptık.

Adım 2 –> Projemizin üstüne tıklıyoruz. Sağ tık new ve Web Service seçiyoruz.

paket adımızı org.me.calculator seçiyoruz.

Finish seçiyoruz. Resim olarak;

2016-12-17_15h15_42

 

Web Service Tasarımı

 

Adım 3 –>Artık Web Service’i oluşturduk. Tasarım olarak çok basit bişey seçelim. Toplama işlemi yapalım. Bunun için açılan ws örneğimizi inceleyelim.

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */package org.me.calculator;

import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.WebParam;

/**
 *
 * @author um
 */@WebService(serviceName = "NewWebService")
public class NewWebService {

    /**
     * This is a sample web service operation
     */    @WebMethod(operationName = "hello")
    public String hello(@WebParam(name = "name") String txt) {
        return "Hello " + txt + " !";
    }
}

Buradan sonuçlar çıkarırsak web service’te ilk olarak @WebService metodu ile webservice’imizi tanımlıyouz.

Method içinde yine @WebMethod’umuzu giriyoruz.

ve parametrelerimiz içinde @WebParam olarak webservice’te parametrelerimizi giriyoruz.

Bu kısıma basit bir metod yazalım..

     */    @WebMethod(operationName = "add")
    public int add(@WebParam(name = "i") int i, @WebParam(name = "j") int j) {
      int k=i+j;
      return k;
        
    }

bu şekil metodumuzu tanımladık. Daha kolay bir yol ise;

Proje içinde WebService — NewWebService Sağ tık Add Operation seçiniz..

2016-12-17_15h22_09

içine parametreleri girip methodu oluşturabilirsiniz. mesela resimden sonra(üstteki Resim) oluşcak method:

    /**
     * Web service operation
     */    @WebMethod(operationName = "operation")
    public int operation(@WebParam(name = "i") int i, @WebParam(name = "j") int j) {
        //TODO write your implementation code here:
        return 0;
    }

Web Service Testi

Adım 4–> Şimdi yazdığımız web service’imizi bi test edelim. Web service’e sağ tıklayın..

Test Web Service var ona tıklayın ve proje’nin test’i olucak. Tomcat’te link üzerinden test etmemiz söyleniyor.

Adres olarak “//localhost:8080/HesapMakinesiWs/NewWebService” , ?WSDL yazarak’ta içeriği görebilirsiniz. Zaten bunu test edeceğiz.

SOAPUI dersinde de bu kısmı kullanacağım. o yüzden şuan çalışmıyo felan demeyin. Test için servlet,JSP ve java’da SE kullanacağız.

Normalde soap ui üzerinden test edecek olanlar için soapui’yi yükleyip, newsoap’ta sizin yazmış olduğunuz webservice kısmını ekleyerek request yaparak testine bakabilirsiniz.

Hadi test edelim.

Örnekler..

ilk olarak java SE projesi oluşturalım.

File New Project – Java- Java Application seçelim.

Sonra oluşturduğumuz paket’e tıklayarak WebService Client isteyelim.Sağ Tık- New – Webservice client ve üstte yazdığımız wsdl url’imizi burada url kısmına yazalım..

Şimdi web service’imizi çağıralım. ister editör içinde sağ tık -> Insert Code–> call web service yapabilirsiniz. İsterseniz aşağıdaki methodu yazarsınız..

2016-12-17_15h42_48

java dosyamızda bir method yazarak service’imizi kullanalım.

private static int add(int i, int j) {
    org.me.calculator.CalculatorWS_Service service = new org.me.calculator.CalculatorWS_Service();
    org.me.calculator.CalculatorWS port = service.getCalculatorWSPort();
    return port.add(i, j);
}

Sonrasında da bu methodumuzu kullanacağız..

2 tane int türünde değişkenimizi tanımladık ve topladık en altta da sonuç yazdı. JAVA SE ile bu kadar..

2016-12-17_15h45_14

 

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir