Creating Web services to your web application with Axis

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