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