⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bookorderservlet.java

📁 java web services how to program
💻 JAVA
字号:
// Fig. 15.13: BookOrderServlet.java.
// Class BookOrderServlet expose the Book Order Web Service for
// Bookstore 1.
package jws1casestudy.bookstore1;

// Java core packages
import java.util.*;
import java.sql.*;

// Java extension packages
import javax.servlet.*;
import javax.xml.messaging.*;
import javax.xml.soap.*;

// Deitel packages
import jws1casestudy.pricefinder.common.*;

public class BookOrderServlet extends JAXMServlet 
   implements ReqRespListener {

   // factory used to create SOAPMessage objects
   private MessageFactory messageFactory;

   // reference to object that provides Web-Service
   private BookOrder service;

   // initialize BookPriceServlet
   public void init( ServletConfig config ) 
      throws ServletException
   {
      super.init( config );

      // instantiate Web-service object and obtain MessageFactory
      try {
         service = new BookOrderImpl();
         messageFactory = MessageFactory.newInstance();
      }

      // handle exception in creating MessageFactory
      catch ( Exception exception ) {
         exception.printStackTrace();
      }

   } // end method init

   // container invokes this method upon receiving SOAP message
   public SOAPMessage onMessage( SOAPMessage message )
   {
      // call Book Order service and return result to sender
      try {

         // obtain references to response message elements
         SOAPPart part = message.getSOAPPart();
         SOAPEnvelope envelope = part.getEnvelope();
         SOAPBody body = envelope.getBody();

         // obtain Iterator of all child elements of element Body
         Iterator bodyChildElements = body.getChildElements();

         bodyChildElements.next(); // skip first element

         // extract element order from SOAP message element Body
         SOAPBodyElement orderElement =
            ( SOAPBodyElement ) bodyChildElements.next();

         // get order element's children elements
         Iterator orderChildren = 
            orderElement.getChildElements();

          orderChildren.next(); // skit first element

         // extract SOAPElement that contains isbn
         SOAPElement isbnElement = 
            ( SOAPElement ) orderChildren.next();
         String isbn = isbnElement.getValue();

         bodyChildElements.next(); // skip third element

         // get customer element's children elements
         SOAPBodyElement customerElement = 
            ( SOAPBodyElement ) bodyChildElements.next();

         Iterator customerChildren = 
            customerElement.getChildElements();

         Hashtable customerValues = new Hashtable();
         int count = 0;

         // store customer children values in Hashtable
         while ( customerChildren.hasNext() && count <= 8 ) {

            customerChildren.next(); // skip TextImpl Element
            count++;

            SOAPElement child =
               ( SOAPElement ) customerChildren.next();
            String elementName = 
              child.getElementName().getLocalName();
            String elementValue = child.getValue();
            customerValues.put( elementName, elementValue );
         }

         // create Customer from customer element's children
         Customer customer = new Customer();
         customer.setFirstName( 
            ( String ) customerValues.get( "firstName" ) ); 
         customer.setLastName( 
            ( String ) customerValues.get( "lastName" ) );
         customer.setEmailAddress( 
          ( String ) customerValues.get( "emailAddress" ) );
         customer.setStreetAddress( 
            ( String ) customerValues.get( "streetAddress" ) );
         customer.setCity( 
            ( String ) customerValues.get( "city" ) );
         customer.setState( 
            ( String ) customerValues.get( "state" ) ); 
         customer.setZipCode( 
            ( String ) customerValues.get( "zipCode" ) );
         customer.setCountry( 
            ( String ) customerValues.get( "country" ) );
         customer.setCreditCardNumber( 
            ( String ) customerValues.get( "creditCardNumber" ) );

         // invoke Web service
         service.placeOrder( isbn, customer );

         // return empty SOAP response
         return messageFactory.createMessage();
      }

      // handle exception in invoking Book Order Web service
      catch ( Exception exception ) {
         exception.printStackTrace();
         return null;
      }

   } // end method onMessage

} // end class BookOrderServlet

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -