`

webservice之axis

阅读更多

第一篇 开始axis之旅

1.下载axis.bin.zip和axis.war.zip

2.解压axis.war.zip将axis.war文件copy到你的服务器下,自动解压为axis2目录;对于java开发人员来说,这个应该知道吧。

3.在浏览器地址栏输入http://localhost:8080/axis2/,看到如下效果



 恭喜你,axis容器部署成功了!!!

4.新建一个包目录service1,在其下编写一个简单的POJO

package service1;

public class Hello
{
    public String hello(String name)
    {
        return "hello ," + name;
    }

}

进入cmd命令行, 

D:\>cd service1

D:\service1>javac Hello.java

5.新建文件夹META-INF,在其下编写service配置文件services.xml

<service name="Service1">
    <description>
        Service1
    </description>
    <messageReceivers>
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
            class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
            class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
    </messageReceivers>
	 <parameter name="ServiceClass">service1.Hello</parameter>
</service>

 6.新建目录temp,将上述service1和META-INF目录copy到temp。在cmd下cd temp...jar cvf hello.aar .(注意最后还有一个点),copy文件hello.aar到服务器目录\webapps\axis2\WEB-INF\services,服务器代码就OK啦!!!

看看效果吧。

浏览器地址栏输入:http://localhost:8080/axis2/services/listServices

点击相应的服务可以看到wsdl文件。

7.开始编写客户端吧

public static void main(String[] args)
    {
        try
        {
            RPCServiceClient client = new RPCServiceClient();
            Options opts = client.getOptions();
            EndpointReference epr = new EndpointReference("http://localhost:8080/axis2/services/Service1");
            opts.setTo(epr);
            Object[] param = new Object[] { "ruanzy" };
            Class[] classes = new Class[] { String.class };
            QName method = new QName("wsdl文件中的targetNamespace", "hello");
            Object[] result = client.invokeBlocking(method, param, classes);
            System.out.println(result[0]);
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }

  

控制台输出hello,ruanzy

webservice搞定啦。

 

第二篇 axis反向

所谓axis反向是指根据webservice的url或者wsdl文件,得到客户端和服务器端代码

先来看看怎么生成客户端代码吧。还记得第一篇下载的axis.bin.zip吗,解压后bin目录下有一些工具bat,其中wsdl2java.bat就是用来根据webservice的url或者wsdl文件,得到客户端和服务器端代码的。

为了方便调用我们需要设置环境变量AXIS_HOME=axis2的安装目录;添加path=%AXIS_HOME%/bin;

进入cmd命令行,WSDL2Java -uri  http://localhost:8080/axis2/services/Hello?wsdl或者wsdl文件的路径 -p client -s -o temp

将会在src/client下生成HelloStub.java,这个就是我们客户端调用时要用到了。

            HelloStub ss = new HelloStub();
            HelloStub.GetName gg=  new HelloStub.GetName();
            gg.setName("ruanzy");
            String ret = ss.getName(gg).get_return();
            System.out.println(ret);

 

控制台输出hello,ruanzy。和第一篇结果一样

 

第三篇 复合数据的处理

简单地说,axis支持数组,类和接口数据的处理。不过数组只支持一维数组,对于多维数组要变通一下。

如:String[] arr = new String[]{"a,b,c","d,e,f",...}; 

对于类和接口,最好采用序列化和反序列化来处理。先序列化为byte[],再反序列化...

 

第四篇 内部和服务之间的状态管理

   AXIS对于服务的状态管理是通过MessageContext以及

   服务内部(erviceContext)服务之间(ServiceGroupontext)来处理的。

   服务内部:service配置scope=transportsession

MessageContext messageContext = MessageContext.getCurrentMessageContext();
ServiceContext serviceContext = messageContext.getServiceContext();
通过serviceContext.setProperty(key, value)设值,通过serviceContext.getProperty(key)来取数据。

    服务之间:service配置scope=application

MessageContext messageContext = MessageContext.getCurrentMessageContext();
ServiceGroupContext serviceContext = messageContext.getServiceGroupContext();
以下和上面的设、取值一样 

 

第五篇 Spring和AXIS整合

    主要看一下services.xml吧

<service name= "SpringService" > 
    <description>simple spring example</description> 
    <parameter name= "ServiceObjectSupplier" > 
        org.apache.axis2.extensions.spring.receivers.SpringAppContextAwareObjectSupplier 
    </parameter> 
    <parameter name= "SpringBeanName" >springService</parameter> 
    <messageReceivers> 
        <messageReceiver mep= "http://www.w3.org/2004/08/wsdl/in-only" 
             class = "org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"  /> 
        <messageReceiver mep= "http://www.w3.org/2004/08/wsdl/in-out" 
             class = "org.apache.axis2.rpc.receivers.RPCMessageReceiver"  /> 
    </messageReceivers> 
</service>  

第六篇 ANT一键生成

<?xml version="1.0" encoding="UTF-8"?>
<project name="MyAXIS" default="wsdl2java" basedir=".">
	<property name="classes" value="../WebRoot/WEB-INF/classes/server" />
	<property name="temp" value="${basedir}/temp" />
	<property name="stub" value="${basedir}/stub" />
	<property name="services" value="D:/Program Files/apache-tomcat-5.5.26/webapps/axis2/WEB-INF/services" />
	<target name="init">
		<echo>创建临时目录</echo>
		<mkdir dir="${temp}" />
		<mkdir dir="${temp}/META-INF" />
	</target>
	<target name="aar" depends="init">
		<echo>压缩到aar包</echo>
		<copy todir="${temp}">
			<fileset dir="../WebRoot/WEB-INF/classes">
				<include name="**/**" />
			</fileset>
		</copy>
		<copy file="${basedir}/services.xml" tofile="${temp}/META-INF/services.xml" />
		<jar basedir="${temp}" destfile="${services}/service.aar" />
		<delete dir="${temp}" />
	</target>

	<target name="restar" depends="aar">
		<echo>重启服务器</echo>
		<exec dir="D:/Program Files/apache-tomcat-5.5.26/bin" executable="cmd">
			<env path="D:/Program Files/apache-tomcat-5.5.26" key="CATALINA_HOME" />
			<arg value="/C startup.bat" />
		</exec>
	</target>

	<target name="wsdl2java" depends="restar">
		<waitfor>
			<http url="http://localhost:8080/axis2/services/SayHello?wsdl" />
		</waitfor>
		<echo>生成客戶桩</echo>
		<exec dir="D:/workspace" executable="cmd">
			<arg value="/c" />
			<arg value="WSDL2Java" />
			<arg value="-uri" />
			<arg value="http://localhost:8080/axis2/services/SayHello?wsdl" />
			<arg value="-p" />
			<arg value="stub" />
			<arg value="-s" />
			<arg value="-o" />
			<arg value="wstest" />
		</exec>
		<delete file="D:/workspace/wstest/build.xml" />
	</target>
</project>

 

  • 大小: 63.5 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    WebService之axis2案例

    在"WebService之axis2案例"中,我们有两个关键部分:服务端(WebService_server)和客户端(WebService_client)。服务端是提供Web服务的应用程序,它定义了对外公开的接口和业务逻辑,这些接口可以通过SOAP(Simple...

    webservice之axis实例,axis复杂对象

    在"webservice之axis实例,axis复杂对象"这个主题中,我们将关注以下核心知识点: 1. **SOAP与WSDL**: SOAP是一种轻量级的消息协议,用于在Web上交换结构化的和类型化的信息。WSDL则是一种XML格式,用来描述Web...

    Webservice之Axis高级编程

    Webservice之Axis高级编程 Axis2是目前比较流行的WebService引擎。WebService被应用在很多不同的场景。例如,可以使用WebService来发布服务端 Java类的方法,以便使用不同的客户端进行调用。这样可以有效地集成多种...

    WebService之Axis2经典教程

    ### WebService之Axis2经典教程 #### 一、概述 随着信息技术的发展,Web Service作为一种重要的分布式计算模式,已经成为实现服务导向架构(SOA)的关键技术之一。Axis2作为一款流行的Web Service引擎,不仅具备高...

    WebService之Axis2实例

    WebService之Axis2实例是Web服务开发中的一个重要环节,它基于SOAP协议,允许不同平台和语言间的应用程序进行通信。本文将详细介绍Axis2实例的创建、配置和运行,以及如何利用Eclipse IDE、JDK 1.7和Tomcat 7.0进行...

    java webservice之axis2与spring集成(二)

    以下是关于"java webservice之axis2与spring集成(二)"的详细知识点讲解: 1. **Spring框架**: Spring是Java领域的一个开源框架,主要用于简化企业级应用的开发。它提供了一个全面的编程和配置模型,特别强调了...

    WebService之Axis2教程

    ### WebService之Axis2教程知识点总结 #### 一、Axis2简介及应用场景 - **Axis2定义**:Axis2是一款高性能、轻量级且灵活的Web服务引擎,它基于Apache软件基金会开发,作为Apache Axis 1.x的下一代产品,不仅支持...

    SpringBoot开发WebService之Axis示例

    SpringBoot以其便捷的启动和配置方式,已经成为Java开发中的首选框架之一。而 Axis 是一个流行的Apache项目,用于创建和部署Web服务,它提供了强大的SOAP处理能力。通过整合SpringBoot与Axis,我们可以快速构建高效...

    webservice之axis2

    标题中的“webservice之axis2”指的是使用Axis2来实现Web服务。 在描述中,我们看到了实现Web服务的步骤,包括服务端和服务端客户端的创建。以下是对这些步骤的详细解释: 1. **创建Web服务工程**:首先,我们需要...

    webservice之axis2方式开发总结

    【标题】"webservice之axis2方式开发总结" 在IT行业中,Web服务是不同系统间进行数据交换和功能调用的重要手段,而Axis2是Apache软件基金会提供的一个强大的Web服务框架,专门用于构建和部署Web服务。本篇将对基于...

    WebService之axis的复杂对象传输方案

    ### WebService之Axis的复杂对象传输方案 #### 一、概述 在Web服务领域,Axis是一种广泛使用的开源工具包,它支持SOAP协议,并且能够帮助开发者轻松地创建和调用Web服务。对于复杂的业务场景,往往需要在客户端和...

    WebService之axis2的使用(三)

    WebService之Axis2的使用是构建基于SOAP协议的Web服务的重要技术。Axis2是Apache软件基金会开发的一个开源项目,它是Axis1.x的升级版,提供了更高效、更灵活的服务架构。本篇文章将深入探讨如何利用Axis2来创建和...

    webservice之axis所需的全部的包

    这个标题“webservice之axis所需的全部的包”指的是一个包含Axis运行所需的全部库文件的压缩包集合。 Axis的核心功能包括: 1. **Web服务客户端生成**:Axis可以从WSDL(Web Service Description Language)文件...

    WebService之Axis2介绍与入门

    **WebService之Axis2介绍与入门** 在Web服务领域,Axis2是Apache软件基金会开发的一个开源Web服务框架,它是Axis1.x的升级版本,提供了一种更高效、更灵活的方式来创建和部署Web服务。本篇文章将深入探讨Axis2的...

    webservice之axis2引擎

    本人总结的关于webservice之axis2引擎的开发文档,其实是以备自己日后使用的,现在贡献出来供大家学习,参考。我人深感因为没有资源分而不能获得文档的苦恼。学习的权利是平等的。所以,我的文档就不设资源分了。...

    WebService之axis2的使用(四)

    【WebService之Axis2的使用(四)】 在Web服务领域,Axis2是Apache软件基金会开发的一个用于构建和部署Web服务的高性能、灵活的框架。它基于Axis1,并且提供了更加强大和高效的特性,比如模块化架构、更好的性能...

    WebService之AXIS传递javabean.7z

    在Java世界中,当我们需要通过WebService传递复杂的数据结构时,例如一个对象或javabean,AXIS提供了很好的支持。javabean是一种Java类,遵循特定的命名和设计规则,用于封装数据和提供访问这些数据的方法,它们常...

Global site tag (gtag.js) - Google Analytics