我们通常都将编写好的Web Service发布在Tomcat或者其他应用服务器上,然后通过浏览器调用该Web Service,返回规范的XML文件。但是如果我们不通过浏览器调用,而是通过客户端程序调用,该如何实现? 
     接下来,我们利用Eclipse作为开发工具,演示一个Axis调用WebService的简单示例。步骤如下: 
     
     第一步:新建Web Project (一定要是web project,不能是java project)。 
     第二步:导入AXIS类库。(官方下载:http://apache.etoak.com//axis/axis2/java/core/1.5.4/axis2-1.5.4-bin.zip)(即把下载包里../lib/目录下的jar文件拷贝到工程的classpath下。  ) ,使用maven的话,此步忽略。
     第三步:新建一个简单的连接字符串的类HelloWorld.java:

  1. package com.mzh.webservice;
  2. public class HelloWorld {
  3. public String connectStr(String str1,String str2,int flag){
  4. String resultStr="no str";
  5. if(flag==1){
  6. resultStr=str1+"---"+str2;
  7. }else if(flag==2){
  8. resultStr=str2+"---"+str1;
  9. }
  10. System.out.println(resultStr);
  11. return resultStr;
  12. }
  13. }

第四步:右击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.(为了体现远程调用,把此类放到另外一个工程里去)代码如下:

  1. import java.rmi.RemoteException;
  2. import javax.xml.rpc.ServiceException;
  3. import org.apache.axis.client.Call;
  4. import org.apache.axis.client.Service;
  5. public class HelloWorldTest {
  6. public String invokeRemoteFuc(){
  7. String endpoint=
  8. "http://192.168.1.236:8080/Axis2/services/HelloWorld";
  9. String result ="no result!";
  10. Service service = new Service();
  11. Call call;
  12. try {
  13. call=(Call)service.createCall();
  14. call.setTargetEndpointAddress(endpoint);//远程调用路径
  15. call.setOperationName("connectStr");//调用的方法名
  16. //设置参数名:
  17. call.addParameter("str1", //参数名
  18. org.apache.axis.encoding.XMLType.XSD_STRING,//参数类型:String
  19. javax.xml.rpc.ParameterMode.IN);//参数模式:'IN' or 'OUT'
  20. call.addParameter("str2", //参数名
  21. org.apache.axis.encoding.XMLType.XSD_STRING,//参数类型:String
  22. javax.xml.rpc.ParameterMode.IN);//参数模式:'IN' or 'OUT'
  23. call.addParameter("flag", //参数名
  24. org.apache.axis.encoding.XMLType.XSD_INT,//参数类型:INT
  25. javax.xml.rpc.ParameterMode.IN);//参数模式:'IN' or 'OUT'
  26. //设置返回值类型:
  27. call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//返回值类型:String
  28. String str1="mzh";
  29. String str2="zyd";
  30. int flag=1;
  31. result = (String)call.invoke(new Object[]{str1,str2,flag});//远程调用
  32. } catch (ServiceException e) {
  33. e.printStackTrace();
  34. } catch (RemoteException e) {
  35. e.printStackTrace();
  36. }
  37. return result;
  38. }
  39. //测试:
  40. public static void main(String[] args){
  41. HelloWorldTest test = new HelloWorldTest();
  42. String result = test.invokeRemoteFuc();
  43. System.out.println(result);
  44. }
  45. }

注意:1、设置方法名和参数名的时候,必须与被调用的WebService保持一致;2、传递的参数需封装到了一个Object数组里) 
    第七步:测试:HelloWorldTest ---Run as---Java application,如果发现控制台正确输出  mzh---zyd.说明测试成功。 
     第八步:至此,大功告成!

以下为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.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>WS_AXIS_TEST</groupId>
<artifactId>WS_AXIS_TEST</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build> <dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.axis/axis -->
<dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.axis/axis-jaxrpc -->
<dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis-jaxrpc</artifactId>
<version>1.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-discovery/commons-discovery -->
<dependency>
<groupId>commons-discovery</groupId>
<artifactId>commons-discovery</artifactId>
<version>0.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/wsdl4j.wso2/wsdl4j -->
<!-- https://mvnrepository.com/artifact/wsdl4j/wsdl4j -->
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version>1.6.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.activation/activation -->
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.mail/mail -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.4</version>
</dependency> </dependencies>
</project>

一个简单的AXIS远程调用Web Service示例的更多相关文章

  1. C#开发和调用Web Service

    http://blog.csdn.net/h0322/article/details/4776819 1.1.Web Service基本概念 Web Service也叫XML Web Service ...

  2. php5调用web service

    工作中需要用php调用web service接口,对php不熟,上网搜搜,发现关于用php调用web service的文章也不多,不少还是php4里用nusoap这个模块调用的方法,其实php5里已经 ...

  3. ASP.NET调用Web Service

    1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求, ...

  4. php5调用web service (笔者测试成功)

    转自:http://www.cnblogs.com/smallmuda/archive/2010/10/12/1848700.html 感谢作者分享 工作中需要用php调用web service接口, ...

  5. C#之VS2010ASP.NET页面调用Web Service和winform程序调用Web Service

    一:用ASP.NET调用Web Service 打开VS2010,打开“文件-新建-网站”,选择“ASP.NET网站” 选好存储位置,语言后点击确定,进入默认页面.然后先添加Web引用,把WebSer ...

  6. C# 调用 Web Service

    Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术.是:通过SOAP ...

  7. 使用wsimport和JAX-WS调用Web Service接口

    本文简单举例说明如何使用wsimport工具和JAX-WS API调用Web Service接口.此方法的优点:使用JDK自带的工具和API接口,无需依赖第三方库. JDK版本:1.8.0_141开发 ...

  8. 工作笔记 | Visual Studio 调用 Web Service

    引言 最近笔者负责ERP财务系统跟中粮集团财务公司的财务系统做对接,鉴于ERP系统中应付结算单结算量比较大,而且管理相对集中,ERP系统与中粮财务公司的支付平台系统对接,实现银企直联,将网银录入的环节 ...

  9. 使用Android应用调用Web Service

    Java本身提供了丰富的Web  Service支持,比如Sun公司指定的JAX-WS  2规范,还有Apache开源组织所提供的Axis1.Axis2.CXF等,这些技术不仅可以用于非常方便地对外提 ...

随机推荐

  1. .net 学习路线感想(转)

    从上到大学到现在工作,已经有六年多了,发现学习编程到以开发为工作也是一个挺长的过程的. 大学中,从c语言到java.C#到其他各种语言的学习,还有其他知识的学习如:数据库(oracle.sql Ser ...

  2. java svnkit实现svn提交,更新等操作

    官网:https://svnkit.com/ api:https://svnkit.com/javadoc/org/tmatesoft/svn/core/io/SVNRepository.html w ...

  3. spring import jar中的bean配置文件

    在spring中import resource file,有两种情况:classes目录和jar包 如果资源文件在classes目录: <import resource="classp ...

  4. Js事件处理模型/周期

    有3个阶段 1.  捕获阶段:由外向内,记录各级父元素上绑定的事件处理函数---只记录,不触发. 2.  目标触发:优先触发目标元素上的事件处理函数. 3.  冒泡:由内向外,按捕获的顺序的相反的方向 ...

  5. python学习之准备

    快速入门:十分钟学会Pythonhttp://python.jobbole.com/43922/python框架http://www.elias.cn/Python/HomePage#toc14[Py ...

  6. InnoSetup使用笔记

    今天用InnoSetup做安装包时,因为要装的驱动区分32位.64位,64位系统中要安装32位+64位驱动. 想在脚本中进行判断.折腾一阵,终于搞定: 参考了:http://379910987.blo ...

  7. IntelliJ IDEA 安装破解详解

    https://github.com/tengj/IntelliJ-IDEA-Tutorial IntelliJ IDEA官方中文文档 https://blog.csdn.net/newabcc/ar ...

  8. 剑指offer-第五章优化时间和空间效率(在字符串中第一次出现切只出现一次的字符)

    题目:在字符串中第一次出现切只出现一次的字符 思路:用HashMap来存放对应的char值和该char出现的次数.做一次变量就可以得到第一个只出现一次的字符. Java代码: import java. ...

  9. lvds配置

    基于Altera FPGA的LVDS配置应用一例 在特权同学发表博文<Cyclone III的LVDS接口注意事项>后,不少网友发邮件询问LVDS具体应用的一些问题.这些网友,归根到底,估 ...

  10. js判断客户端是pc还是手机

    function IsPC() { var userAgentInfo = navigator.userAgent; var Agents = ["Android", " ...