Java Web服务性能优化实践(1)

本文探讨了如何通过异步调用来提升JavaWeb服务性能,引入了Web服务批处理模式,并阐述了SOAP消息压缩技术。详细解释了异步调用与同步调用的区别,并提供了在项目中实施这些优化措施的方法及其适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文介绍如何提升 Java Web 服务性能,主要介绍了三种方法:一是采用 Web 服务的异步调用,二是引入 Web 服务批处理模式,三是压缩 SOAP 消息。重点介绍在编程过程中如何使用异步 Web 服务以及异步调用和同步调用的差异点。本文还示范了如何在项目中使用以上三种方法,以及各种方法所适合的应用场景。

Java Web 服务简介

Web 服务是一种面向服务架构的技术,通过标准的 Web 协议提供服务,目的是保证不同平台的应用服务可以互操作。Web 服务(Web Service)是基于 XML 和 HTTP 通讯的一种服务,其通信协议主要基于 SOAP,服务的描述通过 WSDL、UDDI 来发现和获得服务的元数据。 这种建立在 XML 标准和 Internet 协议基础上的 Web 服务是分布式计算的下一步发展方向,Web 服务为那些由不同资源构建的商业应用程序之间的通信和协作带来了光明的前景,从而使它们可以彼此协作,而不受各自底层实现方案的影响。

JAX-RPC 1.0 是 Java 方面的 Web 服务的原始标准 , 但是由于 JAX-RPC 1.0 对 Web 服务功能的认识有一定的局限,于是 JAX-WS 2.0 应用而生。JAX-WS 2.0 开发工作的主要目标是对各项标准进行更新,成功实现了业界对 JAX-RPC 1.X 的各种期望。此外,JAX-WS 2.0 直接支持 XOP/MTOM,提高了系统附件传送能力以及系统之间的互操作性。

实例剖析Web服务性能瓶颈

通过以上简述不难体会到,Web 服务以其 XML + HTTP 的松耦合、平台无关的特性,集万般宠爱于一身,必将成为未来数据共享的基础。但与此同时我们也应当认识到世间完事万物均有其矛盾的两面性:有优点,必将存在缺点,Web 服务亦是如此。就像当初 JAVA 大行其道的时候性能成为其致命诟病一样,Web 服务也同样面临性能问题,似乎“性能问题”天生就是“平台无关”挥之不去的冤家。但问题终归要解决,实践是检验和分析问题的唯一途径,让我们先来创建一个简单的 Web 服务再来审视和分析隐含其中的性能问题。

创建服务

创建服务 Java Bean: 首先我们创建一个尽可能简单的书店服务 Bean,服务的内容只有一个 qryBooksByAuthor,即根据作者 (Author) 查询其名下的书籍 (List<Book>)。

图 1. 书店服务 Bean(BookStoreSrvBean)

Java Web 服务性能优化实践

服务 Input- 作者 (Author) 的实体类 :

图 2. 作者实体类 (Author)

Java Web 服务性能优化实践

服务出参 Output- 书籍 (Book) 列表的实体类:

图 3. 书籍实体类 (Book)

Java Web 服务性能优化实践

至此我们的服务代码已经完成,我们不在此讨论此服务的业务合理性,创建此服务的目的只是举一个尽可能简单的实例以分析 web 服务的性能。

下面的任务就是开发 Web 服务了,手工编写及发布符合规范的 Web 服务过程极为繁琐,在此使用 IBM 的 Rational Software Architect(后面简称 RSA)来进行 Web 服务的服务器端以及客户端的开发。

发布 Web 服务

创建动态 Web 项目 : 发布 Web 服务的前提当然需要一个 J2EE 的 Web 项目,打开 RSA->File->New->Dynamic Web Project, 项目名称为 testWebService, 其余选项根据需要进行选择 ( 注意需要选择加入 Web 项目到 EAR)。创建好的 Web 项目和 EAR 项目效果如下 :

图 4. Web 项目以及应用项目的结构

Java Web 服务性能优化实践

创建 Web 服务: 选中导入的 com.ibm.test.ws.srv.BookStoreSrvBean,右键 New->Other->Web Service 来创建并发布 Web 服务。创建的时候选择常用的 JAX-WS 标准 , 并选择生成 WSDL 文件。由于 Web 服务的创建不是本文重点,此部分内容暂且省略。服务创建完成之后就可以发布到上一步建好的 Web 项目中了。

创建客户端

使用 RSA,客户端的创建工作将会非常简单:右键点击上面生成的 WSDL 文件 ->Web Services->Generate Client

图 5. 创建客户端界面

Java Web 服务性能优化实践

在此界面,根据实际情况选择 server,JAX-WS 标准以及 Client 代码的目标项目,然后点击下一步。

图 6. 输入客户端信息

Java Web 服务性能优化实践

此界面暂时使用默认配置,某些特殊选项将在后面章节进行描述。

客户端调用

由于 JAX-WS 规范大部分的 stub 调用代码是实时生成的,我们只需要修改客户端 WSDL 的 port 就可以用以下代码进行 Web 服务的调用。这里修改 WSDL 端口的目的是让客户端调用 RSA 提供的 TCP/IP Monitor 的虚拟端口,这样我们就可以很轻易地看到 Web 服务实际的调用以及返回的 SOAP 消息了。

客户端调用代码如下 :

图 7. 客户端调用代码

Java Web 服务性能优化实践

使用 TCP/IP Monitor 看到的 SOAP 消息如下 :

图 8. Web 服务调用产生的 SOAP 消息

Java Web 服务性能优化实践

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值