我们通常都将编写好的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.说明测试成功。
第八步:至此,大功告成!
分享到:
相关推荐
AXIS调用远程的web service
A8 平台提供基于 axis2 1.4 实现的标准 Web service。...4、 示例代码参考每一接口的本地调用。 注意:如果使用 ADB Client Stub 方式编写客户端代码,A8 升级以后必须重新生成并更新客户端的 Stub!!!
为提供远程调用(Thrift服务器,Http服务器)分布式运行(YARN上的DataX)功能 特征 节俭服务器 纱线上的DataX Http服务器 单机多线程方式运行 单机多进程方式运行 分散运行(在纱线上) 混合模式运行(Yarn +多...
"SOAP是在非集中、分布环境中交换信息的轻量级协议...它是基于XML的协议,包括三个部分: 封套(envelope)定义了消息内容和处理的框架、一套编码规则用来表达应用定义数据类型的实例以及表达远程过程调用和响应的协定。
调用 Web 服务 .......... 38 使用用户定义的 Web 服务 .......... 40 用户定义的 Web 服务的命令 .......... 41 将 sp_webservices 与用户定义的 Web 服务一起使用 .......... 45 用户定义的 Web 服务的安全性 .......
是的,在 JavaScript 中远程调用都是采用异步方式的,也就是说要获得结果,需要用回调函数,回调函数作为远程方法的最后一个参数,回调函数也有四个参数,这里我们只使用第一个参数,也就是返回结果 result,通过 ...
hessdroid 是 Resin 的 Hessian 二进制远程调用框架在 Android 上的移植版本。非官方。 示例代码: String webServiceUrl = "https://localhost/testAPI"; HessianProxyFactory proxyFactory = new ...
主要介绍了Java编程Webservice指定超时时间代码详解,简单介绍了webservice,然后分享了通过使用JDK对Webservice的支持进行Webservice调用实现指定超时时间完整示例,具有一定借鉴价值,需要的朋友可以参考下。
制作一个简单的多页Tab功能 一完美的关于请求的目录不存在而需要url重写的解决方案! 在C#中实现MSN消息框的功能 XmlHttp实现无刷新三联动ListBox 鼠标放在一个连接上,会显示图片(类似tooltip) 使用microsoft.web.ui...
是的,在 JavaScript 中远程调用都是采用异步方式的,也就是说要获得结果,需要用回调函数,回调函数作为远程方法的最后一个参数,回调函数也有四个参数,这里我们只使用第一个参数,也就是返回结果 result,通过 ...
是的,在 JavaScript 中远程调用都是采用异步方式的,也就是说要获得结果,需要用回调函数,回调函数作为远程方法的最后一个参数,回调函数也有四个参数,这里我们只使用第一个参数,也就是返回结果 result,通过 ...
是的,在 JavaScript 中远程调用都是采用异步方式的,也就是说要获得结果,需要用回调函数,回调函数作为远程方法的最后一个参数,回调函数也有四个参数,这里我们只使用第一个参数,也就是返回结果 result,通过 ...
是的,在 JavaScript 中远程调用都是采用异步方式的,也就是说要获得结果,需要用回调函数,回调函数作为远程方法的最后一个参数,回调函数也有四个参数,这里我们只使用第一个参数,也就是返回结果 result,通过 ...
是的,在 JavaScript 中远程调用都是采用异步方式的,也就是说要获得结果,需要用回调函数,回调函数作为远程方法的最后一个参数,回调函数也有四个参数,这里我们只使用第一个参数,也就是返回结果 result,通过 ...
是的,在 JavaScript 中远程调用都是采用异步方式的,也就是说要获得结果,需要用回调函数,回调函数作为远程方法的最后一个参数,回调函数也有四个参数,这里我们只使用第一个参数,也就是返回结果 result,通过 ...
第三部分提供了一个jsf+ejb 3+ jpa整合开发的项目:电子拍卖系统。这个项目包括5个实体,这5个实体之间具有复杂的关联关系,而且业务逻辑也相对复杂,希望让读者理论联系实际,真正将jsf+ejb 3+jpa整合真正运用到...
增加一个Web组件到WAR文件中 150 配置Web客户 151 应用级配置 151 WAR级的配置 151 组件及配置 151 部署网络客户 152 运行网络客户 152 更新网络客户 152 国际化网络客户 152 第10章 Java Servlet技术 153 什么是...
在这个系列中一共包含6个案例,从简单到复杂,也是对问题分解、思考和解决的一个过程,它们分别是: (1)类之间的依赖; 降低 (2)接口依赖; (3)基 于配置文件和Reflection的工厂模式; (4)使用Spring.net...
但是,如果在设计时刻 Scrollbars 属性设置为非 0 值,Visual FoxPro 就会允许在运行时刻对 Scrollbars 属性进行读写,因为有代码可调用 SAVEAS() 函数以创建一个带有滚动条的新表单。如果您不需要带滚动条的表单...