WSDL Tutorials - Herong's Tutorial Examples - Version 2.03, by Dr. Herong Yang
XML Document Based Web Service Example
This section provides a tutorial example on how to use stub and data type classes generated by WSDL2Java to invoke an XML document based Web service.
The Web service used in the previous tutorial example was very simple. So let's try a harder one in this tutorial example.
The WSDL document is located at http://www.herongyang.com/Service/ Registration_WSDL_11_SOAP_11_Document.wsdl, which defines is an XML document based Web service with sub elements and attributes required for the SOAP Body element.
Step 1 is to generate stub and data type classes using WSDL2Java:
C:\herong>\local\axis2\bin\wsdl2java -uri http://www.herongyang.com /Service/Registration_WSDL_11_SOAP_11_Document.wsdl -o axis2 -d adb -s
Step 2 is to write a test program in the .\axis2\src folder:
C:\herong>cd axis2\src C:\herong\axis2\src>type Axis2StubRegistration.java /** * Axis2StubRegistration.java * Copyright (c) 2009 by Dr. Herong Yang, herongyang.com * All rights reserved */ import java.io.*; import java.util.*; import com.herongyang.www.service.*; import com.herongyang.www.service.RegistrationServiceStub.*; import org.apache.axis2.transport.http.*; class Axis2StubRegistration { public static void main(String[] args) { PrintStream out = System.out; try { // Creating the stub RegistrationServiceStub stub = new RegistrationServiceStub(); // Fixing org.apache.axis2.AxisFault: Transport error: // 411 Error: Length Required stub._getServiceClient().getOptions() .setProperty(HTTPConstants.CHUNKED,false); // Building the input parameter RegistrationRequest request = new RegistrationRequest(); request.setEvent("OpenGame"); request.setDate(new Date()); String[] guests = new String[2]; guests[0] = "Herong Yang"; guests[1] = "John Smith"; request.setGuest(guests); // Calling the operation RegistrationResponse response = stub.Registration(request); // Retrieving output parameter Confirmation_type0[] confirmation = response.getConfirmation(); out.println(confirmation[0].getEvent()+": " +confirmation[0].getGuest()); out.println(confirmation[1].getEvent()+": " +confirmation[1].getGuest()); } catch (Exception e) { e.printStackTrace(); } } }
Step 3 is to compile and run the test program:
C:\herong\\axis2\src>\local\jdk\bin\javac -Djava.ext.dirs=\local\axis2\lib\ com\herongyang\www\service\RegistrationServiceStub.java C:\herong\axis2\src>\local\jdk\bin\javac -Djava.ext.dirs=\local\axis2\lib\ Axis2StubRegistration.java C:\herong\axis2\src>\local\jdk\bin\java -Djava.ext.dirs=\local\axis2\lib\ Axis2StubRegistration org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Unexpected subelement Confirmation at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430) at com.herongyang.www.service.RegistrationServiceStub.fromOM (RegistrationServiceStub.java:2092) ...
Something is wrong here. Why I am getting "Unexpected subelement Confirmation" here? See next section for the explanation.
Last update: 2009.
Table of Contents
WSDL 2.0 Document Structure and Syntax
WSDL Version 2.0 Part 2: Adjuncts
WSDL 2.0 Document Examples with SOAP Binding
WSDL 20 Programming APIs and Testing Tools
WSDL 1.1 Document Structure and Syntax
WSDL 1.1 Binding Extension for SOAP 1.1
soapUI 3.0.1 - Web Service Testing Tool
WSDL 1.1 and SOAP 1.1 Examples - Document and RPC Styles
PHP SOAP Extension in PHP 5.3.1
Using WSDL in Perl with SOAP::Lite 0.710
Using WSDL Document in Java with Axis2 1.4.1
►Using WSDL2Java to Generate Web Service Stub Classes
Generating Client Side Stub Java Code
Using Stub and Data Type Classes
►XML Document Based Web Service Example
"Unexpected subelement ..." Error from the Stub Class
RPC Method Based Web Service Example
WSDL 1.1 Binding Extension for SOAP 1.2
WSDL 1.1 and SOAP 1.2 Examples - Document and RPC Styles