`
baiwenwo
  • 浏览: 67666 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

通过WebService实现Java与.Net互联

阅读更多

Web Service概述 

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.*;

/**
 * 测试程序
 * 

Title: 通过客户端来测试Web Service


 * 

Description: 通过客户端来测试Web Service


 * 

Copyright: Copyright (c) 2004


 * 

Company: Tiger


 * @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文件编译不过。

 

分享到:
评论

相关推荐

    通过WebService实现java与.net互联.pdf

    本文将探讨如何通过WebService实现Java与.NET的互联。 **Web Service概述** Web Service是一种基于网络的软件模型,它允许不同系统之间的服务交互,不受特定编程语言或操作系统限制。服务提供者创建Web Service,将...

    通过WebService实现Java与.Net互联.doc

    【Java与.NET互联系统构建】 1. Web Service 概述 Web Service 是一种软件系统,它能够通过网络,特别是互联网进行通信,并提供模块化、独立的服务。这种服务可以通过标准接口进行调用,使得不同平台和语言之间的...

    WebService应用实例及教程

    - 使用Java JAX-WS(Java API for XML Web Services)框架,可以通过注解轻松创建WebService接口和服务实现。 - 编写WSDL文件,或者由JAX-WS自动生成。 - 将服务部署在支持JAX-WS的服务器上,如Tomcat、Glassfish...

    3步把您的JAVA程序转换为WEBSERVICE

    call.setTargetEndpointAddress(new java.net.URL(endpoint)); String ret = (String) call.invoke(new Object[]{"zhangsan"}); System.out.println("return value is " + ret); } catch (Exception ex) { ex....

    WebService在校园即时消息系统中的应用

    1. **技术选型**:选择适合校园网络架构的WebService框架和技术栈,如.NET或Java EE平台上的SOAP/RESTful API。 2. **系统设计**:设计一个中心化的消息处理和服务注册中心,以确保所有消息服务都能被正确识别和调用...

    WebService使用JDK发布

    Web服务(WebService)是一种基于互联网的、平台独立的交互方式,允许不同的系统之间进行数据交换。...通过这些知识点,开发者可以在Java环境中方便地创建、部署和测试Web服务,实现不同系统的互联互通。

    工行银企互联NC模式WebService项目

    本程序通过IIS+WebService,提供一个跨平台、跨语言的NetSafeClient中间服务层。客户只需要HTTP POST相关参数到WebService,就能得到结果,不必关心与NetSafeClient的细节问题。能极大提高与银行对接效率,节省开发...

    webService项目实例

    在这个“webService项目实例”中,我们将深入探讨Web Service的基本概念、实现方法以及如何通过"TheClient"和"TheService"这两个关键组件进行交互。 首先,Web Service的核心是使用XML(可扩展标记语言)作为数据...

    webservice例子

    2. **实现服务**:接口定义完成后,开发者需要编写实现这些接口的代码,这可以是Java、.NET或其他支持Web服务的语言。服务实现应遵循WSDL文件中定义的规范。 3. **发布服务**:将实现的服务部署到服务器上,使其...

    安卓网站交互JSONxmlWebserviceUPnP相关-android与asp.net中的一般处理程序ashx进行交互.zip

    在ASP.NET中,可以创建WebService(如.asmx文件)或者使用`Web API`(.NET Framework 4.0及以后版本)。描述中的"一般处理程序ashx"是ASP.NET中的HTTP Handler,它是一种轻量级的Web Service实现,可以处理特定类型...

    智慧工地视频监控系统[汇编].pdf

    8. 编程技术:J2EE(Java 2 Platform, Enterprise Edition)和.NET是两种企业级的编程技术平台,它们提供了开发大规模、分布式网络应用程序的框架和工具。系统中提到的这些技术表明其可能具备较强的后端处理能力和可...

Global site tag (gtag.js) - Google Analytics