📄 bookorderservlet.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 + -