- 浏览: 66236 次
- 性别:
- 来自: 重庆
最新评论
Web Service概述 Title: 通过客户端来测试Web Service Description: 通过客户端来测试Web Service Copyright: Copyright (c) 2004 Company: Tiger
Web Service是能够基于网络,尤其是基于万维网(World Wide Web)直接调用的能够处理离散任务或连续任务的软件模型。目前较为流行的应用是,由一家公司对其专有数据进行封装,提供Web Service,然后其它公司就可以通过Internet来动态使用这些在线服务。这为未来全球的电子商务发展提供了新的标准和架构。
Web Service是独立的、模块化的应用,能够通过因特网来描述、发布、定位以及调用。在Web Service的体系架构中包括三个角色:服务提供者(Service Provider)、服务请求者(Service Requestor)、服务注册器(Service Registry)。角色间主要有三个操作:发布(Publish)、查找(Find)、绑定(Bind)。
下图清楚的描述了三种角色,以及角色之间的作用关系。
Web Service协议标准
简单对象访问协议(SOAP)
SOAP是Simple Object Access Protocol的缩写,是一种基于XML的不依赖传输协议的表示层协议,用来在分散或分布式的应用程序之间方便地以对象的形式交换数据。在SOAP的下层,可以是HTTP/HTTP,也可以是SMTP/POP3,还可以是为一些应用而专门设计的特殊的通信协议。
SOAP包括三个主要部分:
SOAP封装结构:定义了一个整体框架,以表示消息中包含什么内容,谁来处理这些内容以及这些内容是可选的或是必需的。
SOAP编码规则:定义了用以交换应用程序定义的数据类型的实例的一系列机制。
SOAP RPC表示:定义了一个用来表示远程过程调用和应答的协定。
Web Service描述语言(WSDL)
WSDL是Web Service Description Language的缩写,该语言将网络服务定义成一个能交换消息的通信端点集,为分布式系统提供了帮助文档,同时也可作为自动实现应用间通信的解决方案。
统一描述、发现和集成协议(UDDI)
UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。
通过Java调用Web Service
在这里我们通过.net实现了一个Web Service,它提供了这样的功能,将输入的两个数相加,返回结果。
示例Web Service提供的功能
该示例Web Service提供了两个整数相加的功能,使用C#来实现Web Service,可以通过http://10.16.92.29/java/math.asmx?wsdl访问Web Service描述文件,其对应的WSDL描述如下所示:
通过WebService实现Java与.Net互联(2)
通过JBuilder9调用该Web Service
建立一个新项目TestWebService
新建一项目,指定项目名称"TestWebService",及所在目录,其它全部按缺省设置。
从URL中导入Web Service
通过快捷方式"CTRL+N",打开新建窗口,选择"Web Services"项,然后选择"Import a Web Service",单击"OK"。
输入WSDL文件地址:http://10.16.92.29/java/math.asmx?wsdl,然后单击"Next"。
这一步中,所有的选项按缺省设置就可以了。然后单击"Next"。
这一步中,您可以随意指定包名,如果将"Package options"中的复选框选中的话。生成的所有类将使用同样的包名。然后还可以选择"SOAP"协议类型,在此我们选择SOAP1.2协议,其它的设置就按缺省设置就可以了,单击"Next"按钮。
在确认窗口中,单击"Finish"完成导入工作。
导入成功后,JBuilder9会自动生成如下文件,如下所示。
自动生成文件的作用
Service1.java 该类定义了所需要的接口
Service1Locator.java 该类实现了Service1接口,主要用于定位WSDL文件
Service1Soap.java 该类定义了Web Service提供的接口方法
Service1SoapImpl.java 该类实现了Service1Soap接口
Service1SoapStub.java 该类实现了Service1Soap接口,用于实现Web Service调用。
Service1TestCase.java JBuilder自动生成的单元测试类
通过WebService实现Java与.net互联(3)
编写测试代码
package org.tempuri;
import java.util.*;
/**
* 测试程序
*
*
*
*
* @author SucreTiger
* @version 1.0
*/
public class Test
{
public static void main(String[] agrs)
{
long startW = Calendar.getInstance().getTime().getTime();
for (int i = 0; i < 3; i++) {
try {
//定位WSDL文件的位置
Service1Locator sl = new Service1Locator();
//获得Web Service的引用
Service1Soap ss = (Service1Soap) sl.getService1Soap();
//通过记录开始和结束的时间,来测试Web服务调用所花费的时间
long start = Calendar.getInstance().getTime().getTime();
System.out.println("开始时间 : " + start);
//调用Web Service提供的功能方法
int result = ss.add(100, 99);
System.out.println("返回结果: " + result);
long end = Calendar.getInstance().getTime().getTime();
System.out.println("结束时间: " + end);
System.out.println("时间消费: " + (end - start));
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
查看测试结果
D:JBuilder9jdk1.4injavaw -classpath "D:ProjectsTestWebServiceclasses;D:JBuilder9 hirdpartyjunit3.8junit.jar;D:JBuilder9libunittest.jar;D:JBuilder9libsaaj.jar;D:JBuilder9libjaxrpc.jar;D:JBuilder9libaxis.jar;D:JBuilder9libwsdl4j.jar;D:JBuilder9liblog4j-1.2.8.jar;D:JBuilder9libcommons-logging.jar;D:JBuilder9libcommons-discovery.jar;D:JBuilder9libxercesImpl.jar;D:JBuilder9libxmlParserAPIs.jar;D:JBuilder9libactivation.jar;D:JBuilder9libmail.jar;D:JBuilder9jdk1.4demojfcJava2DJava2Demo.jar;D:JBuilder9jdk1.4demopluginjfcJava2DJava2Demo.jar;D:JBuilder9jdk1.4jrelibcharsets.jar;D:JBuilder9jdk1.4jrelibextdnsns.jar;D:JBuilder9jdk1.4jrelibextldapsec.jar;D:JBuilder9jdk1.4jrelibextlocaledata.jar;D:JBuilder9jdk1.4jrelibextsunjce_provider.jar;D:JBuilder9jdk1.4jrelibimindicim.jar;D:JBuilder9jdk1.4jrelibjaws.jar;D:JBuilder9jdk1.4jrelibjce.jar;D:JBuilder9jdk1.4jrelibjsse.jar;D:JBuilder9jdk1.4jrelib t.jar;D:JBuilder9jdk1.4jrelibsunrsasign.jar;D:JBuilder9jdk1.4libdt.jar;D:JBuilder9jdk1.4libhtmlconverter.jar;D:JBuilder9jdk1.4lib ools.jar" org.tempuri.Test
开始时间: 1084968122004
返回结果: 199(Web Service返回的操作结果)
结束时间: 1084968122833
时间消费: 829(//调用一次Web Service所花费的时间,单位毫秒)
开始时间: 1084968122848
返回结果: 199
结束时间: 1084968123036
时间消费: 188
开始时间: 1084968123036
返回结果: 199
结束时间: 1084968123223
时间消费: 187
通过JSP来调用Web Service
将JBuilder9通过导入WSDL文件生成的类,打包成Client.jar。
上图是要打包的类文件的目录结构,使用如下命令完成打包操作:
jar -cvf Client.jar org
在JBuilder9的安装目录的LIB子目录下,查找如下类包(axis.jar、commons-discovery.jar 、jaxrpc.jar、log4j-1.2.8.jar、commons-logging.jar、saaj.jar、wsdl4j.jar)。
编写JSP测试代码,并将其打包生成测试的WEB应用。
上图是要打包的Web应用的目录结构,使用如下命令完成打包操作:
jar -cvf DefaultWebApp.war DefaultWebApp
然后通过http://localhost:7001/index.jsp 就可以测试Web Service了。
JSP测试源代码
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<%@ page import="org.tempuri.*" %>
<%
long startW = Calendar.getInstance().getTime().getTime();
for (int i = 0; i < 3; i++) {
try {
//定位WSDL文件的位置
Service1Locator sl = new Service1Locator();
//获得Web Service的引用
Service1Soap ss = (Service1Soap) sl.getService1Soap();
//通过记录开始和结束的时间,来测试Web服务调用所花费的时间
long start = Calendar.getInstance().getTime().getTime();
System.out.println("开始时间 : " + start);
//调用Web Service提供的功能方法
int result = ss.add(100, 99);
System.out.println("返回结果: " + result);
long end = Calendar.getInstance().getTime().getTime();
System.out.println("结束时间: " + end);
System.out.println("时间消费: " + (end - start));
}
catch (Exception ex) {
ex.printStackTrace();
}
}
%>
注:所需的JAR包,一定要在应用服务器启动时加载,否则JSP文件编译不过。
发表评论
-
sakai 工具翻译——测试和测验3
2010-04-13 21:34 902三、为一个评估创建问 ... -
sakai 工具翻译——测试和测验2
2010-04-13 16:55 991二、创建一个新的评估注意:1、当评估学习时你不应在测试与测验中 ... -
sakai 工具翻译——测试和测验1
2010-04-13 16:02 1272测试和测验 一、简介 这个工具允许你通过网络接口为 ... -
SOA和SaaS的区别
2009-11-21 17:02 984据国外媒体报道,现在 ... -
安装完IIS后访问localhost需要密码的解决方法
2009-09-12 12:45 1421解决方案:1.右击Internet Explorer的属性$2 ... -
关于update set from
2009-05-21 20:28 4431下面是这样一个例子: 两个表a、b,想使b中的memo字 ... -
Tomcat 的JVM 内存溢出问题的解决
2009-03-27 17:08 846关于内存溢出问题转帖 ... -
subversion服务器作为服务启动
2009-03-07 13:31 1181在cmd窗口输入命令如下: sc create svnserv ... -
subversion1.5 使用总结
2009-03-05 22:52 998subversion使用基本步骤 一、服务器端配置 1、 ...
相关推荐
通过WebService实现Java与.Net互联
通过WebService实现java与.net互联.pdf
java访问.net webservice 可获取与设置cookie
最近开发要做一人用java 调.net webservice的,以上是我用axis1.4写的一个小例子,希望可以借鉴
Java调用.NET的WebService接口实例,jar包删减到三个,干净清爽,里面包含注多注释和图解,搞了半天的家伙拿出来与大家分享,无任何BUG,修改里面的参数即可直接运行,对于这种好东西,花了半天时间10分不算高,重在...
封装了java调用.net的websevice接口,解决了soapaction报错和server not identified错误,使用soap1.1协议。
.net调用webservice接口例子.net调用webservice接口例子.net调用webservice接口例子.net调用webservice接口例子
asp.net通过WebService调用Java接口全过程。 asp.net---->WebService(SOAP)------>Java接口---->Java接口实现类------>RMI(Java远程方法调用)----->RMI服务器端------->RMI返回结果给asp.net
asp.net与webservice技术剖析asp.net与webservice技术剖析asp.net与webservice技术剖析asp.net与webservice技术剖析asp.net与webservice技术剖析asp.net与webservice技术剖析
java调用.net的WebService[借鉴].pdf
java和.net的webservice调用介绍,自己存的备份,别人未必看的懂。
java调用.net webservice时所需的jar包
探讨webservice服务端和客户端用java或.net编写的情况,这又分为四种类型: 服务端、客户端都是用.net编写的,这里以vb.net为例。 服务端、客户端都是用java编写的。 服务端是java编写的,客户端是.net编写的。 ...
ASP.NET--WebService实现支付功能
VB.NET(2010)/JAVA 采用SOAP 与Webservice发送/接收数据
.Net Webservice Studio (Build on .net 4.5) source code
本文介绍了Java与.NET开发的Web Services相互调用的技术。本文包括两个部分,第一部分介绍了如何用.NET做客户端调用Java写的Web Services,第二部分介绍了如何用Java做客户端调用.NET开发的Web Services。
Java调用.net写的webservice Java使用axis来调用.net写的asmx WebService,大体步骤如下。 Axis需要用到的包如下: 1. axis.jar 2. commons-discovery-0.2.jar 3. commons-logging-1.0.4.jar 4. jaxrpc.jar 5. wsdl4...
Java 访问.Net Webservice 的源码 源码分为两个文件,1.SOAP方式,2.普通方式 SOAP请求使用的是java自带的 SOAPXML请求方式,注释超多,全都是手工写,并且测试通过。 普通方式是使用普通请求页面的方式请求,比较...
使用java调用.net接口的方法,虽说WSDL是跨平台的是符合国际标准的,但有时候确实存在着无法创建客户端的情况,以下3种方式必有一种能符合您的需求