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 ...
随机推荐
- SSM框架学习之高并发秒杀业务--笔记5-- 并发优化
前几节终于实现了这个高并发秒杀业务,现在问题是如何优化这个业务使其能扛住一定程度的并发量. 一. 优化分析 对于整个业务来说,首先是分析哪些地方会出现高并发,以及哪些地方会影响到了业务的性能.可能会出 ...
- AJAX(一、基本知识)
AJAX:Asynchronous ([ə'sɪŋkrənəs; eɪ-])Javascript (['dʒɑ:və,skrɪpt])and XML 异步的Javascript和XMLAJAX不是新的 ...
- PDF 补丁丁 0.5.0.2657 发布
新版本修正了导出图片时由于路径存在空白导致出错.在 Windows 10 和高分辨率显示屏上显示字体模糊.控件尺寸错位等各种问题. 默认显示工具栏.
- Android中dp,px,sp概念梳理以及如何做到屏幕适配
http://blog.csdn.net/jiangwei0910410003/article/details/40509571
- C#之Lock
lock 关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁. class Program { static void Main(string[] args) { Thre ...
- WCF传输图片解决方案
图片无法序列化后传输,但我们可以将图片转二进制字符串传输.然后在服务端将二进制字符串转图片. 将图片转字符串的例子: private byte[] BmpToJpegBuff(Image img) { ...
- js只保留整数,向上取整,四舍五入,向下取整等函数
1.丢弃小数部分,保留整数部分 parseInt(5/2) 2.向上取整,有小数就整数部分加1 Math.ceil(5/2) 3.四舍五入. Math.round(5/2) 4.向下取整 Math.f ...
- UDPClient的用法
UDP_Server: UdpClient receivingUdpClient = ); IPEndPoint RemoteIpEndPoint = ); try { byte[] sdata = ...
- AngularJS的学习笔记(二)
只给自己看的. AngularJS 表达式 angularjs 使用表达式将数据绑定到html中. AngularJS 表达式写在双大括号内:{{ expression }}. AngularJS 表 ...
- google closure--继承模块一:goog.inherits()
最近在项目是使用了google closure框架,深入研究了一下源码,先从最简单的继承系统吧. 废话不多说,closure继承模块主要有2个API: goog.inherits(childCtor, ...