用Java Web服务打造聊天程序

Web服务是什么或者应该是什么有许多定义,每个或多或少都可以理解。很有趣的事情是最简单的东西往往是最难描述的。眼前就有一个很好的例子:一个Web服务是一个可以和外部世界交换文档的实体。这个实体是自我描述的并且拥有一个唯一的特性。

这个文档内容是XML;严格来说是SOAP。SOAP(简单对象存取协议)定义Web服务消费和生成的XML文档的内部结构。SOAP被认为是一个行业标准并且被许多跨平台软件供应商、硬件平台、操作系统或者编程语言广泛地采用。

每个Web服务都有一个地址。这是它的ID。这个地址由一个URI(亦称URL)定义。一个Web服务存在于并且被它的URI标识。这个地址经常被称为一个终端。这个ID和内容的安全性毫无关系。本教程的服务存在于http://localhost:6060/ChatService/。

Web服务带有它自己的描述。这告诉你它交换的是什么类型的文档。它说明了服务存在于什么地方(URI地址)。并且它还说明了它可以使用哪个传输协议来交换文档。Web服务描述使用的语言是WSDL(Web服务定义语言)。一个Web服务完全由它的WSDL文档描述。为了和一个独立Web服务通讯,你只需要WSDL文档。即使WSDL在它自己的上下文中描述Web服务,它还是无法描述多个Web服务组合起来所形成的美妙的乐章。

Web服务有一个地址,但是为了访问它,你需要发现它在哪儿。换句话说,你需要一个电话号簿列表Web服务。UDDI (通用描述、发现和集成)是行业标准的电话号码薄。UDDI处理寄存器并且发现Web服务。

综合起来,一个Web服务就是和现实世界交换SOAP文档的一个实体,使用一些URI定位,使用WSDL文档描述并且可以使用UDDI注册来列出并发现。

一个真实的示例

无数类型的文档可以被发送到Web服务并来源于Web服务。它可以是一个钢厂中的周期的温度报道,它可以是一个地方政府定义的退税请求,或者它可以是一个从一个软件组件到另一个组件的RPC调用的文档风格表现。同样的情况也发生在文档交换方案中。你可以设想单向的消息或者请求-响应消息传送,这里面都需要跟随一个响应文档的请求文档。 Web服务大部分当前的用法遵循XML模式上的远程过程调用。这就是为什么开发者可以很容易转到开发Web服务,而不要对现有的应用程序做重大的修改,或者之需要付出最小的努力就能创建用于Web服务的客户端。Web服务框架经常可以隐藏底层体系结构的复杂性。他们通常提供了用于从语言到WSDL和从WSDL到语言生成的工具。展示象Web服务这样的语言结构比手工处理XML文档快得多并且容易的多。现在,Web服务经常用作一个集成工具,让开发者和系统设计师互连不同的应用程序。

即使本文中的Web服务和它的客户端遵循XML模式上的远程过程调用,但是Web服务的应用范围是非常宽广的。近期,有许多基于松散耦合的纯文档交换模式实现。

一个简单的聊天服务器

在本文中,我试图创建一个比著名的股票行情服务更具挑战的应用程序,但是仍然简单易读。它是一个聊天服务器应用程序。聊天服务器的功能是非常简单的客户端或者发送新消息并读取它们。

这个聊天服务器实现是与WASP和Web服务完全互不相关的。它可以成功地被编译并且用于任何其他的Java环境。这个聊天服务器还描述预存在的业务逻辑。请查看代码来领会。你可以在这里下载用于聊天实现的源代码(而不是Web服务,那个还没有写)。

设计聊天服务器

聊天服务器的全部的实现被分割到好几个类中。接口定义在程序包com.systinet.simplechat.server.iface中。它由三个类组成;聊天服务器的接口类IChatService.java和用于聊天消息的表现两个结构和participants-ChatMessage.java和ChatPerson.java。

聊天服务器的实现在程序包com.systinet.simplechat.server.impl中。它把简单的接口的实现从后端业务逻辑中分离出来。我使用了适配器设计模式,那就是说,到ChatService.java的调用被委托给一个后端处理机。业务逻辑是相当简单的。它是在一个集合中保存消息的SimpleBackendImpl.java类的单一实例。

初看起来,置配器/后端实现看起来对于用于一个简单的教程太复杂了。然而,即使复杂的现有的业务逻辑可以被重使用来变成一个没有任何改变它的代码的需要的Web服务。这是一个常见的现实的使用案例。即使应用程序没有使用原来的适配器模式,编写一个象ChatService这样的包装类,不需要重写原始的后端程序逻辑。然而,后端可以使用JDBC和一个关系数据库来实现,否则作为一个EJB,甚至调用外部非Java应用程序的本地方法。可能发生的事是无穷尽的。适配器模式只允许你很快地触发新的后端逻辑。

把一个聊天服务器转为一个Web服务

现在,这个聊天服务器只是一个Java实现。它还不是SOAP。它只是一个用于运行在相同JVM上的客户端的可工作的聊天服务器。下一步就是生成聊天服务器发言SOAP并且创建一个描述它的WSDL文档。

这个示例使用Systinet的Web Applications and Services Platform(WASP)软件来创建Web服务应用程序。WASP软件是平台无关的并且工作在几乎任何Java环境中。这个平台提供了两个不同的部署情况:编程部署和声明部署。在这两种情况下,取得部署的是简单的旧的Java对象。编程部署(也称运行时间发布)发生在一个应用的运行时间并且能动态的部署应用程序为Web服务。你只要在你的应用程序中逐步开始WASP,并且使用到WASP应用编程接口的调用注册它的对象。换句话说,你事实上把WASP嵌入到你的应用程序。声明部署意味着把你的应用程序包装到一个部署程序包并且把这个发布到一个WASP的运行实例中。为了简单和便于访问起见,我们使用运行时间发布方法。

图1:导入现有的代码

时间: 2024-11-03 06:31:14

用Java Web服务打造聊天程序的相关文章

Visual Studio .NET使开发人员能够快速地构建和部署XML Web服务和应用程序

visual|web|web服务|xml|程序 Visual Studio .NET使开发人员能够快速地构建和部署XML Web服务和应用程序(2002.02.25)   来自:CSDN    华盛顿莱得蒙德,2002年2月8日 --四年以来,微软一直从事Microsoft .NET(公司下一代XML Web服务和应用程序的理念,它们以无缝的.安全的方式联接了整个互联网上的人.设备和信息)的基础工作.下周,微软将庆祝.NET的一个重要的里程碑--该工具将向全世界发行,通过程序员它将推动下一代的网

Java Web服务: WS-Trust和WS-SecureConversation

了解 WS-SecureConversation 如何能改善 Web 服务的安全性能 简介:WS-Security 为 SOAP 消息交换添加了企业级的安全特性,但却有大量的性能损失.WS-Trust 构建于 WS-Security 基础上,提供了一种交换安全令牌的方式,WS-SecureConversation 构建于 WS-Security 和 WS-Trust 基础上,改善了进行中的消息交换的性能.Dennis Sosnoski 将继续他的 Java Web 服务 专栏系列,本期文章将介绍

Java Web服务: CXF性能比较

简介:Apache CXF 与 Apache Axis2 及 Metro 共享一些底层组件,但在完全不同的架构中结合了这 些组合.Dennis Sosnoski 将继续他的 Java Web 服务 专栏,比较 CXF.Metro 和 Axis2 栈在有无 WS -Security 的情况下的性能表现. Apache CXF Web 服务栈建立在与本系列早期文章讨论的 Apache Axis2 及 Metro 栈相同的一些技术 的基础之上.与 Axis2 类似,它使用 Apache WSS4J W

Java Web服务,第3部分: Axis2数据绑定

相关文章: Java Web服务,第1部分: Java Web服务在未来一年内的发展 Java Web服务,第2部分: 深度探索Axis2:AXIOM Apache Axis2 Web 服务框架一开始就设计用于支持多种 XML 数据绑定方法.当前的版本 提供对 XMLBeans 和 JiBX 数据绑定以及专门针对 Axis2 开发的自定义 Axis 数据绑定 (Axis Data Binding,ADB)的全面支持.本文将说明如何将这些不同的数据绑定方法与 Axis2 结合使用,并说明为什么可能

部署Java Web服务

引言 在过去数年里,随着万维网联盟(World Wide Web Consortium,W3C)更新了核心规范,并引入了弥补 Web服务最初缺陷的新规范,Web服务发生了大量的变化.W3C 的Web Services Activity 小组所维护的规范以独立于供应商的方式将 Web服务作为一组 XML 规范进行处理. 同时,Java Community Process (JCP) 也在维护自己的规范集,以将 W3C 的建议合并到 Java 语言中.Java APIs for XML(JAX-RP

Java Web服务,第1部分: Java Web服务在未来一年内的发展

2006 年将是 Web 服务(特别是 Java Web 服务)发展标志性的一年.新的第三代框架即将撩开面纱,这些框架将为 doc/lit SOAP 提供更好的支持,并能带来潜在的性能提高.同时,第四代 WS-* 标准也最终开始形成一组可互操作的层,对 SOAP 和 WSDL 进行扩展,以支持核心企业需求. 这篇文章是我的 Java Web 系列的第 1 部分,我将讨论以下 Web 服务目前的状态和在 2006 年即将发生的主要变化,并将简单说明新框架和技术如何相关和交互.后续文章将深入讨论其中

实例jie如何提高Java Web 服务性能优化实践

本文介绍如何提升 Java Web 服务性能,主要介绍了三种方法:一是采用 Web 服务的异步调用,二是引入 Web 服务批处理模式,三是压缩 SOAP 消息.重点介绍在编程过程中如何使用异步 Web 服务以及异步调用和同步调用的差异点.本文还示范了如何在项目中使用以上三种方法,以及各种方法所适合的应用场景. Java Web 服务简介 Web 服务是一种面向服务架构的技术,通过标准的 Web 协议提供服务,目的是保证不同平台的应用服务可以互操作.Web 服务(Web Service)是基于 X

职场-java web方面的初级程序员刚到公司很多不会怎么办

问题描述 java web方面的初级程序员刚到公司很多不会怎么办 大牛们求指点 本人刚从培训班出来 培训时感觉学的不错 但是上班后发现公司用的东西比较复杂 各种json的运用 xml的运用WebService 与dblink做服务交互 与数据传输 maven与GIT 这些以前培训班都没怎么接触过 现在感觉压力好大 想学 都不知道从哪里开始 现在每天都失眠 求指点 谢了 好心人求指点

测试 XML Web 服务和应用程序(自MS)

web|xml|程序 测试 XML Web 服务和应用程序 注意:在公开发布的 Visual Studio.NET Beta 2 中可能不提供某些功能. 随着松散耦合的计算和 XML Web 服务的不断增长,各个组织越来越需要能够提供成功解决方案的工具,并且这些解决方案可以满足全球用户的不同需要.Visual Studio.NET 不仅为构建 XML Web 服务和应用程序提供了业界领先的工具,而且其中包括的某些重要功能可以用来测试这些应用程序的可扩展性.性能和功能完整性.应用程序中心测试 (A