使用axis2实现web service(三)
来源:互联网 发布:网络电视能看电视台吗 编辑:程序博客网 时间:2024/05/22 10:29
上一篇记录了不使用stub方式实现对web service接口的调用,今天记录通过stub方式实现对web service 接口的调用,具体如下:
前提:有一个web service接口,wsdl:http://localhost:8080/axis2/services/Hello?wsdl ,方法声明是:
public String sayHello(String user)
创建客户端的步骤:
1、建一个java project
2、选中1中project,右键-->new-->other....-->Axis2 Code Generator
3、点next,进入下一个页面,选择:Generate Java source code from a WSDL file
4、点next,在WSDL file location 中输入:http://localhost:8080/axis2/services/Hello?wsdl
5、点击next,进入设置页面,不熟悉的话,暂用默认设置
6、点击next,选择输出文件的路径:
这里选择 Browse and select location on local file system,Output path 通过Browse 选择1中建立的java project,注:只选择到src文件即可,下面的不用再选,axis2会自动帮你生成package,下面两个Add选项可根据情况选择
7、点击next,如果弹出successfully提示框,则说明ok了,否则需要找问题原因,并解决,我在使用的时候,遇到了如下问题:
弹出提示框:Axis2 Eclipse plugin: Code Generator Exception: java.lang.reflect.InvocationTargetException
网上查得原因及解决方法(http://blog.163.com/gym_1119/blog/static/34559867200910159245578/):
[问题原因]
主要的问题在于 Code Generator plugin 内缺少了 backport-util-concurrent-3.1.jar 包
[解决方案]
- 关闭 Eclipse
- copy %AXIS2_HOME%/lib/backport-util-concurrent-3.1.jar 到下列 folder
%ECLIPSE_HOME%/plugins/Axis2_Codegen_Wizard_1.3.0/lib
- 注册此 jar 包: 編輯 %ECLIPSE_HOME%/plugins/Axis2_Codegen_Wizard_1.3.0/plugin.xml , 在 <runtime> 內加入下面的字串
<library name="lib/backport-util-concurrent-3.1.jar">
<export name="*"/>
</library>
- 执行 Eclipse 即可
- 若问题仍存在, 尝试改变Eclipse 使用的 JRE, 换成 JAVA 6
- 使用 JRE 1.6 启动 Eclipse 后, 若仍有问题, 试着加入 -clean 参数启动 Eclipse, 清除 osig cache:
eclipse.exe -vm "c:/java/jre1.6.0_05/bin/java.exe" -clean -console -consoleLog -debug -vmargs -Xmx384M
- 关闭 Eclipse 后, 再以一般方式启动 Eclipse, 应可解决问题
我是添加jar包后,执行了eclipse.exe -vm "c:/java/jre1.6.0_05/bin/java.exe" -clean -console -consoleLog -debug -vmargs -Xmx384M 命令,后解决了问题的
8、完成步骤7后,刷新步骤1中的project,发现project的src下多了一个briup包,包下有2个java文件:HelloCallbackHander.java 、HelloStub.java (我的web service服务名字叫Hello)
9、步骤8中刷新后,会出现却包提示的错误,将对应的包导入即可,较方便的办法是将axis2 lib目录下所有的包到到一个user library中,然后将该user library导入工程中。
10、新建一个package,在该package下建你调用服务的类,这里我见了一个类,然后调用接口。写了一个简单的例子,其他的可以依葫芦画瓢:
- package client;
- import java.rmi.RemoteException;
- import briup.HelloStub;
- public class HelloClient {
- /**
- * @param args
- * @throws RemoteException
- */
- public static void main(String[] args) throws RemoteException {
- HelloStub stub=new HelloStub();
- HelloStub.SayHello request=new HelloStub.SayHello();
- request.setUser("karen ");
- System.out.println(stub.sayHello(request).get_return());
- }
- }
11、运行,控制台上打印出如下内容:
log4j:WARN No appenders could be found for logger (org.apache.axis2.description.AxisService).
log4j:WARN Please initialize the log4j system properly.
Hello,karen
12、ok,over了!
- 使用axis2实现web service(三)
- 使用axis2实现web service(三)
- Axis2 Web Service(三)
- Axis2 Web Service(三)
- 使用axis2实现web service接口(一)
- 使用axis2实现web service接口(一)
- axis2创建web service(三)
- axis2创建web service(三)
- axis2创建web service(三)
- axis2创建web service(三)
- axis2实现web service(二)
- axis2实现web service(二)
- 使用Axis2调用Web Service
- 使用Axis2实现Web Service的用户会话
- 使用Axis2实现Web Service的用户会话
- 使用Axis2-1.6.1实现第一个Web Service
- eclipse下axis2创建web service(三)
- 新一代Web Service 实现包 -- AXIS2 学习笔记 (一)
- curl中 curl_getinfo()返回信息一览
- Unicode UCS UTF-8 GBK BIG5的关系
- lucene QueryParser用法示例
- 触摸屏移植
- 剖析开源云和基础架构技术(1)
- 使用axis2实现web service(三)
- 微软闯进开源社区:是福音还是魔咒?(1)
- 搭建GlusterFS集群-Replicated Volumes
- eclipse中的快捷键
- 学习编程语言时需要注意的内容
- 书香与女人
- 类之间的四种关系
- 使用自定义配置节,使配置项转化为字典集(.NET)
- 搭建GlusterFS集群-Striped Volumes