WSO2 products are managed internally using SOAP Web services known as admin services. WSO2 products come with a management console UI, which communicates with these admin services to facilitate administration capabilities through the UI.There can be instances where you want to call back-end Web services directly. For example, in test automation, to minimize the overhead of having to change automation scripts whenever a UI change happens, developers prefer to call the underlying services in scripts. The topics below explain how you can discover and invoke these services from your applications.
Discovering the admin services
By default, the WSDLs of admin services are hidden from consumers. Follow the steps given below to discover them using the OSGi console.
carbon.xml file (from the
<ESB_HOME>/repository/confdirectory), and set the
Start the ESB:
Open a terminal and navigate to the
Execute the product startup script as explained below.
- On Windows:
- On Linux:
sh wso2server.sh -DosgiConsole
- On Windows:
- When the server starts, press the Enter/Return key on the keyboard several times to get the OSGI shell in the console.
- In the OSGi shell, type the following:
The admin services for your product will be listed on your console. For example, shown below is the list of admin services in the ESB.ESB admin services
Check the list of admin services shown above, and note that the URL of each admin service appears after the admin service's name. See the following example:
To see the service contract of an admin service, select the admin service's URL and then paste it into your browser with ?wsdl at the end. For example, if you want to access the
ModuleAdminServiceof the ESB, use the following URL:
When you are accessing an admin service in the ESB, note that you are using the 8243 port (assuming 0 port offset). However, you should be accessing the admin services via the management console port, which is 9443
After discovering admin service, you can restart the server without
Invoking an admin service
Admin services are secured using common types of security protocols such as HTTP basic authentication, WS-Security username token, and session-based authentication, to prevent anonymous invocations. For example, the
UserAdmin Web service is secured with HTTP basic authentication. To invoke an admin service, you can write your own client program using the Axis2 client API, or you can use an existing tool like SoapUI (4.5.1 or later), or wsdl2java.
Invoking an admin service involves the following steps:
- Authenticate yourself and get the session cookie.
- Access the back-end service.
Generating a client program to access admin services
To generate the stubs, you can write your own client program using the Axis2 client API, or use an existing tool like SoapUI (4.5.1 or later), or wsdl2java.
The wsdl2java tool, which comes with WSO2 products by default, hides all the complexity and presents you with a proxy to the back-end service. The stub generation happens during the project build process within the Maven POM files. It uses the Maven ant run plug-in to execute the wsdl2java tool.
You can also use the Java client program given here to invoke admin services. All dependency JAR files that you need to run this client are found in the
Authenticate the user
The example code below authenticates the user and gets the session cookie:
To resolve dependency issues, if any, add the following dependency JARs location to the class path:
AuthenticationAdminStub class requires
org.apache.axis2.context.ConfigurationContext as a parameter. You can give a null value there.
Generate the client stubs
https://localhost:<port>/services/ServiceAdmin) in the
service.xmlfile in the
META-INFfolder in the respective bundle that you find in the
The following sample code lists the back-end Web services: