JAX – WS – 11 – Creating a Bottom-Up Java Web Service
Merhaba Arkadaslar
Bu bolumde Eclipse yardimiyla otomatik olarak Web Service olusturmayi inceleyecegiz.
Implementation approaches
Web Service implemantasyonu icin 2 yaklasim vardir ;
- Bottom-up development
- Top-down development
Create Dymamic Web Project
Oncelikle Eclipse’te yeni bir Dynamic Web Project olusturalim.
Bottom-up yaklasiminda once Java service siniflarimizi yazariz. WSDL dosyamiz otomatik olarak uretilir.
This is where the code that implements the operations performed by the service is written first. Then the XML description (WSDL) of the service is produced and published in UDDI.
Simple Web Service
Simdi de onceki bolumlerde kullandigimiz basit message service sinifimizi ekleyelim.
MessageWriter.java
package injavawetrust.ws.service; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; import javax.jws.soap.SOAPBinding.Style; @WebService @SOAPBinding(style = Style.RPC) public interface MessageWriter { @WebMethod public String getWelcomeMessage(@WebParam(name = "name") String name, @WebParam(name = "surname") String surname); }
MessageWriterImpl.java
package injavawetrust.ws.service; import javax.jws.WebService; @WebService(endpointInterface = "injavawetrust.ws.service.MessageWriter") public class MessageWriterImpl implements MessageWriter { @Override public String getWelcomeMessage(String name, String surname) { return "Welcome , " + name + " " + surname + ". This message is sent by MessageWriterImpl#getWelcomeMessage."; } }
Create Web Service
Sonrasinda Projemize sag tiklayip New -> Other -> Web Services -> Web Service
Sonrasinda karsimiza yeni menu cikacaktir.
- Web Service type : Burada Java bean siniflarindan Web Service oln Bottom Up yaklasimini seciyoruz.
Eger WSDL dosyasindan olusturacaksak bu durumda Top down secenegini kullanmamiz gerekmektedir. - Service implementation : Browse butonuna basarak ilgili injavawetrust.ws.serviceMessageWriterImpl sinifimizi gosterelim gosteriyoruz.
- Start Service (default) : Bu bolumde ise Eclipste’ten bizim icin yapmasini istedigimiz isi belirtiyoruz. Start Service seviyesinden daha az bir talep belirtigimizde bu durumda Client’i bu menude olusturamayiz. Bir derece daha artirdigimizda Test service level’i olacaktir. Bu durumda Eclipste Web Service menusu acilacaktir.
- Client type : Java Proxy
- No Client (default) : Varsayilan olarak bu menude Client otomatik olarak olusmaz. Bunun icin level artirmamiz gerekmektedir. Test client diyebiliriz.
Bu durumda bizim icin otomatik olarak bir proje olusturacaktir. Varsayilan olarak ismi [projectName]Client seklinde olacaktir. Simdilik No Client olarak kalsin. - Configuration :
Server Runtime ; mevcut kullandigimiz server.
Web Service runtime : Apache Axis ( varsayilan olarak Apache Axis kullanilacaktir)
Apache Axis2 , CXF gibi cesitli implemantasyonlar kullanabiliriz. - Next diyerek cesitli konfigurasyonlar yapabiliriz. Burada default olani kullansin direkt finish ile olayi tamamliyorum.
Output
Eclipse bizim icin mevcut projemizde yeni dosyalar olusturdu.
- WebContent
Oncelikle WebContent altina bakacak olursak burada wsdl klasoru icerisinde wsdl dosyamizi olusturdu.Varsayilan olarak ismi implemantasyon sinifimizin ismi ile ayni olmaktadir.
Bunu yukaridaki konfigurasyondan next -> next adimlarinda degistirebilirdik. - WEB-INF
WEB-INF klasoru altinda lib klasorunde jar dosyalari yer alacaktir.
WEB-INF klasoru altinda MessageWriterImplService klasoru yer alacaktir.
WEB-INF klasoru altinda server-config.wsdd dosyasi olusacaktir.
(wsdd – Web Service Deployment Descriptor)
An Axis specific web service deployment configuration file.
WEB-INF/web.xml dosyasi konfigurasyonu eklenecektir.
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>injavawetrust.jaxws.axis</display-name> <servlet> <display-name>Apache-Axis Servlet</display-name> <servlet-name>AxisServlet</servlet-name> <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>AxisServlet</servlet-name> <url-pattern>/servlet/AxisServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>AxisServlet</servlet-name> <url-pattern>*.jws</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>AxisServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> <servlet> <display-name>Axis Admin Servlet</display-name> <servlet-name>AdminServlet</servlet-name> <servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class> <load-on-startup>100</load-on-startup> </servlet> <servlet-mapping> <servlet-name>AdminServlet</servlet-name> <url-pattern>/servlet/AdminServlet</url-pattern> </servlet-mapping> </web-app>
Web Services Explorer
Eclipse’te Web Services Explorer menusu acilacaktir, bu menu uzerinden test yapabiliriz.
http://localhost:8080/injavawetrust.jaxws.axis/services http://localhost:8080/injavawetrust.jaxws.axis/services/MessageWriterImpl?wsdl
Ornegimizi SOAP UI uzerinde de test edebiliriz…
Github kaynak kodlar / source folder
injavawetrust.jaxws.axis
Yazimi burada sonlandiriyorum.
Herkese bol Javali gunler dilerim.
Be an oracle man , import java.*;
Leave a Reply