在学习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并测试的更多相关文章

  1. IntelliJ IDEA——利用maven插件构建web工程

  2. 利用Eclipse中的Maven构建Web项目(三)

    利用Eclipse中的Maven构建Web项目 1.将Maven Project转换成动态Web项目,鼠标右键项目,输入"Project Facets" 2.依据Dynamic W ...

  3. 利用Eclipse中的Maven构建Web项目报错(二)

    利用Eclipse中的Maven构建Web项目 1.错误描述 [INFO] Scanning for projects... [INFO] [INFO] Using the builder org.a ...

  4. 利用Eclipse中的Maven构建Web项目报错(一)

    利用Eclipse中的Maven构建Web项目 1.在进行上述操作时,pom.xml一直报错 <project xmlns="http://maven.apache.org/POM/4 ...

  5. 利用Eclipse中的Maven构建Web项目(二)

    利用Eclipse中的Maven构建Web项目 1.新建源文件夹,Java Resources鼠标右键,"New-->Source Folder" 2.新建src/main/ ...

  6. 利用Eclipse中的Maven构建Web项目(一)

    利用Eclipse中的Maven构建Web项目 1.新建一个Maven Project,"New-->Other..." 2.选择"Maven Project&qu ...

  7. 使用XFire+Spring构建Web Service(一)——helloWorld篇

    转自:http://www.blogjava.net/amigoxie/archive/2007/09/26/148207.html原文出处:http://tech.it168.com/j/2007- ...

  8. 使用XFire+Spring构建Web Service

    XFire是与Axis 2并列的新一代Web Service框架,通过提供简单的API支持Web Service各项标准协议,帮助你方便快速地开发Web Service应用. 相 对于Axis来说,目 ...

  9. XFire+Spring构建Web Service经验总结

    使用工具 MyEclipse:6.5 ,tomcat6.x. 1.新建web项目,要导入用的包: 2程序结构: 3 web.xml配置文件 <?xml version="1.0&quo ...

随机推荐

  1. docker --命令

    1.开启服务 sudo docker start 服务名 2.预览列出所有的容器 sudo docker ps -a 3.进入文件 cd 4.预览文件目录 ls 5.预览文件内容 more 6.拷贝文 ...

  2. css3中webkit-box的用法

    转自:http://www.frontopen.com/288.html 1.之前要实现横列的web布局,通常就是float或者display:inline-block; 但是都不能做到真正的流体布局 ...

  3. jenkins安装配置-白痴教程

    1. Maven安装 下载maven安装包,放置在usr/maven目录下:apache-maven-3.2.5-bin.tar.gz tar zxvf apache-maven-3.2.5-bin. ...

  4. EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(二)

    前言 写完第一篇后,我一直在想接下来应该从哪一方面开始讲.后来我觉得不用那么死板的把每一个课程和大纲都列出来吧,毕竟我又不是教书的,呵呵...我觉得就像做实验一样,我们一部分一部分的完成,最后总个结果 ...

  5. Python的50个模块,满足你各种需要

    Python具有强大的扩展能力,我列出了50个很棒的Python模块,包含几乎所有的需要:比如Databases,GUIs,Images, Sound, OS interaction, Web,以及其 ...

  6. 美化iTerm2

    一.下载iTerm2,启动 二.安装oh-my-zsh curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/insta ...

  7. Bootstrap<基础十五> 输入框组

    Bootstrap 支持的另一个特性,输入框组.输入框组扩展自 表单控件.使用输入框组,可以很容易地向基于文本的输入框添加作为前缀和后缀的文本或按钮. 通过向输入域添加前缀和后缀的内容,您可以向用户输 ...

  8. SpringMVC 视图和视图解析器&表单标签

    视图和视图解析器 请求处理方法执行完成后,最终返回一个 ModelAndView 对象.对于那些返回 String,View 或 ModeMap 等类型的处理方法,Spring MVC 也会在内部将它 ...

  9. SIGKDD历年Best Papers

    作者:我爱机器学习原文链接:SIGKDD历年Best Papers SIGKDD(Data Mining)(1997-2016) 年份 标题 一作 一作单位 2016 FRAUDAR: Boundin ...

  10. RabbitMQ Step by step(一) 安装

    RabbitMQ是一个消息中间件,可以存储转发消息,个人感觉优越于MSMQ RabbitMQ官方网站(http://www.rabbitmq.com)可以获取到安装文件,建议大家详细浏览官方网站,官方 ...