文档章节

axis2 搭建webservice服务

兔龙
 兔龙
发布于 2015/05/03 16:12
字数 1321
阅读 52
收藏 0

                                             (一) 系统环境                                                

   mac(Yosemite10.10.3)

    jdk1.6;myeclipse10;

    axis2-1.6.2 (点我进入下载界面)【binary 是jar包;source 是源码包;war 下载放到tomcat可以直接运行;doc ...】

                                             (二) 服务器端搭建                                         

服务器和客户端都使用的是java语言

2.1 在myeclipse中新建一个web project (name是axis2-02,名称随意)

目录结构如下:新建的readme.txt是我手工添加的,养成良好习惯,做好记录(这里写成了blog就不写在readme中了)

2.2 拷贝用到的jar包【jar包从binary/lib下拷贝,没有仔细区别所以全部拷贝进入了】

要新建一个webservice服务有多种方式,可以使用aar模式,或者无aar模式(aar其实就是jar包改个名称,专门给axis2识别的);我们不讨论那么详细的东西,只讲怎么使用;

2.3 搭建自己生成aar文件的webservice

因为我比较喜欢掌控自己工程中的文件,要知道他们每一个文件的用处,所以我要自己新建自己的aar文件;

aar我们稍后看看是什么结构就清楚他的作用了。

2.4 新建一个webservice服务类HelloServices

package com.axis2.webservices;
public class HelloServices {
	public void sayHello(){
 	        System.out.println("hello world!");
	}
	public String changeName(String name){
		return "my name is " + name ;
	}
}

2.5 配置

服务类完毕,然后是配置信息,axis2的配置相对简单很多,只有2个地方

【如果和spring整合那还要在spring的配置文件中加入信息,这个以后再说,这里只讲简单搭建】

2.5.1 web.xml

配置axis2的拦截servlet,web.xml中加入下面代码:

    <servlet>
        <servlet-name>axis2</servlet-name>
        <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>axis2</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>

2.5.2 创建webservice配置

在目录位置/WebRoot/META-INF/   目录下新建一个services.xml

名称一定是services,不要少了或者更改了,这个xml会在之后用上

services.xml的内容:

<?xml version="1.0" encoding="UTF-8"?>
<service name="helloService">  
    <description>Web Service例子</description>  
    <parameter name="ServiceClass">com.axis2.webservices.HelloService</parameter>  
    <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>  
</service>

简单的解释一下文本意思:

service的name是webservice的名称,就是:

http://127.0.0.1:8080/axis2-02/services/helloService?wsdl

这个地址中/和?中间的部分要保持一致,不然就会访问不到;

parameter配置的是这个service的package地址

下面的messageReceiver,不做详细介绍,你可以当成固定格式吧;

2.6 生成需要的aar文件

2.6.1 准备工作

先看一下我们目前的项目目录结构:

2.6.2 命令行进入当前工程的WebRoot目录

输入命令:【jar cvf services.aar .】

注意为了不输入错误,请直接copy我上面【】中的字符串,尤其注意aar后面的空格和英文的. 号

这个aar的名称可以随意;

之后我们再看目录结构:【注意到多了一个services.aar的文件】

2.6.3 调整位置

现在刷新一下myeclipse工程,然后在WEB-INF文件夹下新建一个文件夹services,将刚才生成的services.aar移动到此文件夹下;【为什么是新建services文件夹,因为之前我们在配置web.xml的时候定义servlet时,写的url是/services/*】

2.7 完成服务端搭建可以测试

完毕之后发布工程到tomcat,运行并访问:

http://127.0.0.1:8080/axis2-02/services/helloService?wsdl

如果出现说文档,则说明成功

                                             (三) client端搭建                                         

client的搭建,我们使用一个新的java project 来模拟;

3.1  准备工程

myeclipse中新建一个java project:

然后引入外部的jar包,我直接引入了axis2的所有包;如何引用包:

【右键工程-->选择Build Path-->选择Configure Build Path --> 在中间Libraries页,右侧选择Add Library--->User Library--->next--->User Library--->New--->输入名称--->Add JARs】

加入JUnit的包;

3.2 准备测试的stub

使用axis2提供的工具生成测试用的java类;这个其实可以直接拿到项目中使用;

进入axis2的bin目录:

命令行进入:【这里测试用可以不加 -a 】

./wsdl2java.sh -uri http://127.0.0.1:8080/axis2-02/services/helloService?wsdl -p com.client -s -a -o stub

-url:指定了wsdl文件的路径,可以是本地路径,也可以是网络路径。

-p:  指定了生成的Java类的包名,

-s:  制定生成同步异步调用代码

-o:  指定了生成的一系列文件保存的根目录

-a:  制定生成异步的回调函数

3.3 生成结果:【我只用到最后的HelloServiceStub.java这个文件】

3.4 编写测试代码

将HelloServiceStub.java拷贝到myeclipse项目中,随便建一个目录。

注意如果自定义了一个目录,那么可能要修改一下HelloServiceStub的package的位置;

新建测试类TestAll

public class TestAll {
	
	SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式

	@Test
	public void testSayHello() throws RemoteException{
		HelloServiceStub stub = new HelloServiceStub();
		HelloServiceStub.SayHello say = new HelloServiceStub.SayHello();
		stub.sayHello(say); 
	}
	@Test
	public void testChangeName() throws RemoteException{
		HelloServiceStub stub = new HelloServiceStub();
		ChangeName c = new ChangeName();
		c.setName("tom");
		ChangeNameResponse cr = new ChangeNameResponse();
		cr = stub.changeName(c);
		String str = cr.get_return();
		System.out.println("this is client :" + df.format(new Date()) + "  name :" + str);
	}
}

                                               (四) 测试结果                                            

4.1 测试changeName方法

tomcat端:

测试客户端client:

到此部署和册数完毕,之后更新关于axis2的一些其他应用

【异步调用方法,session管理,整合spring】

© 著作权归作者所有

兔龙
粉丝 0
博文 10
码字总数 7485
作品 0
广州
高级程序员
私信 提问
使用axis2发布web service

Axis2是一套崭新的WebService引擎,该版本是对Axis1.x重新设计的产物。Axis2不仅支持SOAP1.1和SOAP1.2,还集成了非常流行的REST WebService,同时还支持Spring、JSON等技术。这些都将在后面的...

NotFoundException
2013/03/13
582
0
axis helloworld

Axis2创建WebService实例 博客分类: Java综合 WebServiceTomcatApacheWebXML 一、Axis2的下载和安装 1.可从http://ws.apache.org/axis2/ 下载Axis2的最新版本: 可以下载如下两个zip包: ax...

itwriter
2014/08/22
105
0
Java 使用Axis实现WebService实例

版权声明:本文为博主原创文章,转载请标明出处!博客地址:http://blog.csdn.net/qazwsxpcm https://blog.csdn.net/qazwsxpcm/article/details/78003905 在上一篇WebService实例中,基于jdk...

虚无境
2017/09/16
0
0
Eclipse中开发webservice

eclipse开发webservie 1.下载axis2相关架包----war,bin是必须的; axis2的eclipse插件(2个)-http://apache.dataguru.cn/axis/axis2/java/core/org.apache.axis2.eclipse.codegen.plugin0.0......

绿林小子
2015/11/04
161
0
webservice发布--使用axis2发布

如何使用axis2发布webservice? axis2发布webservice分为打包发布和不打包发布两种,今天主要研究了一下打包发布的方法 1.部署axis2框架(使用tomcat部署) 1.1 下载axis2的war包,测试使用的w...

程序员小虫
2014/10/23
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

分布式协调服务zookeeper

ps.本文为《从Paxos到Zookeeper 分布式一致性原理与实践》笔记之一 ZooKeeper ZooKeeper曾是Apache Hadoop的一个子项目,是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它...

ls_cherish
今天
4
0
redis 学习2

网站 启动 服务端 启动redis 服务端 在redis 安装目录下 src 里面 ./redis-server & 可以指定 配置文件或者端口 客户端 在 redis 的安装目录里面的 src 里面 ./redis-cli 可以指定 指定 连接...

之渊
昨天
2
0
Spring boot 静态资源访问

0. 两个配置 spring.mvc.static-path-patternspring.resources.static-locations 1. application中需要先行的两个配置项 1.1 spring.mvc.static-path-pattern 这个配置项是告诉springboo......

moon888
昨天
4
0
hash slot(虚拟桶)

在分布式集群中,如何保证相同请求落到相同的机器上,并且后面的集群机器可以尽可能的均分请求,并且当扩容或down机的情况下能对原有集群影响最小。 round robin算法:是把数据mod后直接映射...

李朝强
昨天
4
0
Kafka 原理和实战

本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/bV8AhqAjQp4a_iXRfobkCQ 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平...

vivo互联网技术
昨天
24
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部