Java Apache Axis2 web services client examples advanced
Summarize
Summary of Java Apache Axis2 web services client examples advanced
This content provides advanced examples and guidance on creating and using a Java Apache Axis2 client to consume ServiceNow SOAP web services. Axis2 is a Java-based SOAP engine framework for building SOAP clients, servers, or gateways. The instructions target system administrators with some Java development experience.
Show less
Prerequisites and Setup
- Java JDK version 1.4.2 or higher is required.
- Axis2 version 1.0 or higher is necessary.
- Eclipse SDK (version 3.4.2 used in examples) is optional but recommended for managing source code and executing web requests.
Steps to Create an Axis2 Client
- Create a new Java project in Eclipse, specifying the correct JRE version matching your Java installation.
- Generate Axis2 client code by running
wsdl2javafrom the command line, pointing to the ServiceNow WSDL URL or a local WSDL file. - The generated Stub and CallbackHandler classes will appear in your project after refreshing in Eclipse.
Basic Authentication Setup
Configure HTTP basic authentication in your Axis2 client using HttpTransportProperties.Authenticator by setting the ServiceNow username and password. Then assign this authenticator to the service client options to enable authenticated requests.
Axis2 Version Compatibility and Chunking
- Axis2 versions 1.1 and higher enable HTTP chunking by default.
- ServiceNow does not support HTTP chunking, so it must be disabled either:
- At deployment time by removing or commenting out the
<parameter name="Transfer-Encoding">chunked</parameter>from theAxis2.xmlconfiguration file. - At runtime by setting the client option
HTTPConstants.CHUNKEDproperty tofalse.
Creating Unique Package Names for Generated Code
Use the Axis2 namespace2package (ns2p) parameter when running wsdl2java to assign unique Java package names based on the WSDL namespace. This helps avoid namespace collisions in generated code.
Example command syntax for this is:
wsdl2java.bat -u -p <project package> -ns2p <namespace>=<package name> -uri <WSDL URL or file>
What ServiceNow Customers Can Expect
- Clear instructions to set up a Java Axis2 client for consuming ServiceNow SOAP APIs with authentication.
- Guidance on Axis2 configuration nuances such as disabling HTTP chunking for compatibility.
- Techniques to organize generated client code with custom package namespaces for maintainability.
Examples showing how to construct and use an Axis2 client to consume a ServiceNow Web Service.
Axis is essentially a SOAP engine -- a framework for constructing SOAP processors such as clients, servers, or gateways. The current version of Axis is written in Java. This content is intended for system admins with a light development background in Java. To begin you would need Java JDK version 1.4.2 or higher and Axis2 version 1.0 or higher.
Create a Java Project
- Open Eclipse and from the menu select .
- Give the project a name.
- Verify that the correct JRE is specified.
- If using wsdl2java run "java -version" on the command line and this will be the version to specify for the project specific JRE.
- If using the Axis2 Codegen plugin use default JRE.
Figure 1. Java Project
Generate your Axis2 client code
- From a command line in the bin directory of the axis
folder:
./wsdl2java.sh -uri https://<instance name>.service-now.com/incident.do?WSDL -o /glide/workspace/TestWebService/ - In the above example:
- The "-uri" is either the path where you have saved a copy of the wsdl to either ".wsdl" or ".xml", or the URL the WSDL resides at.
- The "-o" is the path where you want the files to be written out to. If not specified, the files will be written out to the current bin location.
- In Eclipse refresh the project and the generated Stub and CallbackHandler should now be
displayed
Figure 2. Axis Stub
Basic Authentication
HttpTransportProperties.Authenticator basicAuthentication = new HttpTransportProperties. Authenticator ( ) ;
basicAuthentication. setUsername ( "admin" ) ;
basicAuthentication. setPassword ( "admin" ) ;
...
ServiceNowStub proxy = new ServiceNowStub ( ) ;
...
proxy._getServiceClient ( ). getOptions ( ). setProperty (org. apache. axis2. transport. http. HTTPConstants. AUTHENTICATE, basicAuthentication ) ;
Compatibility with Axis2 Versions 1.1 and higher
- Deployment time: One can disable HTTP chunking by removing or commenting out the following
element from
Axis2.xml
<parameter name= "Transfer-Encoding" >chunked</parameter> - Runtime: User can disable the chunking using following property set in Client or Stub,
versions 1.1.1 and higher
only
options.setProperty (org. apache. axis2. transport. http. HTTPConstants. CHUNKED, Boolean. FALSE ) ;
Creating Unique Packages
<Axis path>\bin\wsdl2java.bat -u -p cr2 -ns2p <namespace>=<package name> -uri <wsdl to convert><Axis path>\bin\wsdl2java.bat -u -p cr2 -ns2p http://www.service-now.com/change_request=my.change_request -uri change_request