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

📄 booktitlesproxy.java

📁 java web services how to program
💻 JAVA
字号:
// Fig. 11.8: BookTitlesProxy.java.// Class BookTitlesProxy uses JAXM to invoke the Book Titles // Web service, which returns a list of available book titles.package com.deitel.jws1.jaxm.client;// Java core packagesimport java.io.*;import java.util.Iterator;import java.util.Properties;// Java extension packagesimport javax.xml.soap.*;import javax.xml.messaging.*;public class BookTitlesProxy {   private SOAPConnectionFactory soapConnectionFactory;   private URLEndpoint urlEndpoint;   private MessageFactory messageFactory;   // initialize BookTitlesProxy   public BookTitlesProxy() throws java.io.IOException   {      // create factory objects      try {         // factory for establishing point-to-point connections         soapConnectionFactory =             SOAPConnectionFactory.newInstance();         // factory for building SOAP messages         messageFactory = MessageFactory.newInstance();         // obtain URL of properties file         java.net.URL propertyURL = getClass().getResource(             "JAXMWebService.properties" );         // load properties file         Properties serviceProperties = new Properties();         serviceProperties.load( new FileInputStream(             propertyURL.getPath() ) );         // create endpoint using properties file         String endpoint = serviceProperties.getProperty(             "bookTitlesServiceURL" );         // define URL of Web-service provider         urlEndpoint = new URLEndpoint( endpoint );      }      // handle exception in initializing factory objects      catch ( SOAPException exception ) {         throw new IOException( exception.getMessage() );      }   } // end constructor   // use JAXM to invoke remote Web service   public String[] getBookTitles()   {      // invoke Web service and convert result to String array      try {         SOAPMessage response = sendSoapRequest();         // return SOAP response         return handleSoapResponse( response );      }      // handle exception in sending or receiving SOAP message      catch ( SOAPException exception ) {         return null;      }   } // end method getBookTitles   // invoke remote Web service by sending SOAP request   private SOAPMessage sendSoapRequest() throws SOAPException   {      // use SOAPConnectionFactory to create SOAP connection      SOAPConnection soapConnection =             soapConnectionFactory.createConnection();      // use MessageFactory to create SOAP message      SOAPMessage soapRequest = messageFactory.createMessage();      // send SOAP message to Web-service provider      SOAPMessage soapResponse = soapConnection.call(          soapRequest, urlEndpoint );      soapConnection.close();      return soapResponse; // return Web-service response   } // end method sendSoapRequest   // convert SOAP message returned by Web service to array of    // Strings, in which each String represents a book title   private String[] handleSoapResponse( SOAPMessage soapResponse )      throws SOAPException   {      // obtain references to response message elements      SOAPPart responsePart = soapResponse.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 handleSoapResponse} // end class BookTitlesProxy

⌨️ 快捷键说明

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