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

📄 booktitleproxyservlet.java

📁 java web services how to program
💻 JAVA
字号:
// Fig. 14.7: BookTitleProxyServlet.java.// BookTitleProxyServlet uses JAXM and SAAJ to invoke the Book// Titles Web service.package com.deitel.jws1.j2me.servlet;// Java core packagesimport java.io.*;import java.util.Iterator;// Java extension packagesimport javax.servlet.*;import javax.servlet.http.*;import javax.xml.soap.*;import javax.xml.messaging.*;public class BookTitleProxyServlet extends HttpServlet {   private SOAPConnectionFactory soapConnectionFactory;   private URLEndpoint urlEndpoint;   private MessageFactory messageFactory;   // initialize BookTitleProxyServlet   public void init() throws ServletException   {      // create factory objects      try {         // factory for establishing point-to-point connections         soapConnectionFactory =             SOAPConnectionFactory.newInstance();         // factory for building SOAP messages         messageFactory = MessageFactory.newInstance();      }      // handle exception in initializing factory objects      catch ( SOAPException exception ) {         throw new ServletException( exception.getMessage() );      }      String endpoint =          getServletConfig().getInitParameter( "SERVICE_URL" );      // define Web-service URL      urlEndpoint = new URLEndpoint( endpoint );   } // end constructor   // use JAXM to invoke remote Web service   public void doGet( HttpServletRequest request,       HttpServletResponse response ) throws ServletException,      IOException   {      // invoke Web service and convert result to String array      try {         SOAPMessage responseMessage = sendSoapRequestMessage();         // store response message in String array         String titles[] =             handleSoapResponseMessage( responseMessage );         DataOutputStream out = new DataOutputStream(             new BufferedOutputStream(                response.getOutputStream() ) );         // send String to client         for ( int i = 0; i < titles.length; i++ ) {            for ( int j = 0; j < titles[ i ].length(); j++ )               out.writeChar( titles[ i ].charAt( j ) );            out.writeChar( '\n' );         }         out.close();      }      // handle exception in sending or receiving SOAP message      catch( SOAPException exception ) {         throw new IOException( exception.getMessage() );      }      // handle exception in populating bookTitles String array      catch ( ArrayIndexOutOfBoundsException exception ) {         throw new IOException( exception.getMessage() );      }   } // end method doGet   // invoke remote Web service by sending SOAP request   private SOAPMessage sendSoapRequestMessage()      throws SOAPException   {      // use SOAPConnectionFactory to create SOAP connection      SOAPConnection soapConnection =             soapConnectionFactory.createConnection();      // use MessageFactory to create SOAP message      SOAPMessage soapRequestMessage =          messageFactory.createMessage();      // send SOAP message to Web service      SOAPMessage soapResponseMessage = soapConnection.call(          soapRequestMessage, urlEndpoint );      soapConnection.close();      return soapResponseMessage;   } // end method sendSoapRequestMessage   // convert SOAP message returned by Web service to array of    // Strings, in which each String represents a book title   private String[] handleSoapResponseMessage(       SOAPMessage soapResponseMessage ) throws SOAPException   {      // obtain references to response message elements      SOAPPart responsePart = soapResponseMessage.getSOAPPart();      SOAPEnvelope responseEnvelope = responsePart.getEnvelope();      SOAPBody responseBody = responseEnvelope.getBody();      // obtain Iterator of all child elements of element Body      Iterator responseBodyChildElements =          responseBody.getChildElements();      // extract element titles from SOAP message element Body      SOAPBodyElement titlesElement =         ( SOAPBodyElement ) responseBodyChildElements.next();      // extract number of book titles from element Titles      int bookCount = Integer.parseInt(          titlesElement.getAttributeValue(            responseEnvelope.createName( "bookCount" ) ) );      // create array of Strings that represent book titles      String bookTitles[] = new String[ bookCount ];      // use Iterator to obtain child elements of element Titles      Iterator titleIterator =          titlesElement.getChildElements(             responseEnvelope.createName( "title" ) );      // store each book title in bookTitles String array      int i = 0;      while ( titleIterator.hasNext() ) {         SOAPElement titleElement =            ( SOAPElement ) titleIterator.next();         bookTitles[ i++ ] = titleElement.getValue();      }      return bookTitles;   } // end method handleSoapResponseMessage} // end class BookTitleProxyServlet

⌨️ 快捷键说明

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