Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

...

This tutorial will take you through the steps required in developing, deploying and testing a Web Service Client in Apache Geronimo for a web services which are already deployed on the server

...

For new users, Web Services can be created in two ways:

  • Bottom Up Web Service - creating web services from Java classes.
  • Top Down Web Service - creating web services from WSDL document.

This tutorial will help you in creating a Top Down Web Service from WSDL document which is already deployed on server.

...

Details on installing eclipse are provided in the Development environment section.

...

...

This tutorial assumes that you have completed the Developing a JAX-WS POJO Web Service tutorial. Here we will try to develop the client for the web service deployed in the above mentioned tutorial.

...

This tutorial will take you through the following steps:

...

...

Web based Client

The following steps will help you in creating a Web based Client for a JAX-WS Web Service which is already deployed on the server.

...

We need to create Service Endpoint Interface based on the WSDL document to use it in out JSP's. Luckily in Geronimo this can be automated using the jaxws-tools utility provided by Geronimo.

...

.

...

...

Please take care that jaxws-tools.bat utility in server's bin directory may not work in old versions of Apache Geronimo.
Try using the latest version of Geronimo i.e v2.1.1 .

...

  • Open a command prompt and point it to the bin directory of server installation.

  • We will use the jaxws-tools utility provided in the server's bin directory to generate client stubs.

  • Use the following command to generate the necessary stubs that are needed to consume the web service.

...

...

  • Now all the stubs should have been created and placed in C:\WSDL directory. We will be needing only the class ConverterPortType for accessing Web Service.



...

  • Right Click the jaxws-converterclient, and Select New->JSP

  • Name the jsp as index.jsp and click Finish

  • Add the following code to the index.jsp

...

...

  • Right click again and add another jsp named result.jsp

  • Add the following code to result.jsp

...

This concludes the development section of our web based client.

...

  • In our previous result.jsp we accessed the Web Service by instantiating the Service class. This can slightly overhead the client application.

  • We can also use JNDI Naming service to directly access our web service without instantiating any Service class.

  • We need to add a service-ref element to web.xml to give necessary information about WSDL file location, Service name etc .,

...

...

  • Let us walkthrough the elements that we added to web.xml
    • service-ref-name - This is the name by which JNDI identifies our deployed service. The location that these services are located are java:comp/env/<service-ref-name>
    • service-interface - This is the interface which client uses to access the web service and create necessary stubs under covers. This interface should compulsorily extend either javax.xml.ws.Service or javax.xml.rpc.Service. Observer that this is not the Service-Endpoint Interface that we used to deploy the service.
    • wsdl-file - The location of WSDL file specified the location of deployed web service. Suppose the web service is deployed at *http://localhost:8080/jaxws-converter/converter*, then the WSDL file is located at *http://localhost:8080/jaxws-converter/converter?wsdl*
  • The changes required in accessing the service are as follows:

...

Deploying and Testing the Web Client

...

Note that we accessed the webservice in the jsp by creating a service, and then retrieving the Converter port from the WSDL document.

...

  • Create a Java Project
    • Select File->New->Project

    • In the popup window select Java->Java Project and then click Next

    • Name the project as jaxws-converterpojoclient and click Finish in the New Java Project dialog.

  • Copy the files Converter.java and ConverterPortType.java into the appropriate package.

  • Add another class with the name ConverterClient.java in the same package.

  • Add the following code to the ConverterClient.java

...

...

This completes the development section of our POJO client

Adding necessary jar files to the class path

...

...

Now our Java project might show many errors and even if we resolve the errors the application may not run properly. This is due to the missing jar files required to access and understand SOAP messages sent by web service.

...

  • Right click the jaxws-converterpojoclient project and then select Properties

  • Select Java Build Path and then go to Libraries tab



  • Click on Add External JARS and then add the axis2-adb-1.3.jar from the location <GERONIMO_INSTALL_DIR>/repository/org/apache/axis2/axis2-adb/1.3/ and then click Open Infotitle Version Numbers

    The version numbers may differ slightly. It wont matter much.

  • Repeat the above step for the following external JARS

...

...

axis2-adb-1.3.jar - <GERONIMO_INSTALL_DIR>/repository/org/apache/axis2/axis2-adb/1.3/axis2-adb-1.3.jar
axis2-java2wsdl-1.3.jar - <GERONIMO_INSTALL_DIR>\repository\org\apache\axis2\axis2-java2wsdl\1.3\axis2-java2wsdl-1.3.jar
axis2-jaxws-1.3.jar - <GERONIMO_INSTALL_DIR>\repository\org\apache\axis2\axis2-jaxws\1.3\axis2-jaxws-1.3.jar
axis2-kernel-1.3.jar - <GERONIMO_INSTALL_DIR>\repository\org\apache\axis2\axis2-kernel\1.3\axis2-kernel-1.3.jar
axis2-metadata-1.3.jar - <GERONIMO_INSTALL_DIR>\repository\org\apache\axis2\axis2-metadata\1.3\axis2-metadata-1.3.jar
axis2-saaj-1.3.jar - <GERONIMO_INSTALL_DIR>\repository\org\apache\axis2\axis2-saaj\1.3\axis2-saaj-1.3.jar
axiom-api-1.2.5.jar - <GERONIMO_INSTALL_DIR>\repository\org\apache\ws\commons\axiom\axiom-api\1.2.5\axiom-api-1.2.5.jar
axiom-dom-1.2.5.jar - <GERONIMO_INSTALL_DIR>\repository\org\apache\ws\commons\axiom\axiom-dom\1.2.5\axiom-dom-1.2.5.jar
axiom-impl-1.2.5.jar - <GERONIMO_INSTALL_DIR>\repository\org\apache\ws\commons\axiom\axiom-impl\1.2.5\axiom-impl-1.2.5.jar
XmlSchema-1.3.1.jar - <GERONIMO_INSTALL_DIR>\repository\org\apache\ws\commons\schema\XmlSchema\1.3.1\XmlSchema-1.3.1.jar
neethi-2.0.jar - <GERONIMO_INSTALL_DIR>\repository\org\apache\neethi\neethi\2.0\neethi-2.0.jar
wsdl4j-1.6.1.jar - <GERONIMO_INSTALL_DIR>\repository\wsdl4j\wsdl4j\1.6.1\wsdl4j-1.6.1.jar
xml-resolver-1.1.jar - <GERONIMO_INSTALL_DIR>\repository\xml-resolver\xml-resolver\1.1\xml-resolver-1.1.jar
xml-beans-2.3.0.jar - <GERONIMO_INSTALL_DIR>\repository\org\apache\xmlbeans\xmlbeans\2.3.0\xmlbeans-2.3.0.jar
commons-codec-1.3.jar - <GERONIMO_INSTALL_DIR>\repository\commons-codec\commons-codec\1.3\commons-codec-1.3.jar
commons-httpclient-3.0.1.jar - <GERONIMO_INSTALL_DIR>\repository\commons-httpclient\commons-httpclient\3.0.1\commons-httpclient-3.0.1.jar
wstx-asl-3.2.1.jar - <GERONIMO_INSTALL_DIR>\repository\woodstox\wstx-asl\3.2.1\wstx-asl-3.2.1.jar

Also add Server Runtime Library to class path which reduces the effort for adding some more jars.

Note that these jars are used when JAX-WS Engine is configured as Axis2. If JAX-WS engine is configured as CXF the jars may differ slightly.

...

This completes the adding external JARs to the project

...

...

If you are running Java 6 you don't need to worry about the external JARs as they are all inbuilt into JRE 6. But you should copy all the files generated by wsimport command into appropriate packages as Runtime Modeller in Java 6 is slightly different.

...

Testing

  1. Now Right click the ConverterClient.class and select Run As->Run as Java Application

  2. Now enter the amount in the console window of Eclipse

  3. The output will be shown which is retrieved by accessing the methods of Web service.



...