一个简单的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.说明测试成功。
第八步:至此,大功告成!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值