Posted by Mustafa Sait Özen in , , , , ,

JBoss Web Servisleri (JAX-WS)

Öncelikle bilgisayarınınızda JBossWS , JBossAS ve JDK5/6 kurulu olması gerekmektedir.Bu gerekenleri bilgisayarınıza
kurduktan sonra web servis yazmanın iki tane yolu vardır.
Bunlardan birincisi EJB3 yapısını kullanarak ikincisi ise POJO(Plain Old Java Object) kullanarak yapılmaktadır.

Stateless EJB3 ile :

Öncelikle Remote Interface'imizi oluşturalım


import javax.ejb.Remote;

@Remote
public interface MerhabaDunyaRI {
public String merhabaDe(String isim);
}


Daha sonra bu interface'i gerçekleyen sınıfı "MerhabaDunya" yı oluşturalım


import javax.ejb.Stateless;
import javax.jws.WebMethod;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import org.jboss.wsf.spi.annotation.WebContext;

@WebService(name = "EndpointInterface", targetNamespace = "http://www.domaininiz.com/servisler", serviceName = "MerhabaDunyaServisi")
@SOAPBinding(style = SOAPBinding.Style.RPC)
@WebContext (contextRoot="/servislerim", urlPattern="/MerhabaServisi")
@Stateless
public class MerhabaDunya implements MerhabaDunyaRI {

@WebMethod
@WebResult(name="sonuc",targetNamespace="sonuc")
public String merhabaDe(String isim) {
return "Merhaba "+ isim;
}

}



JBossAS yi çalıştıralım ve http://127.0.0.1:8080/jbossws/services (admin/admin) adresine bir bakalım

Web servisimiz hazır :)))

POJO ile:

Interface falan yazmanıza gerek yok. Basit bir sınıf olan MerhabaDunyaPOJO 'nun başına @WebService annotation'ı ekleneniz yeterli.


import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;

@WebService(targetNamespace = "http://www.domaininiz.com/servisler", serviceName = "MerhabaDunyaPOJOServisi")
@SOAPBinding(style = SOAPBinding.Style.RPC)
public class MerhabaDunyaPOJO {

@WebMethod
public String hello(String input) {
return "hello from pojo " + input;
}

}



Tabi birde web.xml de düzenleme yapmamız lazım. Sınıfımızı servlet olarak kayıt ettirmeliyiz.


<servlet>
<servlet-name>MerhabaDunyaPOJOServisi</servlet-name>
<servlet-class>samples.webservice.HelloPOJO</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MerhabaDunyaPOJOServisi</servlet-name>
<url-pattern>/servislerim/MerhabaPOJOServisi</url-pattern>
</servlet-mapping>



JBossAS yi tekrar çalıştıralım ve http://127.0.0.1:8080/jbossws/services adresine bir göz atalım.



Peki web servis yazarken hangisini seçmeliyim diyorsanız biraz aradaki farklılıklara bakmalıyız.
EJB3 yazılan web servislerle POJO lara göre bir kaç tane fazladan annotations vardır.
EJB3 ile yazılan web servisleri sadece Enterprise Application (EAR) projelerinin içinde paketlenebilirken POJO 'lar ise hem EAR hemde WAR içinde paketlenebilirler. Stateless EJB kullandığımız için AOP 'un avantajlarından olan @PreDestroy ve @PostConstruct ' ları ve diğer EJB3 'in özelliklerini web servisinizde kullanabilirsiniz.

Benim tavsiyem stateless EJB3 ile web servis yazmanız :)))


This entry was posted on Perşembe, Haziran 18, 2009 at Perşembe, Haziran 18, 2009 and is filed under , , , , , . You can follow any responses to this entry through the comments feed .

0 yorum

Yorum Gönder