1. Create a web project Calculator.
2. Create a class Addition.java
package org.me.calculator;
public class Addition {
public int add() {
return 20;
}
public String getXML(String xml) {
return "
}
}
3. Edit web.xml under WEB-INF as add
<listener>
<listener-class>
org.apache.axis.transport.http.AxisHTTPSessionListener
</listener-class>
</listener>
<servlet>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>
org.apache.axis.transport.http.AxisServlet
</servlet-class>
</servlet>
<servlet>
<servlet-name>AdminServlet</servlet-name>
<servlet-class>
org.apache.axis.transport.http.AdminServlet
</servlet-class>
<load-on-startup>100</load-on-startup>
</servlet>
<servlet>
<servlet-name>SOAPMonitorService</servlet-name>
<servlet-class>
org.apache.axis.monitor.SOAPMonitorService
</servlet-class>
<init-param>
<param-name>SOAPMonitorPort</param-name>
<param-value>5001</param-value>
</init-param>
<load-on-startup>100</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/servlet/AxisServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>*.jws</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>SOAPMonitorService</servlet-name>
<url-pattern>/SOAPMonitor</url-pattern>
</servlet-mapping>
<!-- uncomment this if you want the admin servlet -->
<!--
<servlet-mapping>
<servlet-name>AdminServlet</servlet-name>
<url-pattern>/servlet/AdminServlet</url-pattern>
</servlet-mapping>
-->
<mime-mapping>
<extension>wsdl</extension>
<mime-type>text/xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xsd</extension>
<mime-type>text/xml</mime-type>
</mime-mapping>
4. Create a file server-config.wsdd in WEB-INF, add the following content.
<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<globalConfiguration>
<parameter name="adminPassword" value="admin"/>
<parameter name="attachments.Directory" value="./attachments"/>
<parameter name="attachments.implementation"
value="org.apache.axis.attachments.AttachmentsImpl"/>
<parameter name="sendXsiTypes" value="true"/>
<parameter name="sendMultiRefs" value="true"/>
<parameter name="sendXMLDeclaration" value="true"/>
<parameter name="axis.sendMinimizedElements" value="true"/>
<requestFlow>
<handler type="java:org.apache.axis.handlers.JWSHandler">
<parameter name="scope" value="session"/>
</handler>
<handler type="java:org.apache.axis.handlers.JWSHandler">
<parameter name="scope" value="request"/>
<parameter name="extension" value=".jws"/>
</handler>
</requestFlow>
</globalConfiguration>
<handler name="LocalResponder"
type="java:org.apache.axis.transport.local.LocalResponder"/>
<handler name="URLMapper"
type="java:org.apache.axis.handlers.http.URLMapper"/>
<handler name="Authenticate"
type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
<service name="AdminService" provider="java:MSG">
<parameter name="allowedMethods" value="AdminService"/>
<parameter name="enableRemoteAdmin" value="false"/>
<parameter name="className" value="org.apache.axis.utils.Admin"/>
<namespace>http://xml.apache.org/axis/wsdd/</namespace>
</service>
<service name="Version" provider="java:RPC">
<parameter name="allowedMethods" value="getVersion"/>
<parameter name="className" value="org.apache.axis.Version"/>
</service>
<service name="Addition" provider="java:RPC">
<parameter name="className" value="org.me.Addition"/>
<parameter name="allowedMethods" value="*"/>
<!--<parameter name="allowedMethods" value="getXML"/> -->
</service>
<transport name="http">
<requestFlow>
<handler type="URLMapper"/>
<handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
</requestFlow>
</transport>
<transport name="local">
<responseFlow>
<handler type="LocalResponder"/>
</responseFlow>
</transport>
</deployment>
5. Add the required JARs into the web project.
6. Deploy the web project and run using http://localhost:8080/Calculator/services/Addition. You can see the wsdl through http://localhost:8080/Calculator/services/Addition?wsdl
You can also run the Addition.java web service without using server-config.wsdd. The steps are mentioned below:
1. Create Addition.java as mentioned above.
2. Save Addition.java as Addition.jws and put this Addition.jws file into web folder (web root, where jsp and WEB-INF reside).
3. Deploy the web project and run using http://localhost:8080/Calculator/Addition.jws. You can see the wsdl through http://localhost:8080/Calculator/Addition.jws?wsdl
Now, if you have a web service which will return set of custom objects, then how to configure it?
Lets take an examlple. Suppose you have a class Manager.java
package company;
public class Manager {
/**
* Get all employees
* @return array of Employee array
*/
public Employee[] getAllEmployees() {
List
empList.add(new Employee("Joe", 2000, "Engineer"));
return (Employee[])empList.toArray();
}
/**
* Save employees
* @param employees array of Employee objects
*/
public void setEmployee(Employee[] employees) {
}
}
Employee.java:
package company;
public class Employee {
private String name;
private double salary;
private String designation;
public Employee() { }
public Employee(String name, double salary, String designation) {
this.name = name;
this.salary = salary;
this.designation = designation;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public String getDesignation() {
return designation;
}
public void setDesignation(String designation) {
this.designation = designation;
}
}
Then you need to update the server-config.wsdd. Add below lines:
<service name="EmployeeWS" provider="java:RPC">
<parameter name="allowedMethods" value="*"/>
<parameter name="className" value="company.Manager"/>
<beanMapping languageSpecificType="java:company.Employee"
qname="ns1:Employee" xmlns:ns1="urn:company"/>
</service>