转自: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. UVALive 3635 Pie 切糕大师 二分

    题意:为每个小伙伴切糕,要求每个小盆友(包括你自己)分得的pie一样大,但是每个人只能分得一份pie,不能拿两份凑一起的. 做法:二分查找切糕的大小,然后看看分出来的个数有没有大于小盆友们的个数,它又 ...

  2. WildFly8.1(JBoss)+mod_cluster(Apache)群集配置

    继上次使用mod_jk传导Apache+JBoss群集配置后,.因为JBoss5.1启动太慢,于是我开始尝试用最新的WildFly8.1构造(WildFly那是,JBoss.在JBoss7之后改名). ...

  3. SessionState的配置 [转载]

    ASP.NET会话状态模块在Web.config文件中<System.web>标记下的<Sessionstate>标记的mode属性来决定该属性的四种可能的值: Off. In ...

  4. SqlServer2008 数据库同步的两种方式 (发布、订阅)

    尊重原著作:本文转载自http://www.cnblogs.com/tyb1222/archive/2011/05/31/2064944.html 上篇中说了通过SQL JOB的方式对数据库的同步,这 ...

  5. Mschart绘制图表之X轴为时间的设置方式

    最近使用C#开发图表,比较了DirectorChart,DontNetCharting,TeeChart,最终选用微软的mschart开发,对于X轴作为时间轴探索了好久,终于实现了想要的效果. 界面效 ...

  6. Spring-----多环境中加载资源配置文件

    转载自:http://blog.csdn.net/hekewangzi/article/details/51942128

  7. Java数组复制

    System提供了一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制.其函数原型是: public static void arraycopy(Object src, int sr ...

  8. JavaWeb核心编程之使用Eclipse开发JavaWEB项目

    文章目录 1.eclipse切换到javaee项目 2.创建服务器(如果没有server选项, 怎么做) 3.定制新建面板内容 4.创建动态web工程 1.eclipse切换到javaee项目 如图 ...

  9. 关于三星手机照相机调用适配问题Android

    因为三星手机在照相的时候,会自动将自动转化为为横屏. 这里的话 就不讲具体怎么实现的,因为在网络上是有相关的代码. 主要的是在你拍完照返回的时候,先前的界面可能会重绘,所以会导致一些问题. 我暂时的办 ...

  10. Extjs springmvc session 超时 处理

    如果你的项目使用ExtJS作为表现层,你会发现,SESSION超时控制将是一个问题.本文将就自己的经验,来解决这一问题,当然,解决问题并非只有一种方法,我只是提出我的方法.首先,做超时控制,必需使用过 ...