Aplikacja WWW - Web Services Essentials – 14.12.2009


 

Utworzyć projekt webowy – (web project)

·                                 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

Utworzenie usługi webowej - Creating web service

·                                 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

·                                

 

 

 

Implementacja usługi webowej - web service

·                                 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;

}

 

 

 

 

 

Utworzenie procedury obsługi - message handler

·                                 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...

·                                  

 

Testowanie usługi webowej

 

 

 

 

<?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