axis 整合spring 开发

前两因项目要做个接口,以webservice方式传递数据.现把相关的步骤记录下:

首先当然是要下载axis.jar包,另外还有mail.jar包等以及spring的相关包(这个如果是spring做的项目的话,应该都有的.)

接下来为web.xml配置相关的数据:

web.xml

 

<servlet>
		<servlet-name>context</servlet-name>
		<servlet-class>
			org.springframework.web.context.ContextLoaderServlet
		</servlet-class>
		<load-on-startup>2</load-on-startup>
	</servlet>
	<!--  axis  Servlet  -->
	<servlet>
		<servlet-name>axis</servlet-name>
		<servlet-class>
			org.apache.axis.transport.http.AxisServlet
		</servlet-class>
		<load-on-startup>3</load-on-startup>
	</servlet>
    <servlet-mapping>
		<servlet-name>axis</servlet-name>
		<url-pattern>/servlet/AxisServlet</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>axis</servlet-name>
		<url-pattern>*.jws</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>axis</servlet-name>
		<url-pattern>/services/*</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>axis</servlet-name>
		<url-pattern>/ws/*</url-pattern>
	</servlet-mapping>

 

然后定义一个接口类:

public interface EiacService {
 
 public String doEiacServiceRetXML(String UID,String QUERYTYPE);
 
}

 接口实现类:

需继承ServletEndpointSupport 类,以方便调spring Bean

 

 package com.timeson.oa.webservice.impl;
import com.timeson.oa.webservice.EiacService;
import com.timeson.oa.hr.service.UserManager;
import com.timeson.oa.hr.model.SysUser;
import com.timeson.oa.workflow.service.TbEngineFilecommonManager;
import com.timeson.oa.workflow.model.PendingTask;
import org.springframework.remoting.jaxrpc.ServletEndpointSupport;
import javax.xml.rpc.ServiceException;
import java.util.List;
public class EiacServiceImpl extends ServletEndpointSupport implements EiacService
{
    private UserManager userMgr;
    private TbEngineFilecommonManager file;

    protected void onInit() throws ServiceException
    {
        //在Spring容器中获取Bean的实例
        userMgr = (UserManager) getApplicationContext().getBean("userManager");
        file = (TbEngineFilecommonManager) getApplicationContext().getBean("tbEngineFilecommonManager");
    }

    /**
     * 主入口方法
     *
     * @param UID
     * @param QUERYTYPE  1为发文,2为收文
     * @return xml
     */
    public String doEiacServiceRetXML(String UID, String QUERYTYPE)
    {
        StringBuilder result = new StringBuilder().append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
        result.append("<info>\n");
        try
        {
//            System.out.println("11111111111111 uid  " + UID + " dddd  ");
            if(UID != null && !"".equals(UID) && !"null".equals(UID))
            {
                //发文
                if(QUERYTYPE.equals("1"))
                {
                    List userList = userMgr.getEiacUsers(Integer.valueOf(UID));
                   //oa没能对应的帐号
                    if(userList.size() < 1)
                    {
                        result.append("<RETFLAG>0</RETFLAG>\n");
                        result.append("<RETERRORID>0</RETERRORID>\n");
                        result.append("<RETERRORINFO>OA系统中不存在对应帐号的用户。</RETERRORINFO>\n");
                        result.append("<RETURN_RESULT>没有待办</RETURN_RESULT>\n");
                    }
                    //有一个的时候
                    else if(userList.size() == 1)
                    {
                        SysUser sysUser = (SysUser) userList.get(0);
                        List fileList = file.GetPendingMaters(sysUser.getId().toString(), QUERYTYPE);
                        result.append("<RETFLAG>1</RETFLAG>\n");
                        result.append("<RETERRORID>1</RETERRORID>\n");
                        result.append("<RETERRORINFO>成功</RETERRORINFO>\n");
                        String resultList = resultList(fileList, sysUser.getId());
                        result.append(resultList);
                    }
                    //两个以个
                    else

                    {
                        result.append("<RETFLAG>1</RETFLAG>\n");
                        result.append("<RETERRORID>1</RETERRORID>\n");
                        result.append("<RETERRORINFO>成功</RETERRORINFO>\n");
                        for(int j = 0; j < userList.size(); j++)
                        {
                            SysUser sysUser = (SysUser) userList.get(j);
                            List fileList = file.GetPendingMaters(sysUser.getId().toString(), QUERYTYPE);
                            String resultList = resultList(fileList, sysUser.getId());
                            result.append(resultList);
                        }
                    }
                }
                //收文
                else if(QUERYTYPE.equals("2"))
                {
                    List userList = userMgr.getEiacUsers(Integer.valueOf(UID));
                    //oa没能对应的帐号
                    if(userList.size() < 1)
                    {
                        result.append("<RETFLAG>0</RETFLAG>\n");
                        result.append("<RETERRORID>0</RETERRORID>\n");
                        result.append("<RETERRORINFO>OA系统中不存在对应帐号的用户。</RETERRORINFO>\n");
                        result.append("<RETURN_RESULT>没有待办</RETURN_RESULT>\n");
                    }
                    //有一个的时候
                    else if(userList.size() == 1)
                    {
                        SysUser sysUser = (SysUser) userList.get(0);
                        List fileList = file.GetReadListOnEiac(sysUser.getId().toString(), QUERYTYPE);
                        result.append("<RETFLAG>1</RETFLAG>\n");
                        result.append("<RETERRORID>1</RETERRORID>\n");
                        result.append("<RETERRORINFO>成功</RETERRORINFO>\n");
                        String resultList = resultListOnRead(fileList, sysUser.getId());
                        result.append(resultList);
                    }
                     //两个以个
                    else
                    {
                        result.append("<RETFLAG>1</RETFLAG>\n");
                        result.append("<RETERRORID>1</RETERRORID>\n");
                        result.append("<RETERRORINFO>成功</RETERRORINFO>\n");
                        for(int j = 0; j < userList.size(); j++)
                        {
                            SysUser sysUser = (SysUser) userList.get(j);
                            List fileList = file.GetReadListOnEiac(sysUser.getId().toString(), QUERYTYPE);
                            String resultList = resultListOnRead(fileList, sysUser.getId());
                            result.append(resultList);
                        }
                    }
                }
                //传入参数{QUERYTYPE}有误时
                else
                {
                result = new StringBuilder().append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
                result.append("<info>\n");
                result.append("<RETFLAG>0</RETFLAG>\n");
                result.append("<RETERRORID>2</RETERRORID>\n");
                result.append("<RETERRORINFO>请求失败,传入\" QUERYTYPE \"为空</RETERRORINFO>\n");
                result.append("<RETURN_RESULT>没有待办</RETURN_RESULT>\n");
                }

            }
             //传入参数{UID}有误时
            else
            {
                result = new StringBuilder().append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
                result.append("<info>\n");
                result.append("<RETFLAG>0</RETFLAG>\n");
                result.append("<RETERRORID>2</RETERRORID>\n");
                result.append("<RETERRORINFO>请求失败,传入\"UID\"为空</RETERRORINFO>\n");
                result.append("<RETURN_RESULT>没有待办</RETURN_RESULT>\n");
            }

        }
        catch(Exception e)
        {
            result = new StringBuilder().append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
            result.append("<info>\n");
            result.append("<RETFLAG>0</RETFLAG>\n");
            result.append("<RETERRORID>3</RETERRORID>\n");
            result.append("<RETERRORINFO>出现异常,请求失败</RETERRORINFO>\n");
            result.append("<RETURN_RESULT>没有待办</RETURN_RESULT>\n");
            e.printStackTrace();
        }
        result.append("</info>");
        return result.toString();
    }

 

在WEB-INF目录下加入server-config.wsdd文件

 

并加入内容如下

 

<?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">
    <service name="EiacService" provider="java:RPC" use="literal">
  <operation name="doEiacServiceRetXML" qname="ns1:doEiacServiceRetXML" returnQName="ns1:doEiacServiceRetXMLReturn" returnType="xsd:string" soapAction="" xmlns:ns1="http://impl.webservice.oa.timeson.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <parameter qname="ns1:UID" type="xsd:string"/>
   <parameter qname="ns1:QUERYTYPE" type="xsd:string"/>
  </operation>
  <parameter name="allowedMethods" value="doEiacServiceRetXML"/>
  <parameter name="typeMappingVersion" value="1.2"/>
  <parameter name="wsdlPortType" value="EiacServiceImpl"/>
   <parameter name="className" value="com.timeson.oa.webservice.impl.EiacServiceImpl"/>
   <!--<parameter name="className" value="com.timeson.oa.webservice.EiacService"/>-->
  <parameter name="wsdlServicePort" value="EiacServiceImpl"/>
  <parameter name="schemaQualified" value="http://impl.webservice.oa.timeson.com"/>
  <parameter name="wsdlTargetNamespace" value="http://impl.webservice.oa.timeson.com"/>
  <parameter name="wsdlServiceElement" value="EiacServiceImplService"/>
 </service>
  <transport name="local">
  <responseFlow>
   <handler type="LocalResponder"/>
  </responseFlow>
 </transport>
</deployment>

 完成后部署到TOCAR目录下

 

打开IE在地址栏输入:http://192.168.19.51:81/oa/services/EiacService?wsdl

 

<完>

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值