Aplikacja WWW - Web
Services Essentials – 14.12.2009
·
Otworzyć I następnie utworzyć: File - New
Project - Web - Web Application
·
Podać
HelloWebService
jako
Project Name
·
Podać katalog domowy projektu - project's
directory
·
Wybrać Java EE 5
jako
wersję J2EE version
·
Wcisnąć przycisk Finish
·
Wybrać:
File - New File - Web services - Web
Service - Next
·
Podać nazwę usługi web service, eg. HelloWebService
·
Podać
nazwę pakietu dla web service, np.
Web2
·
Wcisnąć Finish
·
·
Odkomentować kod z pliku
źródłowego
·
Dodać
serviceName
="Message"
to WebService
annotation
·
Dodać
operationName
="databaseTable"
to WebMethod
annotation
·
Dodać
@WebParam(name="name")
to String param
argument of method operation
·
Dodać
new getTable(String): String
operation to web service using Web Service
-> Add Operation...odpowiednie dane
w edytorze
·
/* * To change
this template, choose Tools | Templates * and open the template in the editor. */ package web2; import
com.sun.xml.rpc.processor.modeler.j2ee.xml.string; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService; /** * * @author */ @WebService(serviceName="Message" ) public class HelloWebService
{ @WebMethod(operationName="databaseTable") public
String Operation(@WebParam(name="table") String param){ //
implement the web service operation...get database table data/// return
"TABLE " + param; } @WebMethod() public String getTable(String
S) { // TODO
implement return
"table data for " + S; } |
·
Wybrać
File - New File - Web services - Message
Handler - Next
·
Podać nazwę procedury obslugi message handler,
np. MessageHandler
·
Podać nazwę pakietu dla message handler, np. Web2
·
Wcisnąć Finish
·
Zaimplementowąć prostą procedurę log
, np.:
·
·
Dodać procedurę obsługi do
webservice z wykorzystaniem
Configure Handlers...
·
<?xml version="1.0"
encoding="UTF-8" ?> - <!-- Published by
JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI
2.1.3.1-hudson-749-SNAPSHOT. --> - <!-- Generated by
JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.3.1-hudson-749-SNAPSHOT.
--> - <definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://web2/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://web2/" name="Message"> - <types> - <xsd:schema> <xsd:import namespace="http://web2/"
schemaLocation="http://localhost:8080/WebApplication3/Message?xsd=1" /> </xsd:schema> </types> - <message name="getTable"> <part name="parameters" element="tns:getTable" /> </message> - <message name="getTableResponse"> <part name="parameters" element="tns:getTableResponse" /> </message> - <message name="databaseTable"> <part name="parameters" element="tns:databaseTable" /> </message> - <message name="databaseTableResponse"> <part name="parameters" element="tns:databaseTableResponse" /> </message> - <portType name="HelloWebService"> - <operation name="getTable"> <input message="tns:getTable" /> <output message="tns:getTableResponse" /> </operation> - <operation name="databaseTable"> <input message="tns:databaseTable" /> <output message="tns:databaseTableResponse" /> </operation> </portType> - <binding name="HelloWebServicePortBinding" type="tns:HelloWebService"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /> - <operation name="getTable"> <soap:operation soapAction="" /> - <input> <soap:body use="literal" /> </input> - <output> <soap:body use="literal" /> </output> </operation> - <operation name="databaseTable"> <soap:operation soapAction="" /> - <input> <soap:body use="literal" /> </input> - <output> <soap:body use="literal" /> </output> </operation> </binding> - <service name="Message"> - <port name="HelloWebServicePort" binding="tns:HelloWebServicePortBinding"> <soap:address location="http://localhost:8080/WebApplication3/Message" /> </port> </service> </definitions> |
Klient usługi webowej
Utworzyć nową
aplikację internetową WebApplication4
Dodać nowy plik:
Web Service Client
Wybrać usługę
WebApplication3
Utworzyć nowy
serwlet:
Nadać nazwę dla
serwletu TableServlet
W metodzie
processRequest, wybrać z manu kontekstowego Insert Code == Call Web Servce
Operation
Wynikowy kod
serwletu:
/* * To change this template, choose Tools |
Templates * and open the
template in the editor. */ import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.xml.ws.WebServiceRef; import web2.Message; /** * * @author gis */ public class TableServlet
extends HttpServlet { @WebServiceRef(wsdlLocation =
"WEB-INF/wsdl/localhost_8080/WebApplication3/Message.wsdl") private Message service;
/** * Processes requests for both HTTP
<code>GET</code> and <code>POST</code> methods. * @param
request servlet request * @param
response servlet response * @throws ServletException
if a servlet-specific error occurs * @throws IOException
if an I/O error occurs */ protected void processRequest(HttpServletRequest request, HttpServletResponse
response) throws ServletException,
IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter
out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Servlet ClientServlet</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Servlet ClientServlet at "
+ request.getContextPath () +
"</h1>"); try { // Call Web Service Operation web2.HelloWebService port = service.getHelloWebServicePort(); // TODO initialize WS operation
arguments here java.lang.String
arg0 = ""; // TODO process result here java.lang.String
result = port.getTable(arg0); out.println("Result
= "+result); } catch (Exception ex) { // TODO handle custom exceptions
here } out.println("</body>"); out.println("</html>"); out.close(); } // <editor-fold defaultstate="collapsed"
desc="HttpServlet
methods. Click on the + sign on the left to edit the code."> /** * Handles the HTTP
<code>GET</code> method. * @param
request servlet request * @param
response servlet response * @throws ServletException
if a servlet-specific error occurs * @throws IOException
if an I/O error occurs */ @Override protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException,
IOException { processRequest(request,
response); } /** * Handles the HTTP
<code>POST</code> method. * @param
request servlet request * @param
response servlet response * @throws ServletException
if a servlet-specific error occurs * @throws IOException
if an I/O error occurs */
@Override protected void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException,
IOException { processRequest(request,
response); } /** * Returns a short description of the servlet. * @return a String containing servlet description */ @Override public String getServletInfo()
{ return "Short description"; }//
</editor-fold> } |
Przetwstować
działanie serwletu:
ZADANIA
1.
Pobranie
zawartości tabeli z działającej usługi webowej z serwletu /JSP/JSF aplikacji
klienckiej
2.
Pobranie jednego
wybranego rekordu z tabeli poprzez usługę webową
3.
Modyfikacja
wybranego rekordu / usuwanie / dodawanie nowego z serwletu / JSP / JSF
aplikacji klienckiej poprzez Web Service