advertisement
javaboutique
Search Tips
Articles  |   Tutorials  |   Reviews  |   Tools  |   by Category  |   by Date  |   by Name  |   Submit  |   Source  |   Forums  |  
javaboutique
Browse DevX


Partners & Affiliates











advertisement

Tutorials : Using SOAP with Java :

The client

Now we come to the most important part of writing the client. As described in previous sections, the client now has the added responsibilities of defining the type mappings and the Serializer/DeSerialzer classes to be used and set them correctly in the SOAP mapping registry.

public static void main(String[] args)
    {
        String urlString = args[0];
        String name = args[1];
        SoapClient client = new SoapClient(urlString);
        System.out.println("*** Assigned the url for the sopa router as: "+urlString);
        /** construct a Person object**/
        Person nameObject = new Person();
        nameObject.setName(name);
        nameObject.setAge(22);

Now we can prepare the Call object as usual.

Call call = new Call();
       call.setTargetObjectURI("urn:greetingService");
       call.setMethodName("sayGreeting");
       call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);

Here we will define and setup the mapping registry. We first create a new instance of the SOAPMappingRegistry.

    //create the type mapping registry
           SOAPMappingRegistry smr = new SOAPMappingRegistry();

Now we create a new instance of the BeanSerializer class.

//new instance of the serializer class
BeanSerializer bsr = new BeanSerializer();

We will create a QName object to represent the compound Person data-type.

//create a qname object
QName qn = new QName("urn:greetingService", "sam.soap.client.Person");

Now we will create the type mapping by invoking the maptype method on the SOAPMappingRegistry object.

//map the type
smr.mapTypes
   (Constants.NS_URI_SOAP_ENC, qn, sam.soap.client.Person.class, bsr, bsr);

The mapTypes method accepts the encoding style, the QName object, the class of the java bean , serializer class and the deserializer class as the arguments. If you recall the discussion on the mechanism of the serialization, then you will at once understand that these parameters are used to construct the four Hashtables defined.

Now we set the type mapping to the SOAP mapping registry.

//telling the call object to use this mapping
           call.setSOAPMappingRegistry(smr);

We will create a Parameter object with the Person object and pass it to the call object subsequently.

//creating the parameters
        Vector v = new Vector();
        Parameter param1 = 
 new Parameter("name", sam.soap.client.Person.class, nameObject, null);
        v.addElement(param1);
        call.setParams(v);

As you have noticed that the parameter object now holds a compound type Person object. The Person object in turn holds the value for its properties name and age. If we now invoke the remote method, we will see the required result.

//invoke the soap method
      System.out.println("invoking....");
      Response res = call.invoke(new URL(client.urlString), "");
      
      //if there is no fault in the method invocation, get the result
      if( res.generatedFault() ==false)
      {
          Parameter retValue = res.getReturnValue();
          Object value = retValue.getValue();
          System.out.println(value);
      }else
      {
          System.out.println("The fault is: "+res.getFault().getFaultString());
      }

If you deploy the service properly with the new deployment descriptor and run the client you will get the desired result.

Conclusion

In this installment we have examined how to use customised Java beans as parameters to the SOAP Remote Procedure Call. We have also analysed the underlying principles and protocols of Serialization mechanism underlying SOAP. The world is much brighter for us. But surely if you are an astute reader, you might have figured out that the world may be full of more complex objects which are more than Java beans. Next month we will see how to write our own Serializers and will also learn some exciting new aspects of SOAP. Happy coding.

How to Add Java Applets to Your Site

New on the Java Boutique:

New Review:

Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling API boasts simplicity, ease-of-integration, a well-rounded feature set, and it's free!

New Applet:

Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA sequences into three useful formats.

Elsewhere on internet.com:

WebDeveloper Java
Lots of Java information on webdeveloper.com

WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.

ScriptSearch Java
Hundreds of free Java code files to download.

jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.

 Microsoft Visual Studio 2010 Showcase
 Avaya Developer Showcase
 MSDN Spotlight
 PHP for Windows Showcase
XML error: undefined entity at line 39
advertisement
Receive Articles via our XML/RSS feed
Receive Articles via our XML/RSS feed

JavaBytes
Internet Cyclone
This powerful, easy-to-use, internet optimizer is for Windows 95, 98, ME, NT, 2000 and XP. It's designed to automatically optimize your Windows settings, boosting your Internet connection up to 200%.

Windows 7: From Beta to Final Code in One Year
Google Shows Off Chrome OS, Releases Source
Microsoft Shows Off Silverlight 4, IE9 Plans
Metasploit Expands Vulnerability Test Framework
HyperCard Reborn?
Fedora 12 Takes Aim at Linux Networking
Top Supercomputer Nearly Doubles in Speed
Fedora 12 Linux Tackles Virtualization
Apple Gives iPhone Developers App Status Tracker
Novell Sets OpenSUSE 11.2 Free

Creating Custom Export Filters for StarOffice with XSLT
WPF Wonders: Using DataTemplates
Crystal Reports Family Offers Options for Developers
Avaya Aura Session Manager video
Avaya Aura Overview video
Exploring HTML 5's Audio/Video Multimedia Support
Overriding Virtual Functions? Use C++0x Attributes to Avoid Bugs.
Understanding the Cloud Computing Security Vulnerabilities
Cisco and IBM Target a Greener World
Upgrade to Visual Studio 2010 with the Ultimate Offer

Advertising Info  |   Member Services  |   Contact Us  |   Help  |   Feedback  |   Site Map  |   Network Map  |   About

internet.commediabistro.comJusttechjobs.comGraphics.com

Search:

WebMediaBrands Corporate Info

Legal Notices, Licensing, Permissions, Privacy Policy.
Advertise | Newsletters | Shopping | E-mail Offers | Freelance Jobs