`
flyzonemu
  • 浏览: 35038 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

axis1.4 使用总结

阅读更多
    最近一个项目使用webservice,公司要求使用axis1.4.
    其实个人感觉xfire更好用一点,毕竟myeclipse已近提供了生成器,从客户端到服务端都可以一次搞定,比axis方便多了.
   
    既然是公司要求,也只有硬着头皮上了.
    上网查了一下资料,发现了1.4有这么几种部署方式

     1.即时发布
       将需要发布的server类直接命名为jws放在src目录下,不能有包,只能放在根目录下.然后通过http://localhost:8888/axis/你的类名.jws 就可以看到生成的wsdl
      这种方法最致命的问题是 不支持包 不支持复杂类型参数.如果你的业务很简单可以使用这种方式
   
    2.定制发布wsdd(推荐这种方式)

      定制发布需要你自己写一个wsdd文件,并且手动生成客户端代码.看上去很复杂,其实不难.以下是生成server-config.wsdd文件
   
<?xml version="1.0" encoding="UTF-8"?>    
<deployment name="defaultClientConfig"    
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"    
xmlns:handler="http://xml.apache.org/axis/wsdd/providers/handler" xmlns="http://xml.apache.org/axis/wsdd/">    
  <globalConfiguration name="defaultClientConfig">    
    <requestFlow name="RequestFlow1" type="">    
        <handler name="Handler1" type="java:org.apache.axis.handlers.JWSHandler">    
          <parameter name="scope" value="session"/>    
        </handler>    
        <handler name="Handler2" type="java:org.apache.axis.handlers.JWSHandler">    
            <parameter name="scope" value="request"/>    
            <parameter name="extension" value=".jwr"/>    
        </handler>    
      </requestFlow>    
    </globalConfiguration>    
    <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>    
    <handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/>    
    <handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>    
    <transport name="http" type="">    
        <requestFlow name="RequestFlow1" type="">    
        <handler name="Handler1" type="URLMapper"/>    
        <handler name="Handler2" type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>    
      </requestFlow>    
    </transport>    
    <transport name="local" type="">    
        <responseFlow name="ResponseFlow1" type="">    
            <handler name="Handler1" type="LocalResponder"/>    
        </responseFlow>    
    </transport>    
  
  <!--这里配置了一个Web Service,如果有多个Web Service,就按这种格式在下面增加即可-->    
  <service name="DDosService" provider="java:RPC">    
    <parameter name="scope" value="Request"/>    
    <parameter name="className" value="com.zhongying.ddos.webservice.service.DDosService"/>//发布的服务    
    <parameter name="allowedMethods" value="*"/>    
    <beanMapping languageSpecificType="java:com.zhongying.ddos.webservice.common.DDosCustC" qname="ns:DDosCustC" xmlns:ns="urn:DDosCustC" />//映射的复杂类型
    <beanMapping languageSpecificType="java:com.zhongying.ddos.webservice.common.DDosCustManagerC" qname="ns:DDosCustManagerC" xmlns:ns="urn:DDosCustManagerC" />
    <beanMapping languageSpecificType="java:com.zhongying.ddos.webservice.common.DDosCustAndManagerListC" qname="ns:DDosCustAndManagerListC" xmlns:ns="urn:DDosCustAndManagerListC" />
  </service>    
  
</deployment>    


   把你需要使用的复杂参数映射到mapping中,如list map 都可以自定义一个类包装起来使用.

   接下来你需要生成client,这可能是定制发布中大家最头痛的部分.以下是生成代码的批处理命令
   
set Axis_Lib=D:\shanghai\workspace\axis\WebRoot\WEB-INF\lib\
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=D:\webServiceGenClass
set Package=com.zhongying.worksheet.webservice.client //代码所在包名

%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path%  -p%Package%   http://127.0.0.1:88/axis/services/DDosService?wsdl

   运行这个命令程序会自动生成client.
   但是大部分人都会在这步卡住,这个地方有个窍门,就是不要使用resin,要用tomcat,resin生成的wsdl和tomcat生成的wsdl不同,这样就导致了axis不能解析.生成代码就更不可能了.我估计是resin的xml解析器和tomcat不一样.
   生成完代码大家就可以直接调用,添加自己的业务代码了.

   如果是基本类型组成的map,可以直接传送参数,不需要映射参数类型;调用代码如下即可:
package com.flyzonemu.client;

import java.rmi.RemoteException;
import java.util.HashMap;
import java.util.Map;

import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

public class MapClient {

	/**
	 * @param args
	 * @throws ServiceException 
	 * @throws RemoteException 
	 */
	public static void main(String[] args) throws ServiceException, RemoteException {
		// TODO Auto-generated method stub
		
		String url = "http://127.0.0.1:88/axis/services/MapTest?wsdl";
		
		Map map = new HashMap();
		
		map.put("sss", "yyy");
		
		Service service = new Service();
		
		Call call = (Call)service.createCall();

		call.setTargetEndpointAddress(url);
		
		call.setOperationName(new QName(url,"printMap"));
		
		call.invoke(new Object[]{map});
	}

}




   最后附赠一个很好的教程!!!!


   ps:有时会遇到Can't find bundle for base name i18n, locale zh_CN错误,请将源码class中的属性文件复制到工程目录下即可解决问题
分享到:
评论

相关推荐

    springboot使用axis1.4的demo

    总结起来,将Spring Boot与Axis1.4结合使用,可以方便地在Spring Boot应用中构建和发布Web服务,利用Spring Boot的便利性和Axis1.4的强大功能。通过理解并熟练掌握上述步骤,你可以在实际项目中灵活地部署和管理Web...

    apache axis1.4实例

    总结,Apache Axis1.4虽已过时,但在某些特定场景下,它的稳定性和灵活性依然具有很高的价值。理解并掌握如何使用Apache Axis1.4,对于开发者来说,仍然是提升技能树的重要一环。通过实践,你可以更好地理解Web服务...

    webservice axis1.4服务实例

    总结起来,Apache Axis1.4是一个强大的工具,可以帮助开发者轻松创建、部署和使用Web服务。通过学习和掌握Axis1.4,你可以更好地理解和利用Web服务这一现代软件架构中的关键组成部分,实现不同系统间的互操作性和...

    apache axis1.4 官网备份

    总结,Apache Axis1.4虽然已经不再得到官方支持,但它见证了Web服务发展的早期阶段,其设计理念和实现方式在现代Web服务框架中仍然有所体现。了解并研究Axis1.4的历史,有助于我们更好地理解和使用现在的Web服务技术...

    axis1.4 + document/literal 实例

    总结起来,这个"axis1.4 + document/literal 实例"提供了一个学习如何使用Axis 1.4框架创建和调用基于document/literal绑定的Web服务的机会。通过分析和实践提供的客户端和服务端代码,开发者可以加深对Web服务原理...

    AXIS1.4客户端调用

    总结来说,AXIS1.4客户端调用是Java开发者利用Apache Axis1.4框架与SOAP Web服务交互的一种方式。这个过程涉及到SOAP协议的理解、Apache Axis工具的使用,以及源码级别的定制和调试。对于想要构建分布式系统的开发者...

    【java项目整合Axis1.4webservice搭建实例】客户端代码

    总结,本文详细介绍了如何在Java项目中整合Axis1.4并构建Web服务客户端。从创建服务接口到生成客户端代码,再到实际调用服务,每个步骤都至关重要。实践中,应根据具体需求和项目规模来优化这些过程,确保Web服务的...

    【java项目整合Axis1.4webservice搭建实例】服务端代码

    总结,通过 Axis1.4 搭建Java Web服务服务端,开发者可以轻松地将业务逻辑封装成Web服务,实现跨平台的交互。理解并熟练掌握这一过程,对于Java开发者来说是非常重要的技能。在实际项目中,可以根据具体需求进行调整...

    axis1.4实现全过程,不少任何jar包

    根据提供的文件信息,我们可以总结出以下关于如何使用 Axis 1.4 实现 Web Service 的全过程,包括所需的 JAR 包及配置步骤。 ### Axis 1.4 Web Service 实现全过程 #### 环境搭建 - **JDK**: 使用 JDK 1.5 版本。...

    axis1.4学习示例(详细步骤说明)

    总结来说,学习 Axis1.4 主要涉及以下几个关键点: 1. 下载并引入 Axis1.4 相关 JAR 包到项目中。 2. 配置 `web.xml` 文件以注册 Axis 相关的 Servlet 和监听器。 3. 创建服务端 Java 类,定义 Web 服务接口。 4. ...

    axis1.4 部署webservice说明

    总结,Axis1.4是Java Web服务开发的重要工具,通过其提供的工具可以方便地生成WSDD和测试类,简化服务的部署和测试流程。了解并熟练掌握这些工具的使用,对于开发和维护Web服务至关重要。在实际操作中,还需要关注与...

    axis 1.4安装

    总结来说,Apache Axis 1.4是一个强大的Web服务框架,它的安装涉及下载、解压、环境变量配置以及Java环境的准备。通过使用Axis,开发者可以轻松地创建、调用和管理Web服务,同时也能够利用其提供的工具进行调试和...

    Axis1.4快速发布服务以及客服端详解(根据wsdl)

    总结,Apache Axis1.4提供了一套强大的工具,使得开发和消费Web服务变得简单。通过理解WSDL文件的结构和Axis1.4提供的命令,你可以快速地发布服务并创建与之交互的客户端。在实际项目中,这种能力对于实现分布式系统...

    axis1.4开发webservice详细实例

    总结,使用Axis1.4开发Web服务涉及到的主要步骤包括创建服务类、生成WSDL、打包服务、部署服务以及编写和运行客户端。了解并掌握这些步骤,有助于开发者快速构建基于Java的Web服务应用程序。同时,注意保持代码的...

    Axis1.4如何实现头部鉴权

    本文将深入探讨如何在Axis1.4中实现头部鉴权,包括其实现类模板的详细介绍。 ### 标题解析:“Axis1.4如何实现头部鉴权” 标题明确了讨论的主题——在Apache Axis 1.4中实现基于HTTP头部的鉴权机制。头部鉴权是一...

    axis1.4的学习总结以及相应部署所有用到的jar包

    在这里是本人经过对网络资源的学习总结出来的应用axis1.4进行webservice开发的总结,里面有简单的demo以及所有工程用到的jar包,以及如何进行webservice的部署与发布 (注:这里用到的webservice是基于简单的单值...

    axis 1.4 所有jar包

    总结,"axis 1.4 所有jar包" 是一套完整的Java库,用于在Java平台上构建和使用Web服务。它们包含了处理XML、SOAP、WSDL、HTTP通信以及日志记录等各种功能的组件,是开发和部署Web服务的关键工具。使用这些JAR文件,...

    axis1.4 上传数据示例

    总结起来,这个示例项目展示了如何使用Axis1.4和Eclipse来构建一个能上传数据的Web服务。客户端通过`OrderClient`与服务端交互,而服务端的接口实现则处理数据存储。开发者需要关注数据库连接配置的正确性,以及对...

    axis1.4+mybatis3+spring实现webservice

    总结来说,这个项目展示了如何将 Axis1.4 用于构建 Web 服务,MyBatis3 用于数据库操作,Spring3 用于管理和协调整个系统,而 Log4j 则提供日志记录功能。在 Websphere 这样的企业级应用服务器上,这样的集成方案...

Global site tag (gtag.js) - Google Analytics