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!

时间: 2024-10-05 05:02:03

Eclipse利用Axis2插件构建Web Service并测试的相关文章

Axis2发布webservice(2)--利用eclipse的axis2插件打包为arr发布

一.编写webservice的java文件 在eclipse中新建java project,然后新建一个java类,我这里命名为:ManagerUserService.java,源代码: package com.hoo.service; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; import

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

利用Eclipse中的Maven构建Web项目 1.新建一个Maven Project,"New-->Other..." 2.选择"Maven Project" 3.选择项目路径 Usedefault Workspace location默认工作空间, 选择项目类型 在Artifact Id中选择maven-archetype-webapp 4.分别输入Group Id.Artifact Id和Package,单击"Finish" 5.Ma

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

利用Eclipse中的Maven构建Web项目 1.新建源文件夹,Java Resources鼠标右键,"New-->Source Folder" 2.新建src/main/java   src/main/resources  src/test/java  src/test/resources四个源包 3.双击每个文件夹的Output folder,选择路径 src/main/java和src/main/resources,选择路径target/classes; src/test

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

利用Eclipse中的Maven构建Web项目 1.将Maven Project转换成动态Web项目,鼠标右键项目,输入"Project Facets" 2.根据Dynamic Web Module的版本修改Java Compiler中的"Compiler compliance level"的版本 3.设置部署程序集(Web Deployment Assembly),删除含有"test" 4.将Maven的jar包发布到lib下, "A

利用Eclipse中的Maven构建Web项目报错

利用Eclipse中的Maven构建Web项目 1.在进行上述操作时,pom.xml一直报错 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.o

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

利用Eclipse中的Maven构建Web项目 1.错误描写叙述 [INFO] Scanning for projects... [INFO] [INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder with a thread count of 1 [INFO] [INFO] ---------------------------------

使用XFire+Spring构建Web Service

XFire是与Axis 2并列的新一代Web Service框架,通过提供简单的API支持Web Service各项标准协议,帮助你方便快速地开发Web Service应用. 相 对于Axis来说,目前XFire相对受欢迎,加上其提供了和Spring集成的支持,在目前的Web Service开源社区拥有众多的追随者.并且因为XFire为Spring提供的支持,使得我们可以很容易在Spring中使用XFire构建Web Service应用. XFire与Axis2相比具有如下特征: l      

利用php soap实现web service

php有两个扩展可以实现web service,一个是NuSoap,一个是php 官方的soap扩展,由于soap是官方的,所以我们这里以soap来实现web service.由于默认是没有打开soap扩展的,所以自己先看一下soap扩展有没有打开. 在soap编写web service的过程中主要用到了SoapClient,SoapServer,SoapFault三个类. SoapClient类 这个类用来使用Web services.SoapClient类可以作为给定Web services

怎么实现在jenkens页面配置sonar,以及如何利用cobertura插件实现sonar页面显示测试覆盖率

最近我在工作中遇到需要给项目中每个模块配置Sonarqube,来看看测试用例覆盖的情况.在这个过程中遇到了一些问题,也查了很多资料.现在记录一下具体应该怎么配置. 先展示一下实现的效果: 图一 It will show: 图二 现在来看看具体配置: 要enable Sonarqube, 需在 job --> configure --> Post-build Actions 配置Branch 和 JDK 信息: 图三 配置好了以后,SonarQube 可以在页面上显示出来了,点击进去,效果图:[