Eclipse利用Axis2插件构建Web Service并测试
在学习Web Service的时候,从网上找到前辈的博客http://www.cnblogs.com/hexinlin/p/3358558.html,并依此文的方法按部就班:编写欲发布的java类HelloDemo.java -> 生成.arr文件并发布服务至Tomcat\webapps\axis2\WEB-INF\services\下,且访问http://127.0.0.1:8080/axis2/services/HelloDemo?wsdl成功…但当行至文中步骤“c.生成stub类”,在Axis Codgen wizard向导WSDL file location一栏中填入“http://127.0.0.1:8080/axis2/services/HelloDemo?wsdl”时,报错:“Specified WSDL is invalid!, Please select a validated *.wsdl/*.xml file on previous page.”
package com.hxl.webservice.service;
public class HelloDemo {
public String sayHello(String name) {
return "Hello"+name;
}
public String getResp() {
return "请求被响应";
}
}
一时没找到解决办法,只能另辟蹊径:用原先的HelloDemo.java生成一个WSDL文件HelloDemo.wsdl存在本地——D:\Project\TestWebSer\src\HelloDemo.wsdl。
然后利用HelloDemo.wsdl文件再生成相关的java代码。如下:
ExtensionMapper.java
GetResp.java
GetRespResponse.java
HelloDemoCallbackHandler.java
HelloDemoStub.java
SayHello.java
SayHelloResponse.java
TestMethods.java
在HelloDemoStub.java中“implements HelloDemo”处报错。这是由于HelloDemo.java中的HelloDemo类并非接口interface。只需将“implements HelloDemo”删除即可。
public class HelloDemoStub extends org.apache.axis2.client.Stub implements HelloDemo{
protected org.apache.axis2.description.AxisOperation[] _operations;
然后要做的是实现抽象类HelloDemoCallbackHandler中的receiveResultgetResp和receiveResultsayHello方法,以此来得到你想要的东西:
package com.hxl.webservice.stub; import com.hxl.webservice.service.HelloDemoCallbackHandler;
import com.hxl.webservice.service.SayHelloResponse;
import com.hxl.webservice.service.GetRespResponse; public class MyCallBack extends HelloDemoCallbackHandler { @Override
public void receiveResultgetResp(GetRespResponse result) {
System.out.println(result.getLocal_return());
} @Override
public void receiveResultsayHello(SayHelloResponse result) {
System.out.println(result.getLocal_return());
}
}
然后再写一个方法集中调用的类TestMethods :
package com.hxl.webservice.service;
import com.hxl.webservice.stub.*; import java.rmi.RemoteException; import org.apache.axis2.AxisFault; public class TestMethods {
public void testGetResp() throws Exception{
HelloDemoStub stub = new HelloDemoStub();
GetResp gr = new GetResp();
System.out.println(stub.getResp(gr).get_return());
}
public void testSayHello() throws Exception{ HelloDemoStub stub = new HelloDemoStub();
SayHello sh = new SayHello();
sh.setName(" hxl");
System.out.println(stub.sayHello(sh).get_return());
}
public void testGetAyn() throws Exception {
HelloDemoStub stub = new HelloDemoStub();
GetResp gr = new GetResp();
stub.startgetResp(gr ,new MyCallBack()); SayHello sh = new SayHello();
sh.setName(" Darren!");
stub.startsayHello(sh, new MyCallBack()); System.out.println("异步调用");
System.in.read();
}
}
最后,写一个含main方法的测试类Clnt:
package com.hxl.webservice.service; import java.rmi.RemoteException;
import org.apache.axis2.AxisFault; public class Clnt {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception { TestMethods tm = new TestMethods();
//tm.testGetResp();
//tm.testSayHello();
tm.testGetAyn();
}
}
执行打印结果:
异步调用
请求被响应
Hello Darren!
Eclipse利用Axis2插件构建Web Service并测试的更多相关文章
- IntelliJ IDEA——利用maven插件构建web工程
- 利用Eclipse中的Maven构建Web项目(三)
利用Eclipse中的Maven构建Web项目 1.将Maven Project转换成动态Web项目,鼠标右键项目,输入"Project Facets" 2.依据Dynamic W ...
- 利用Eclipse中的Maven构建Web项目报错(二)
利用Eclipse中的Maven构建Web项目 1.错误描述 [INFO] Scanning for projects... [INFO] [INFO] Using the builder org.a ...
- 利用Eclipse中的Maven构建Web项目报错(一)
利用Eclipse中的Maven构建Web项目 1.在进行上述操作时,pom.xml一直报错 <project xmlns="http://maven.apache.org/POM/4 ...
- 利用Eclipse中的Maven构建Web项目(二)
利用Eclipse中的Maven构建Web项目 1.新建源文件夹,Java Resources鼠标右键,"New-->Source Folder" 2.新建src/main/ ...
- 利用Eclipse中的Maven构建Web项目(一)
利用Eclipse中的Maven构建Web项目 1.新建一个Maven Project,"New-->Other..." 2.选择"Maven Project&qu ...
- 使用XFire+Spring构建Web Service(一)——helloWorld篇
转自:http://www.blogjava.net/amigoxie/archive/2007/09/26/148207.html原文出处:http://tech.it168.com/j/2007- ...
- 使用XFire+Spring构建Web Service
XFire是与Axis 2并列的新一代Web Service框架,通过提供简单的API支持Web Service各项标准协议,帮助你方便快速地开发Web Service应用. 相 对于Axis来说,目 ...
- XFire+Spring构建Web Service经验总结
使用工具 MyEclipse:6.5 ,tomcat6.x. 1.新建web项目,要导入用的包: 2程序结构: 3 web.xml配置文件 <?xml version="1.0&quo ...
随机推荐
- 关于display:inline-block和float:left的区别
<div class="pag"> <a href="#">首页</a> <a href="#"& ...
- MySql学习 (一) —— 基本数据库操作语句、三大列类型
注:该MySql系列博客仅为个人学习笔记. 在使用MySql的时候,基本都是用图形化工具,如navicat.最近发现连最基本的创建表的语法都快忘了... 所以,想要重新系统性的学习下MySql,为后面 ...
- javascript运算符与表达式
表达式 表达式是关键字.运算符.变量以及文字的组合,用来生成字符串.数字或对象.一个表达式可以完成计算.处理字符.调用函数.或者验证数据等操作. 表达式的值是表达式运算的结果,常量表达式的值就是常量本 ...
- php 数组的常用函数
在php教程中数组是种强大的数据类型,他可以做的事情很多,可以存储不同的数据类型在一个数组中,下面我们列出了数组常用的操作,排序,键名对数组排序等做法. /* 数组的常用函数 * * 数组的排序函 ...
- CentOS 安装VNC Server
环境 服务器:192.168.10.181 系统:CentOS 6.0 安装过程 1.切换至root用户 2.检测系统是否安装VNC [root@Nginx canyouNgx]# rpm -q vn ...
- GDB中汇编调试
GDB中汇编调试 1.输入代码 2.使用gcc - g example.c -o example -m32指令在64位的机器上产生32位汇编,时遇到问题使用-m32指令报错,参考卢肖明同学博客知道这是 ...
- MFC -- 遍历Dialog中的子元素(控件)
CWnd *win = GetWindow(GW_CHILD);//获取第一个子控件 while(win) { win代表子控件,可以通过win来获取子控件的信息,如下述两行代码 //iCtrlId ...
- 用PowerMock spy mock private方法
在实际的工作中,经常碰到只需要mock一个类的一部分方法,这时候可以用spy来实现. 被测类: public class EmployeeService { public boolean exist( ...
- Service Broker应用(2):不同server间的数据传输,包含集群
不同Server之间的数据传输,包含DB使用AlwaysOn 配置脚本: SQL Server Service Broker 跨集群通信 具体的TSQL 脚本语句如下.注意的是TSQL语句是在发送方还 ...
- Y+的查看及FLUENT壁面函数的选择
y+的查看 其实,我们关心的应该是壁面y+值.那么我们看云图的话,是可以直接看到的,但是个人感觉,如果case大的话,也不是很方便.此外,你要是看云图的话,要用filled的方式,而且把node va ...