Creating Web services to your web application with Axis
Table of content
1. Create Service
2. Create server-config.wsdd
3. Config web.xml
4. Copy libraly to WEB-INF\lib
1. Create Service
a. Create Service
|
package com.arg.sme.regis.webservices; import com.arg.sme.regis.models.IdentityManager; import com.arg.sme.regis.models.user.RegisteredMember; import javax.jws.WebMethod; import javax.jws.WebService; import java.util.*; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @WebService public class MemberServices { private static Log log = LogFactory.getLog(MemberServices.class); @WebMethod public String testService(String input) { log.info("into test Service"); return "input parameter :" + input; } @WebMethod public String testService2() { log.info("into test Service2"); return "Welcome to test Service 2"; } @WebMethod public RegisteredMember[] getListRegisteredMembers(Date date) { log.info("---getListRegisteredMembers : date :" + date); List<RegisteredMember> registeredmembers = new ArrayList<RegisteredMember>(); for (Iterator itr = IdentityManager.getInstance().getListRegisteredMembers(date); itr.hasNext();) { Object[] objs = (Object[]) itr.next(); RegisteredMember registeredmember = new RegisteredMember(); registeredmember.setIdentityID((Long) objs[0]); registeredmember.setName((String) objs[1]); registeredmember.setCreatedDate((Date) objs[2]); registeredmembers.add(registeredmember); } return registeredmembers.toArray(new RegisteredMember[0]); } @WebMethod public RegisteredMember[] getListRegisteredMembers(Integer number, Date date) { log.info("---getListRegisteredMembers : number =" + number + " : date =" + date); List<RegisteredMember> registeredmembers = new ArrayList<RegisteredMember>(); for (Iterator itr = IdentityManager.getInstance().getListRegisteredMembers(number, date); itr.hasNext();) { Object[] objs = (Object[]) itr.next(); RegisteredMember registeredmember = new RegisteredMember(); registeredmember.setIdentityID((Long) objs[0]); registeredmember.setName((String) objs[1]); registeredmember.setCreatedDate((Date) objs[2]); registeredmembers.add(registeredmember); } return registeredmembers.toArray(new RegisteredMember[0]); } } |
b. Create Bean
|
package com.arg.sme.regis.models.user; import java.io.Serializable; import java.util.Date; public class RegisteredMember implements Serializable { private Long identityID; private String name; private Date createdDate; public Long getIdentityID() { return identityID; } public void setIdentityID(Long identityID) { this.identityID = identityID; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Date getCreatedDate() { return createdDate; } public void setCreatedDate(Date createdDate) { this.createdDate = createdDate; } public String toString() { return "RegisteredMember{" + "identityID=" + identityID + ", name='" + name + '\'' + ", createdDate=" + createdDate + '}'; } } |
2. Create server-config.wsdd into
WEB-INF
|
<?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="sendMultiRefs" value="true"/> <parameter name="disablePrettyXML" value="true"/> <parameter name="adminPassword" value="admin"/> <parameter name="dotNetSoapEncFix" value="true"/> <parameter name="enableNamespacePrefixOptimization" value="false"/> <parameter name="sendXMLDeclaration" value="true"/> <parameter name="sendXsiTypes" value="true"/> <parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/> <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=".jwr"/> </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="MemberServices" provider="java:RPC"> <parameter name="allowedMethods" value="*"/> <parameter name="className" value="com.arg.sme.regis.webservices.MemberServices"/> <beanMapping qname="myNS:RegisteredMember" xmlns:myNS="urn:RegisteredMember" languageSpecificType="java:com.arg.sme.regis.models.user.RegisteredMember"/> </service>
<service name="SOAPMonitorService" provider="java:RPC"> <parameter name="allowedMethods" value="publishMessage"/> <parameter name="scope" value="Application"/> <parameter name="className" value="org.apache.axis.monitor.SOAPMonitorService"/> </service> <handler name="soapmonitor" type="java:org.apache.axis.handlers.SOAPMonitorHandler"> <parameter name="wsdlURL" value="/axis/SOAPMonitorService-impl.wsdl"/> <parameter name="serviceName" value="SOAPMonitorService"/> <parameter name="namespace" value="http://tempuri.org/wsdl/2001/12/SOAPMonitorService-impl.wsdl"/> <parameter name="portName" value="Demo"/> </handler> <transport name="http"> <requestFlow> <handler type="URLMapper"/> <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/> <!--comment following line for REMOVING wsdl spying via SOAPMonitor--> <handler type="soapmonitor"/> </requestFlow> <responseFlow> <!--comment following line for REMOVING wsdl spying via SOAPMonitor--> <handler type="soapmonitor"/> </responseFlow> <parameter name="qs:list" value="org.apache.axis.transport.http.QSListHandler"/> <parameter name="qs:wsdl" value="org.apache.axis.transport.http.QSWSDLHandler"/> <parameter name="qs.list" value="org.apache.axis.transport.http.QSListHandler"/> <parameter name="qs.method" value="org.apache.axis.transport.http.QSMethodHandler"/> <parameter name="qs:method" value="org.apache.axis.transport.http.QSMethodHandler"/> <parameter name="qs.wsdl" value="org.apache.axis.transport.http.QSWSDLHandler"/> </transport> <transport name="local"> <responseFlow> <handler type="LocalResponder"/> </responseFlow> </transport> </deployment>
|
3. Config web.xml
|
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd"> <web-app> <!--Action Servlet with Axis --> <servlet> <servlet-name>AxisServlet</servlet-name> <display-name>DWR Servlet</display-name> <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class> </servlet> <servlet> <servlet-name>AdminServlet</servlet-name> <display-name>Axis Admin Servlet</display-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> <display-name>SOAPMonitorService</display-name> <servlet-class>org.apache.axis.monitor.SOAPMonitorService</servlet-class> <init-param> <param-name>SOAPMonitorPort</param-name> <param-value>5101</param-value> </init-param> <load-on-startup>100</load-on-startup> </servlet>
<!--Axis Mapping-->
<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> <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>
</web-app> |
4. Copy libraries from Axis 1.4\lib (you can download it from http://ws.apache.org/axis/ ) to WEB-INF\lib
· axis.jar
· axis-ant.jar
· commons-discovery-0.2.jar
· commons-logging-1.0.4.jar
· jaxrpc.jar
· log4j-1.2.8.jar
· saaj.jar
· wsdl4j-1.5.1.jar