`
mzh_2008beijing
  • 浏览: 230517 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一个简单的AXIS远程调用Web Service示例

阅读更多
      我们通常都将编写好的Web Service发布在Tomcat或者其他应用服务器上,然后通过浏览器调用该Web Service,返回规范的XML文件。但是如果我们不通过浏览器调用,而是通过客户端程序调用,该如何实现?
     接下来,我们利用Eclipse作为开发工具,演示一个Axis调用WebService的简单示例。步骤如下:
    
     第一步:新建Web Project 。
     第二步:导入AXIS类库。(官方下载:http://apache.etoak.com//axis/axis2/java/core/1.5.4/axis2-1.5.4-bin.zip)(即把下载包里../lib/目录下的jar文件拷贝到工程的classpath下。  )
     第三步:新建一个简单的连接字符串的类HelloWorld.java:
package com.mzh.webservice;
public class HelloWorld {
	
	public String connectStr(String str1,String str2,int flag){
		String resultStr="no str";
		if(flag==1){
			resultStr=str1+"---"+str2;
		}else if(flag==2){
			resultStr=str2+"---"+str1;
		}
		System.out.println(resultStr);
		return resultStr;
	}
}

     第四步:右击HelloWorld.java---Web Services---Create Web service.依次点击下一步……finish。此时发现WebContent目录下生成一个wsdl目录,目录下有一个HelloWorld.wsdl
     第五步:测试web service :右击HelloWorld.wsdl---Web Services---Test with Web Services Explorer---点击方法名connectStr----输入参数mzh,zyd,1---点go.此时会发现控制台输出mzh---zyd,说明测试成功。WebService没有问题。
      第六步:编写客户端调用类,利用AXIS远程调用HelloWorld.(为了体现远程调用,把此类放到另外一个工程里去)代码如下:
import java.rmi.RemoteException;
import javax.xml.rpc.ServiceException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

public class HelloWorldTest {
   public String invokeRemoteFuc(){
      String endpoint=
            "http://192.168.1.236:8080/Axis2/services/HelloWorld";
      String result ="no result!";
      Service service = new Service();
      Call call;
      try {
          call=(Call)service.createCall();
          call.setTargetEndpointAddress(endpoint);//远程调用路径
	 call.setOperationName("connectStr");//调用的方法名
	  //设置参数名:
	 
   call.addParameter("str1", //参数名
	org.apache.axis.encoding.XMLType.XSD_STRING,//参数类型:String
	javax.xml.rpc.ParameterMode.IN);//参数模式:'IN' or 'OUT'
	
   call.addParameter("str2", //参数名
	org.apache.axis.encoding.XMLType.XSD_STRING,//参数类型:String
	javax.xml.rpc.ParameterMode.IN);//参数模式:'IN' or 'OUT'
	
   call.addParameter("flag", //参数名
	org.apache.axis.encoding.XMLType.XSD_INT,//参数类型:INT
	javax.xml.rpc.ParameterMode.IN);//参数模式:'IN' or 'OUT'
      //设置返回值类型:
	call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//返回值类型:String
	String str1="mzh";
	String str2="zyd";
	int flag=1;
	result = (String)call.invoke(new Object[]{str1,str2,flag});//远程调用
     } 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);
  }

}

   注意:1、设置方法名和参数名的时候,必须与被调用的WebService保持一致;2、传递的参数需封装到了一个Object数组里)
    第七步:测试:HelloWorldTest ---Run as---Java application,如果发现控制台正确输出  mzh---zyd.说明测试成功。
     第八步:至此,大功告成!
分享到:
评论
4 楼 z2007130205 2014-05-19  
楼主真缺!!!!!这代码真无语。。。
3 楼 u010029812 2014-01-03  
右击HelloWorld.java---Web Services---Create Web service.依次点击下一步……finish?
这个在哪里??怎么没找到呢?
2 楼 mzh_2008beijing 2012-08-25  
zhuhuqiu 写道
楼主,我写你的例子,在控制台没有打印mzh--zyd,可打印到no str,这说明什么呢?调用没成功!

没有抛异常吗?没有的话检查一下flag参数。
1 楼 zhuhuqiu 2012-08-23  
楼主,我写你的例子,在控制台没有打印mzh--zyd,可打印到no str,这说明什么呢?调用没成功!

相关推荐

    Java 调用wsdl例子

    AXIS调用远程的web service

    致远A8-M平台API参考手册

    A8 平台提供基于 axis2 1.4 实现的标准 Web service。...4、 示例代码参考每一接口的本地调用。 注意:如果使用 ADB Client Stub 方式编写客户端代码,A8 升级以后必须重新生成并更新客户端的 Stub!!!

    DataXServer:为DataX(https:github.comalibabaDataX)提供远程多语言调用(ThriftServer,HttpServer)分布式运行(YARN上的DataX)功能

    为提供远程调用(Thrift服务器,Http服务器)分布式运行(YARN上的DataX)功能 特征 节俭服务器 纱线上的DataX Http服务器 单机多线程方式运行 单机多进程方式运行 分散运行(在纱线上) 混合模式运行(Yarn +多...

    web service

    "SOAP是在非集中、分布环境中交换信息的轻量级协议...它是基于XML的协议,包括三个部分: 封套(envelope)定义了消息内容和处理的框架、一套编码规则用来表达应用定义数据类型的实例以及表达远程过程调用和响应的协定。

    Sybase ASE 15.7 开发文档:Web 服务用户指南

    调用 Web 服务 .......... 38 使用用户定义的 Web 服务 .......... 40 用户定义的 Web 服务的命令 .......... 41 将 sp_webservices 与用户定义的 Web 服务一起使用 .......... 45 用户定义的 Web 服务的安全性 .......

    JSP API接口和返回的版本

    是的,在 JavaScript 中远程调用都是采用异步方式的,也就是说要获得结果,需要用回调函数,回调函数作为远程方法的最后一个参数,回调函数也有四个参数,这里我们只使用第一个参数,也就是返回结果 result,通过 ...

    hessdroid-android

    hessdroid 是 Resin 的 Hessian 二进制远程调用框架在 Android 上的移植版本。非官方。 示例代码: String webServiceUrl = "https://localhost/testAPI"; HessianProxyFactory proxyFactory = new ...

    Java编程Webservice指定超时时间代码详解

    主要介绍了Java编程Webservice指定超时时间代码详解,简单介绍了webservice,然后分享了通过使用JDK对Webservice的支持进行Webservice调用实现指定超时时间完整示例,具有一定借鉴价值,需要的朋友可以参考下。

    asp.net知识库

    制作一个简单的多页Tab功能 一完美的关于请求的目录不存在而需要url重写的解决方案! 在C#中实现MSN消息框的功能 XmlHttp实现无刷新三联动ListBox 鼠标放在一个连接上,会显示图片(类似tooltip) 使用microsoft.web.ui...

    ASP API接口和返回的版本

    是的,在 JavaScript 中远程调用都是采用异步方式的,也就是说要获得结果,需要用回调函数,回调函数作为远程方法的最后一个参数,回调函数也有四个参数,这里我们只使用第一个参数,也就是返回结果 result,通过 ...

    PHP API接口和返回的版本

    是的,在 JavaScript 中远程调用都是采用异步方式的,也就是说要获得结果,需要用回调函数,回调函数作为远程方法的最后一个参数,回调函数也有四个参数,这里我们只使用第一个参数,也就是返回结果 result,通过 ...

    .NET API接口和返回的版本

    是的,在 JavaScript 中远程调用都是采用异步方式的,也就是说要获得结果,需要用回调函数,回调函数作为远程方法的最后一个参数,回调函数也有四个参数,这里我们只使用第一个参数,也就是返回结果 result,通过 ...

    JS JSP ASP .NET J2AM API接口和返回的版本

    是的,在 JavaScript 中远程调用都是采用异步方式的,也就是说要获得结果,需要用回调函数,回调函数作为远程方法的最后一个参数,回调函数也有四个参数,这里我们只使用第一个参数,也就是返回结果 result,通过 ...

    JS API接口和返回的版本

    是的,在 JavaScript 中远程调用都是采用异步方式的,也就是说要获得结果,需要用回调函数,回调函数作为远程方法的最后一个参数,回调函数也有四个参数,这里我们只使用第一个参数,也就是返回结果 result,通过 ...

    2AM API接口和返回的版本

    是的,在 JavaScript 中远程调用都是采用异步方式的,也就是说要获得结果,需要用回调函数,回调函数作为远程方法的最后一个参数,回调函数也有四个参数,这里我们只使用第一个参数,也就是返回结果 result,通过 ...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    第三部分提供了一个jsf+ejb 3+ jpa整合开发的项目:电子拍卖系统。这个项目包括5个实体,这5个实体之间具有复杂的关联关系,而且业务逻辑也相对复杂,希望让读者理论联系实际,真正将jsf+ejb 3+jpa整合真正运用到...

    J2EE中文版指南 CHM格式 带全文检索

    增加一个Web组件到WAR文件中 150 配置Web客户 151 应用级配置 151 WAR级的配置 151 组件及配置 151 部署网络客户 152 运行网络客户 152 更新网络客户 152 国际化网络客户 152 第10章 Java Servlet技术 153 什么是...

    Spring.net框架

    在这个系列中一共包含6个案例,从简单到复杂,也是对问题分解、思考和解决的一个过程,它们分别是: (1)类之间的依赖; 降低 (2)接口依赖; (3)基 于配置文件和Reflection的工厂模式; (4)使用Spring.net...

    vfp6.0系统免费下载

    但是,如果在设计时刻 Scrollbars 属性设置为非 0 值,Visual FoxPro 就会允许在运行时刻对 Scrollbars 属性进行读写,因为有代码可调用 SAVEAS() 函数以创建一个带有滚动条的新表单。如果您不需要带滚动条的表单...

Global site tag (gtag.js) - Google Analytics