转载 使用axis2构建webservice
axis2是可以实现webservice的一个插件,使用这个插件可以发布webservice
1:可以使用这个插件来发布webservice,可以看网址:http://clq9761.iteye.com/blog/976029/======个人感觉一般不太适合我们做项目时候使用
2:我们这里将axis2的夹包引入到一个web工程里,运行这个web工程来发布webservice=====
这是我们常用的,比如要你写一个webservice客户端,你要怎么做呢?创建一个web工程,然后引入axis2的夹包,使用axis2来实现一个webservice,这是一个最基本的想法
想使用axis2实现webservice要做几件事如下:
1:创建一个web工程,====还可以说是创建一个web服务====或者是创建一个web项目
2:要引入需要的夹包到web工程的lib文件夹内
3:创建service.xml文件 =====axis2发布webservice需要配置的xml文件
4:配置web工程的web.xml,扫描axis2的service.xml文件
5:书写对应的类来实现
然后运行写好的web项目,在网页上执行路径就可以了,其实按着步骤走挺简单的,下面是每一步的详细介绍
第一步:创建一个web项目

第二步:引入需要的夹包

有个问题夹包从哪里来呢,去axis的官网下载
插件的下载网址:http://axis.apache.org/axis2/java/core/download.html


下载后解压。解压文件里有lib文件夹,里面有需要的所有的jar包
这里需要注意的是夹包的版本,在官网上下载的可能与本章中图片显示的不同,这个不用管,名字一样就行
如果不行再换,先试试 ===============这样我们就可以把所有需要的夹包复制到web项目的lib下
第三步:创建service.xml文件,看下图吧

在WEB-INF下创建services文件夹然后创建------conf----META-INF----services.xml
services.xml的内容如下:
=================services.xml内容开始=========================
<?xml version="1.0" encoding="UTF-8"?>
<service name="Testservice"> <!-- 指定服务名,随便定义 -->
<description>测试axis2webservices</description><!-- 服务的作用说明,可写可不写 -->
<!-- 指定要发布的类路径 -->
<parameter name="ServiceClass"> <!-- 自定义 name-->
com.axiswevservice.test.TestService <!-- 写的类路径 -->
</parameter>
<!-- 类里面的方法,有其他方法就在写个operation标签 -->
<operation name="test"> <!-- 类里面的方法名 -->
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</operation>
</service>
<!-- http://localhost:8080/testaxis2webservice/services/Testservice?wsdl -->
=================services.xml内容结束=========================
http://localhost:8080/testaxis2webservice/services/Testservice?wsdl
注释:上面的路径是搭建好web项目后要运行的wsdl路径
1: 指定服务名 =====就是要运行的wsdl路径的?和/之间的那一部分===可以说指定的服务名是wsdl路径的一部分
2:服务的作用说明====这个不用管===就相当于一个注释,说说你要发布的webservice是干啥的
3:指定要发布的类路径======就是你要把那个类做成webservice
4:类里面的方法,有其他方法就在写个operation标签=======配置你写的类里面的方法
第四步:配置web.xml
=================web.xml内容开始=========================
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>testaxis2webservice</display-name><!-- 项目名,创建项目时候自动生成的 -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
</web-app>
=================web.xml内容结束=========================
第五步:书写发布类
============================书写的类开始======================
package com.axiswevservice.test;
public class TestService {
public String test(String test){
return "测试axis2webservice:"+test;
}
}
==========================书写的类结束=========================
类写的简单点,现在只是测试没必要写复杂,就写一个类,类里写一个方法
写完这里之后,就要和上面的service.xml对应起来了,service.xml里面的类路径,方法名要和这里写的一样
写完之后就可以了,这是项目的结构图如下

在eclipce中加载tomcate,将项目加载到tomcate中,运行tomcate 启动项目
然后在网页上输入http://localhost:8080/testaxis2webservice/services/Testservice?wsdl
wsdl路径的组成:tomcate里配置的ip和端口号 + 项目名 + web.xml里配置的<url-pattern> + service.xml里面指定的服务名+?wsdl
运行结果如下:

这样就成功了,使用axis2来实现webservice服务端,这样在写个客户端调用就可以了
=====================================================================================
开始写客户端调用服务端写的接口通不通,
我们可以使用soupui这个软件来测试服务端,也可以自己写代码测试
这里我们自己写:要怎么做呢?很简单,需要做如下:
1:建个java工程 ------创建一个java工程
2:引入夹包
3:写个测试类
===========================开始==================================
第一步:创建一个java工程======就是创建一个java项目,我们的项目一般分为java项目,web项目,maven项目。。。。。。
第二步:引入夹包,夹包引入的方法和上面写服务端引入的一样,但是多了两夹包httpcore-4.4.4.jar,commons-codec-1.3.jar
这两个夹包在axis2的插件的lib下也可以找到
第三步:书写测试类
其实就是建个java项目,把写的web工程的夹包复制到java项目下,在从解了压的axis2插件的lib下把少的两个夹包加进来,写个类测一下就行了
======================测试类开始=======================
package testwebserver;
import javax.xml.namespace.QName;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
public class test {
public static void main(String[] args) {
try {
//本机tomcat端口默认为8081,参数是wsdl网址的一部分
EndpointReference targetEPR = new EndpointReference("http://localhost:8081/testaxis2webservice/services/Testservice");
RPCServiceClient sender = new RPCServiceClient();
Options options = sender.getOptions();
options.setTimeOutInMilliSeconds(2*20000L);//超时时间20s
options.setTo(targetEPR);
/**
* 参数:
* 1:在网页上执行 wsdl后xs:schema标签的targetNamespace路径
* <xs:schema targetNamespace="http://test.axiswevservice.com">
* 2:<xs:element name="test"> ======这个标签中name的值
*
*/
QName qname = new QName("http://test.axiswevservice.com", "test");
String str = "客户端调用成功"; //方法的入参
Object[] param = new Object[]{str};
Class<?>[] types = new Class[]{String.class}; //这是针对返值类型的
/**
* RPCServiceClient类的invokeBlocking方法调用了WebService中的方法。
* invokeBlocking方法有三个参数
* 第一个参数的类型是QName对象,表示要调用的方法名;
* 第二个参数表示要调用的WebService方法的参数值,参数类型为Object[];
* 第三个参数表示WebService方法的返回值类型的Class对象,参数类型为Class[]。
*
* 当方法没有参数时,invokeBlocking方法的第二个参数值不能是null,而要使用new Object[]{}。
*/
Object[] response1 = sender.invokeBlocking(qname, param, types);
System.out.println(response1[0]);
} catch (AxisFault e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
======================测试类结束=========================
这是个java项目,直接写在main方法内,直接运行main方法就可以了,
注意:你这里写好的服务端得一直起着,这里写的测试调用才能调通,看下图:

总结:如果都测通了,我们要明白一下几点
1:axis2要实现webservice需要哪些夹包,夹包是哪里来的
需要哪些夹包看截图,夹包是从axis2的官网下的,官网有个.....bin.zip的文件,解压这个文件,里面有个lib文件夹,那里面有所有的夹包
2:怎么才能使用axis2发布一个webservice,
需要axis2的一个service.xml配置文件,我们要确保项目启动时要扫描到这个配置文件,并且要和写的类/方法等一致
那么程序就会将service.xml里面配置的类和方法做成一个webserce发布,
我们这里是将service.xml引入到了一个web工程里,使用web工程的web.xml来扫描service.xml文件,当运行这个web工程的时候 程序就将service.xml里面的配置的做成一个webservce服务发布了,只要这个web工程一直起着,我们就可以调用发布的服务
3:要发布的类,中的方法怎么写
方法有个返回值和入参就行,不管写方法在复杂,格式就是那样的
4:客户端怎么写的?
客户端就是写个java工程写个类测试下就行,夹包看上面截图,调用的代码要好好看看
转载 使用axis2构建webservice的更多相关文章
- 使用axis2构建webservice
axis2是可以实现webservice的一个插件,使用这个插件可以发布webservice 1:可以使用这个插件来发布webservice,可以看网址:http://clq9761.iteye.co ...
- axis2之webservice
Axis2之webservice超详细教程 Axis2是一套崭新的WebService引擎,该版本是对Axis1.x重新设计的产物.Axis2不仅支持SOAP1.1和SOAP1.2,还集成了非常流行的 ...
- Axis2开发webservice详解
Axis2开发webservice详解 标签: javawebserviceAxis2 2015-08-10 10:58 1827人阅读 评论(0) 收藏 举报 分类: JAVA(275) 服务器 ...
- axis2开发webservice程序
一.环境 eclipse + jdk 6.0 + win7 64位 +tomcat7.0 二.创建服务端程序 1.新建web项目,webserviceTest 2.下载axis2,将lib目录下的ja ...
- Java借助axis2发布WebService
Webservice: 1.Xml: 2.WSDL: Web service描述语言(WSDL)就是这样一个基于XML(标准通用标记语言下的一个子集)的语言,用于描述Web service及其函数.参 ...
- 使用Axis2实现WebService的发布和调用
一.Axis2的下载和安装 1.可从http://ws.apache.org/axis2/ 下载Axis2的最新版本: 可以下载如下三个zip包: axis2-1.7.3-bin.zip(用 ...
- 使用Axis2编写webservice客户端,服务端
1.编写客户端 Axis2开发WebService客户端 的3种方式 [参考帖子] http://blog.csdn.net/wangjinwei6912/article/details/851259 ...
- 用AXIS2发布WebService的方法
Axis2+tomcat6.0 实现webService 服务端发布与客户端的调用. 第一步:首先要下载开发所需要的jar包 下载:axis2-1.6.1-war.zip http://www.apa ...
- 基于soapUI构建WebService测试框架
基于soapUI构建WebService测试框架 http://www.docin.com/p-775523285.html
随机推荐
- 前端MVC Vue2学习总结(八)——Vue Router路由、Vuex状态管理、Element-UI
一.Vue Router路由 二.Vuex状态管理 三.Element-UI Element-UI是饿了么前端团队推出的一款基于Vue.js 2.0 的桌面端UI框架,手机端有对应框架是 Mint U ...
- ExtJS4中设置tabpanel的tab高度问题
最近碰到个问题,在ExtJS中应该如何设置tabpanel的tab的高度?因为默认情况下,tab的高度太矮了,以至于tab的标题底部字都被截掉.设置了个tabpanel.minHeight = ‘50 ...
- c# 导出表格
var record = m_editor.getMasterRecord(); var Check_Id = record.Check_Id; var url = "/Storage/St ...
- Angular Forms - 自定义 ngModel 绑定值的方式
在 Angular 应用中,我们有两种方式来实现表单绑定--"模板驱动表单"与"响应式表单".这两种方式通常能够很好的处理大部分的情况,但是对于一些特殊的表单控 ...
- httpclient请求服务的各种方法实例
<!--话不多说,直接上代码--> import com.csis.ConfigManagerimport com.csis.io.web.DefaultConfigItemimport ...
- java_分解质因数
题目内容: 每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数.比如,6可以被分解为2x3,而24可以被分解为2x2x2x3. 现在,你的程序要读入一个 ...
- Git的概念及常用命令
一.概念 Git是一个分布式的版本控制工具,区别于集中式管理的SVN. 二.优势 每个开发者都拥有自己的本地版本库,可以在本地任意修改代码.创建分支,不会影响到其他开发者的使用: 所有版本信息均保存在 ...
- React中使用百度地图API
今天我们来搞一搞如何在React中使用百度地图API好吧,最近忙的头皮发麻,感觉身体被掏空,所以很久都没来写博客了,但今天我一定要来一篇好吧 话不多说,我们直接开始好吧 特别注意:该React项目是用 ...
- form的重置reset
HTML中Form表单的reset方法被用来重置用户所输入的内容,以前一直误以为其是单纯的将input等输入项中的值清空. 但实际上不是这样的,reset方法的本质是将input等输入项中的内容还原为 ...
- 程序员Web面试之JSON
JSON是什么? JSON(JavaScript对象表示法), 是在网络通信下,常用的一种数据表达格式,它有助于我们于一个自描述的,独立的和轻的方式呈现并交换数据.这些数据可以易于和转换为JavaSc ...