Axis2测试webservice server以及client
一、环境搭建
下载axis2-1.6.2-war.zip/axis2-1.6.2-bin.zip等。
参考axis2-1.6.2-war\README.txt以及axis2-1.6.2-war\axis2\WEB-INF\services\version-1.6.2\META-INF\services.xml的写法,可以通过编写webservice类并打包成jar的形式放在Tomcat容器的axis2 webapp下的services目录进行发布。
测试:把axis2目录拷贝到%TOMCAT_HOME%/webapps目录下面,启动tomcat,并访问http://localhost:8080/axis2,正常。
二、编写webservice server端
1 bean
package com.test.entity;
public class Student {
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + "]";
}
}
2 webservice class
package com.test;
import com.test.entity.Student;
public class HelloWorld {
public String sayHello() {
return "saying hellooooooooooooo----2----";
}
public Student query() {
Student s = new Student();
s.setId("1");
s.setName("wsc123");
return s;
}
public Integer addTowNumbers(int a, int b) {
return a+b;
}
}
3 services.xml
<service name="HelloWorld">
<description>
This service is to get the running Axis version
</description>
<parameter name="ServiceClass">com.test.HelloWorld</parameter>
<operation name="sayHello">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</operation>
<operation name="query">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</operation>
<operation name="addTowNumbers">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</operation>
</service>
<!--
<service name="HelloWorld" scope="application">
<description>
POJO: HelloWorld Service
</description>
<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>
<parameter name="ServiceClass">com.test.HelloWorld</parameter>
</service>
-->
4 build.xml
<project name="helloworldservice" basedir="." default="deploy">
<property name="src.dir" value="src">
</property>
<property name="build.dir" value="${basedir}/build">
</property>
<path id="build.classpath">
</path>
<target name="init">
<delete dir="${build.dir}">
</delete>
<mkdir dir="${build.dir}" />
<mkdir dir="${build.dir}/classes" />
<mkdir dir="${build.dir}/jar" />
</target>
<target name="compile" depends="init">
<javac srcdir="${src.dir}" destdir="${build.dir}\classes">
<classpath refid="build.classpath">
</classpath>
</javac>
</target>
<target name="makejar" depends="compile">
<jar destfile="${build.dir}\jar\${ant.project.name}.jar">
<fileset dir="${build.dir}/classes">
<include name="**/*.class"/>
</fileset>
<metainf dir="${basedir}">
<include name="services.xml"/>
</metainf>
</jar>
</target>
<target name="deploy" depends="makejar">
<copy file="${build.dir}/jar/${ant.project.name}.jar" todir="D:\wsc\software\apache-tomcat-6.0.41\webapps\axis2\WEB-INF\services"></copy>
</target>
</project>
5 readme.txt
通过POJO的方式发布一个WebService到tomcat容器中。
这里需要注意的是:
Ant打成的Jar的格式,META-INF目录下必须包括services.xml,
以及services.xml的写法,可以认为每个方法就是一对operation标签。。
三、编写RPC client端
1 需要引用axis2-1.6.2-war\axis2\WEB-INF\lib\*.jar
2 bean/entity
package com.test.entity;
public class Student {
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + "]";
}
}
3 rpc client类
package sample.addressbook.rpcclient;
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;
import com.test.entity.Student;
public class HelloWorldRPCClient {
public static void main(String[] args1) throws AxisFault {
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
EndpointReference targetEPR = new EndpointReference("http://127.0.0.1:8080/axis2/services/HelloWorld");
options.setTo(targetEPR);
// QName of the target method
QName qName = new QName("http://test.com", "sayHello");
// Constructing the arguments array for the method invocation
Object[] opArgs = new Object[] {};
Class[] returnTypes = new Class[] { String.class };
// Invoking the method
Object[] response = serviceClient.invokeBlocking(qName, opArgs, returnTypes);
System.out.println(response[0]);
//如何返回一个对象??
//
qName = new QName("http://test.com", "query");
opArgs = new Object[]{};
returnTypes = new Class[] {Student.class};
response = serviceClient.invokeBlocking(qName, opArgs, returnTypes);
System.out.println(response[0]);
//如何传递参数到web service方法中?
qName = new QName("http://test.com", "addTowNumbers");
//opArgs = new Object[]{Integer.valueOf(3), Integer.valueOf(4)};
opArgs = new Object[]{33, 44};
returnTypes = new Class[]{Integer.class};
response = serviceClient.invokeBlocking(qName, opArgs, returnTypes);
System.out.println(response[0]);
}
}
4 运行结果
log4j:WARN No appenders could be found for logger (org.apache.axis2.context.AbstractContext).
log4j:WARN Please initialize the log4j system properly.
saying hellooooooooooooo----2----
Student [id=1, name=wsc123]
77
5 readme.txt
参考Axis2的samples目录下的pojo示例
重点是sample.addressbook.rpcclient.HelloWorldRPCClient这个类,用于访问自己发布的HelloWorld这个WebService。
四、问题
客户端可以用多种形式,如adb访问?
Axis2支持多种协议,http应该是最常用的。还有?
Axis2测试webservice server以及client的更多相关文章
- Axis2创建WebService服务端接口+SoupUI以及Client端demo测试调用
第一步:引入axis2相关jar包,如果是pom项目,直接在pom文件中引入依赖就好 <dependency> <groupId>org.apache.axis2</gr ...
- TCP server和client的一些测试
一.TCP server和client测试 socket设置 测试项/测试情景 send recv 测 server block client bloc ...
- 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及其函数.参 ...
- Python 开发与测试 Webservice(SOAP)
WebService是一种跨编程语言和跨操作系统平台的远程调用技术. 理解WebService 1.从表面上看,WebService就是一个应用程序向外界暴露出一个能通过Web进行调用的API,也就是 ...
- axis2之webservice
Axis2之webservice超详细教程 Axis2是一套崭新的WebService引擎,该版本是对Axis1.x重新设计的产物.Axis2不仅支持SOAP1.1和SOAP1.2,还集成了非常流行的 ...
- [转]Axis2创建WebService实例
以下文章来自http://clq9761.iteye.com/blog/976029,作者clq9761 一.Axis2的下载和安装 1.可从http://ws.apache.org/axis2/ 下 ...
- 转载 使用axis2构建webservice
axis2是可以实现webservice的一个插件,使用这个插件可以发布webservice 1:可以使用这个插件来发布webservice,可以看网址:http://clq9761.iteye.co ...
- Axis2创建WebService实例
一.Axis2的下载和安装 1.可从http://ws.apache.org/axis2/ 下载Axis2的最新版本: 可以下载如下两个zip包: axis2-1.5.4-bi ...
随机推荐
- AS3和js相互通信要点分析
目标:在html页面里可以使用事件来影响到swf文件的内容,swf文件也可以影响html里js代码的内容 一.新建flash文件,用Flash CC试用版新建一个TextArea.fla的源文件,不添 ...
- 微信webview
会露出灰色的地步 https://segmentfault.com/q/1010000004295291 有说用iscroll5来解决,但是明显有bug啊 https://segmentfault.c ...
- .net网站发布后的没有权限及被上传asp漏洞等问题
前一阶段网站移到阿里云上,发现在线支付出现了问题,也接收不到银行返回的支付信息. 检查了源代码,发现是和支付有关的加密文件位置不对了,以前是放在e盘,现在新的是放在d盘,位置的信息是写死在代码中的.找 ...
- 苹果下如果安装nginx,给nginx安装markdown第三方插件
用brew install nginx 这样安装的是最新版的nginx, 但是在有些情况下,安装第三方插件需要特定的版本,更高一级的版本可能装不上. 它的原理是下载安装包进行自动安装,建立软链,这样就 ...
- 学习docker
虚拟机下Ubuntu环境 1.sudo apt-get update 2.sudo apt-get install docker.io 3.在daocloud(http://www.daocloud. ...
- tweenmax.js 文档
TweenMax 参考http://bbs.9ria.com/thread-214959-1-1.html TweenMax 可能是很多人都用的,包括我 但 是最近发现大量的运用就总会产生这样或那样的 ...
- flash与js交互
当Flash置于HTML容器中时,经常会遇到Flash与JS的通信问题,例如:JS能否调用Flash中的变量.方法,Flash能否调用JS中的变量.方法等等.答案是肯定的.随着技术的不断发展,解决方案 ...
- 解决POST数据时因启用Csrf出现的400错误
第一种解决办法是关闭Csrf public function init(){ $this->enableCsrfValidation = false; } 第二种解决办法是在form表单中加入隐 ...
- 满足NABC的软件创意
创意——几个简单的想法 ——崔海营 创意一: 大学生自行车租借一点通 随着大学生人数的不断增多以及大学生活的空闲时间十分充裕,许多同学十分乐意到一些附近的景点去游玩或者烧烤 ...
- 关闭SqlServer连接
经常使用需要还原数据库又不想关闭已经打开的画面,所以直接上 CREATE PROCEDURE [dbo].[StopLogin] ) AS DECLARE ), ) BEGIN IF (@Dname ...