转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/10/3071584.html

我们将Web Service发布在Tomcat或者其他应用服务器上后,有两种方法可以调用该Web Service:

1、通过浏览器调用,返回规范的XML文件
      2、通过客户端程序调用,返回结果可自定义格式

接下来,我利用Eclipse J2EE作为开发工具,演示一个Axis调用WebService的简单示例
      第一种调用见我的另一篇博文:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/10/3072216.html
      步骤如下: 
     
     准备工作:下载AXIS2最新版(官方下载:http://axis.apache.org/axis2/java/core/download.cgi),导入AXIS类库,即把下载包里../lib/目录下的jar文件拷贝到工程的WEB-INF下的lib文件里

需要的jar包列表:

第一步:新建Web Project,项目名称为WebServiceTest
      
      第二步:新建一个简单的打印字符串的类HelloService.java:

 package com.sinosoft.webservice;

 public class HelloService {
/**
* 不带参数的函数
*
* @return 返回Hello字符串
*/
public String sayHello() {
return "Hello";
} /**
* 带参数的函数
*
* @param name
* 名称
* @return 返回加上名称的欢迎词
*/
public String sayHelloToPerson(String name) {
if (name == null || name.equals("")) {
name = "nobody";
}
return "Hello " + name;
}
}

第三步:右击HelloService.java---Web Services---Create Web service.依次点击下一步……finish,此时发现WebContent目录下生成一个wsdl目录,目录下有一个HelloService.wsdl

第四步:测试 web service :右击HelloService.wsdl---Web Services---Test with Web Services Explorer---点击方法名connectStr----输入参数XXX---点go.此时会发现控制台输出Hello,XXX,说明 测试成功,WebService没有问题

第五步:编写客户端调用类HelloWorldTest,利用AXIS2远程调用HelloWorld(为了体现远程调用,新建一个Project,名称为AxisTest),代码如下:

 package com.test;

 import java.rmi.RemoteException;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType; import com.util.UtilProperties; public class HelloWorldTest { public String invokeRemoteFuc() {
// 远程调用路径
// String endpoint = "http://localhost:8082/WebServiceTest/services/HelloService";
//webservice的访问地址,这里是封装成了一个工具方法,根据文件名以及键来获取写在properties文件里的访问地址
String endpoint = UtilProperties.getValueByKeyViaProp("myendpointAddress", "ws.properties");
//预定义失败的默认返回值
String result = "call failed!";
//步骤1 构建 org.apache.axis.client.Service 对象
Service service = new Service();
Call call;
try {
// 步骤2:通过org.apache.axis.client.Service对象创建一个Call,需要强转为 org.apache.axis.client.Call类型
call = (Call) service.createCall();
// 步骤3:设置目标地址,即需要访问的webservice地址
call.setTargetEndpointAddress(endpoint);
// 步骤4:设置调用的方法名
call.setOperationName("sayHelloToPerson"); // 步骤5: 设置参数名
call.addParameter("name", // 参数名
XMLType.XSD_STRING, // 参数类型:String
ParameterMode.IN); // 参数模式:'IN' or 'OUT' // 步骤6:设置返回值类型
call.setReturnType(XMLType.XSD_STRING); // 返回值类型:String
String name = "WEIYONGLE";
//步骤7 :调用call.invoke(Object[] obj)方法
result = (String) call.invoke(new Object[] { name });// 远程调用
} catch (ServiceException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
} return result;
} // 测试
public static void main(String[] args) {
HelloWorldTest test = new HelloWorldTest();
String result = test.invokeRemoteFuc();
System.out.println(result);
} }

第六步:测试:HelloWorldTest ---Run as---Java application,如果发现控制台正确输出Hello WEIYONGLE,说明测试成功

     注意:1、设置方法名和参数名的时候,必须与被调用的WebService保持一致
              2、传递的参数需封装到了一个Object数组里
              3、远程调用路径endpoint为第四步测试中EndPoints

AXIS2远程调用WebService示例(Eclipse+AXIS)的更多相关文章

  1. Httpclient远程调用WebService示例(Eclipse+httpclient)

    package cn.com.taiji.pos.httpserver; import java.io.BufferedInputStream;import java.io.ByteArrayOutp ...

  2. Httpclient远程调用WebService示例

    我们将Web Service发布在Tomcat或者其他应用服务器上后,有很多方法可以调用该Web Service,常用的有两种: 1.通过浏览器HTTP调用,返回规范的XML文件内容      2.通 ...

  3. Java动态调用webService,axis2动态调用webService

    Java动态调用webService axis2动态调用webService >>>>>>>>>>>>>>>& ...

  4. 使用AXIS2客户端调用 WEBSERVICE

    问题 在调用WEBSERVICE时,可以使用wsdl2java生成java代码,调用接口,这种方法在接口固定的情况下是一种不错的选择,如果需要动态调用接口,那么这样就行不通了. 解决办法 1.直接构建 ...

  5. Java利用Axis远程调用WebService接口

    准备工作: 主要依赖的包: 1.axis.jar 官网:http://axis.apache.org/axis/ 2.jaxrpc.jar 下载地址:http://www.java2s.com/Cod ...

  6. asp.net远程调用WebService的两种方法(转载)

    一,静态方法在“解决方案‘项目名’” -> 相应的文件夹,如“Web References” ->右键“添加WEB引用”->在URL里写入地址.二,动态方法在“解决方案‘项目名’” ...

  7. WebService远程调用(命令行调用)

    远程调用webservice 方法, 通过wsdl命令,生成webservice 对应asmx 文件的对应类(cs文件),然后将此cs文件引用到当前项目中,项目其他地方需要调用webservice方法 ...

  8. Java调用WebService方法总结(4)--Axis调用WebService

    Axis是比较常用的WebService框架,该项目在2006实现了最终版,后面就没有更新了.文中demo所使用到的软件版本:Java 1.8.0_191.Axis 1.4. 1.准备 参考Java调 ...

  9. Android使用ksoap2-android调用WebService学习

    之前主要做客户端UI交互,很少处理数据和接触服务端,但现在的移动设备根本不可能离得开网络连接,数据的交换.最近学习的是在android端如何去调用远程WebService,都说WebService是一 ...

随机推荐

  1. AngularJS初始用之 中间件 connect .static 静态文件不能找到

    学习心得,软件更新太快,学习不能照书本. 在学习搭建Nodejs服务器时,掉坑了啦,太坑了,对于什么都不知道的初学者,开门就是坑...,怎么坚持学下去... 还好,现在的世界很大,如果你发现自己不是犯 ...

  2. 解析word中的表格

    由于word表格的特殊性,其本身中的数据本来就不够完善,不能够很好的知道其具体的合并.跨行的相关属性,表格的单位可能是PT或者是百分比,并且是共存的,为处理带来了一定的负担,本代码实现了一个将Word ...

  3. OCP prepare 20140703

    1. trim trim('aaa' from 'aaabbbccc') 这个是错误的.ora-30001: trim set should have only one character 2. in ...

  4. Linux学习之(())操作符

    在刚开始学习inux shell脚本编程时候,对于它的 四则运算以及逻辑运算.估计很多朋友都感觉比较难以接受.特变逻辑运算符”[]”使用时候,必须保证运算符与算数 之间有空格. 四则运算也只能借助:l ...

  5. Android 监听器

    Android提供很多种事件监听器,监听器主要是为了相应某个动作,可以通过监控这种动作行为,来完成我们需要的程序功能.      OnItemClickListener:               ...

  6. Flink资料(1)-- Flink基础概念(Basic Concept)

    Flink基础概念 本文描述Flink的基础概念,翻译自https://ci.apache.org/projects/flink/flink-docs-release-1.0/concepts/con ...

  7. 简洁的PHP操作SQLite类

    SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了. ...

  8. C#递归树

    protected void Page_Load(object sender, EventArgs e) { bindtree(PopId); } private void bindtree() { ...

  9. Entity Framework 数据部分更新之Attach &&Detach

    我们经常会遇到这样的问题:Update一个entity的部分数据时,通常需要new一个新的对象,然后事这新的对象Attach到Context中,代码如下所示: /// <summary> ...

  10. sketch 跟随鼠标指针移动的特效

    演示地址:http://www.ke01.com/yanshi/sucai/20140830/2/ 下载地址:https://yunpan.cn/cqgWeIYPer8eC  访问密码 672b