`
ghost_fly
  • 浏览: 111033 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

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

 

<完>

 

 

 

 

 

 

分享到:
评论

相关推荐

    axis整合spring

    标题“Axis整合Spring”指的是将Apache Axis,一个用于构建Web服务的开源框架,与Spring框架进行集成,以实现更高效、灵活的服务开发和管理。在Java世界中,这两个框架的结合能够提供强大的企业级应用解决方案。 ...

    使用Axis2整合Spring(二)

    将Axis2与Spring整合的主要目的是利用Spring的DI和AOP特性来管理和控制Web服务的生命周期。这可以通过在Axis2中使用SpringBeanServiceHost和SpringBeanAxisServlet实现。SpringBeanServiceHost允许将Spring的bean...

    spring与axis的整合

    #### 一、Spring与Axis整合概述 Spring与Axis的整合,是指在Java环境中利用Spring框架管理和配置Axis Web服务的一种技术。这种整合方式充分利用了Spring框架的强大功能(如依赖注入、面向切面编程等)以及Axis作为...

    axis2整合spring

    在IT行业中,Axis2和Spring都是极为...总之,"Axis2整合Spring"是一项高级的IT技能,它涉及Web服务的开发、管理和监控,以及企业级应用的架构设计。掌握这项技术,能够提升开发者在分布式系统设计和实施中的专业水平。

    spring和axis 整合

    当我们谈论"Spring和Axis2整合"时,我们实际上是在讨论如何将Spring的优秀特性应用到基于Axis2的Web服务中,以提高服务的管理和维护效率。这种整合通常涉及到以下关键步骤: 1. **配置Spring上下文**:首先,我们...

    axis 和spring 集成

    "工具"标签可能意味着会介绍一些辅助工具,比如IDE插件、构建工具(如Maven或Ant)以及服务器环境(如Tomcat),这些工具在整合Axis和Spring时可能会用到。 在提供的文件名称列表中,我们看到: - `.classpath`和`....

    axis2+spring webservice

    描述中提到的“简单例子:axis2整合spring发布webservice”,意味着我们将学习如何将这两个框架结合,以便通过Spring来管理和控制Web服务的生命周期,同时利用Axis2的Web服务处理能力。此外,“以及session的管理”...

    Axis2 Spring整合POJO开发Web服务

    当我们谈论"Axis2 Spring整合POJO开发Web服务"时,这意味着我们将使用Axis2来创建Web服务,并通过Spring框架来管理和控制这些服务,同时利用POJO(Plain Old Java Object)作为业务逻辑的核心。 首先,让我们深入...

    Axis2与Spring整合发布多个WebService

    在IT行业中,开发Web服务是常见的任务,而Axis2和Spring框架的整合为开发者提供了强大的工具来实现这一目标。本文将深入探讨如何利用这两个技术来发布多个WebService,并着重讲解项目管理和整合过程。 首先,让我们...

    spring-axis2-test.rar_Axis2 Spring3_axis2_axis2 spring3_axis2 s

    标题中的“spring-axis2-test.rar_Axis2 Spring3_axis2_axis2 spring3_axis2 s”指的是一个关于Spring和Axis2集成的示例项目,它包含了一组用于演示如何在Spring框架中使用Apache Axis2来开发和部署Web服务的源代码...

    spring axis2整合

    整合Spring和Axis2的主要目的是利用Spring的灵活性和管理能力来控制Axis2的生命周期,以及通过Spring的IoC容器管理Web服务的部署和调用。这样可以避免在代码中硬编码Web服务客户端和服务器端的实例化,使得代码更加...

    axis2+spring整合实例

    标题"axis2+spring整合实例"表明了这个压缩包内容是关于如何将Apache Axis2服务框架与Spring框架进行集成的实践案例。Apache Axis2是用于构建Web服务和SOA(Service-Oriented Architecture)的高性能、灵活的开源...

    Spring整合axis2经典

    整合Spring和Axis2,主要是为了利用Spring的依赖注入和管理能力,以及Axis2的Web服务处理能力。整合过程主要包括以下步骤: - 配置Spring容器:首先在Spring配置文件中定义Web服务的bean,这些bean通常代表了服务...

    axis2 + spring3.2.0

    通过这样的整合,开发人员可以充分利用Spring的便利性和Axis2的Web服务功能,构建出高效且易于维护的企业级应用。 在提供的链接(http://blog.csdn.net/linlinv3/article/details/9017767)中,你可以找到更具体的...

    axis2+spring2.5整合(webservice)

    当我们谈论“Axis2+Spring2.5整合(Web服务)”时,我们指的是将Apache Axis2和Spring框架结合在一起,以便更高效地开发和管理Web服务。 Apache Axis2是Apache软件基金会开发的一个Web服务引擎,它提供了SOAP消息...

    springboot集成axis2-1.7.9实例

    在本文中,我们将深入探讨如何将Apache Axis2与Spring Boot集成,以构建一个高效、可扩展的Web服务应用。Apache Axis2是Java平台上的一个Web服务框架,它提供了高性能、灵活的服务开发和部署机制。而Spring Boot是...

    Axis2WebService与Spring的整合

    5. **整合Spring AOP和事务管理**: 通过Spring的AOP,我们可以方便地为Web服务接口添加日志、安全检查、事务控制等切面。此外,Spring的事务管理功能可以确保Web服务操作的原子性和一致性。 6. **测试和调试**: ...

    Spring集成axis2实现webservice所用到的包

    通过整合Spring和Axis2,我们可以利用Spring的依赖注入(DI)和管理功能,同时享受Axis2的高性能和易用性。 集成Spring和Axis2的过程大致分为以下几个步骤: 1. **配置Axis2**:在Spring项目中,首先需要将Axis2的...

    axis2-spring-1.5.4.jar

    在实际项目中,使用axis2-spring-1.5.4.jar进行整合可以大大提高开发效率,降低维护成本。开发者可以专注于业务逻辑,而将基础设施的复杂性交给Spring和Axis2来处理。总的来说,这个jar包是实现高效、灵活的Web服务...

Global site tag (gtag.js) - Google Analytics