`

基于Struts和EJB的Web Service框架研究

阅读更多
基于Struts和EJB的Web Service框架研究

Struts与EJB结合进行B/S模式的开发,解决了“表示”与“业务逻辑”的分离,“业务逻辑”与“数据”的分离问题以及页面的多变性问题,发挥EJB基于组件分布式计算结构的优势,从而大大提高了Web应用的开发效率,数据安全性和可维护性。EJB组件作为一种成熟的组件技术已经被广泛应用于各个领域,然而随着企业的发展,企业不断实施应用新的系统。如何确保新应用程序与旧应用程序之间的交互,如何将现有的系统集成到新系统?传统的RMI-IIOP和CORBA技术由于自身的局限性,限制了EJB组件与其他类型组件之间的协同工作与信息交互,而Web服务及其相关技术的出现为解决软件开发环境中组件间的互操作问题提供了一种有效手段,它是在Internet上进行分布式计算的基本构造块。为快速高效的开发集成早期应用程序的新系统,我们需要为Web服务构建Struts应用系统。

1、Struts与EJB结合B/S的开发模式

1.1、MVC模式

MVC(Model/View/Controller)模式最早是在Smaltalk中出现的。MVC包括三类对象,简单地说,Model是应用对象,View是它在屏幕上的表示,Controller定义用户界面对用户输入的响应方式。

MVC设计模式中的“模型”指的是真正执行任务的代码。在模型同界面分离的情况下,代码即可实现可管理性和可重用性。模型通常被称为“业务逻辑”。所谓“视图”就是使用界面,界面的每一部分都只能包含采集数据的足够逻辑,并把它传递给设计模式中的其他组成部分以进行处理。“控制器”控制着模型和视图之间的交互过程。它决定着向用户返回怎样的视图、检查通过界面输入的信息以及选择处理输入信息的模型。

在JSP开发中,最长使用Model2。Model2实际上就符合MVC模式,其中各组件的关系如图1所示。


图1:Model2中各组件的关系

1.2、Struts+EJB开发模式

Struts是一种符合MVC模式的框架。Struts采用JSP作为MVC的视图,Java Servlet作为控制器,JavaBean作为模型。Struts的处理过程如图2所示。


图2:Struts+EJB的MVC

首先,控制器(Action Servlet)进行初始化工作,读取配置文件(struts-config.xml),为不同的Struts模块初始化相应的ModuleConfig对象。控制器接收Http请求,并从ActionConfig中找出对应于该请求的Action子类,如果没有对应的Action,控制器直接将请求转发给JSP或者静态页面,否则控制器将请求分发至具体Action类进行处理。在控制器调用具体Action的Execute方法之前,ActionForm对象将利用Http请求中的参数来填充自己。Action要处理的业务逻辑封装在JavaBean中,通过JavaBean调用EJB以完成业务处理。Action执行完后返回一个ActionFroward对象。

2、简单的Web服务体系结构

当您要将企业应用程序转变成与 Web 服务一起使用时,最简单的途径就是将单个操作与单个的企业服务结合在一块,如图3所示。


图3:简单Web服务体系结构

在这种设计方法中,实现业务逻辑的服务与实现数据检索的服务是混合在一起的。这样的一种 Web 服务可以很容易从已有的业务组件中开发出来。然而,它有很多的缺点:对用户没有提供统一认证,提供者与订阅者耦合不紧,业务逻辑没有重用。简而言之,对于一个连贯的解决方案来说这并不是一个非常好的体系结构。
3、采用 Struts的 Web 服务

前面讲过,Struts 架构清晰地区分开了视图、控制器以及模型。模型包含所有必须的业务逻辑,从存储数据仓库中检索数据。您可以构建一个简单的 Web 服务层——称为 WSManager 层——这样的模型可以提供 Web 服务也可以订购 Web 服务。使用这种体系结构的应用程序将基于组件开发的最佳点与Internet结合在了一起,如图4所示。

其它Struts相关组件前面已讨论,下面主要讨论这种体系结构中WSManager层,因为它是此体系结构中真正新加的部分。

作为Web服务端和EJB容器之间的中间件,WSManager 接收 JAX-RPC 端点的请求。将客户端请求映射到WSManager 类中的方法调用。这些客户端请求是SOAP 信息的格式。WSManager 必须实现安全认证,转变参数,在指定请求到模型服务之前,要对这些请求进行参数预处理。请求所包含的参数形式有 Java 对象,Java原始参数,XML 文档,或者甚至是 SOAP 文档分片(例如,SOAP Element 对象)。这些类型必须要转化成内部所支持的 schema(例如,预定义的 Java 数据访问对象)。


图4:采用Web服务的Struts应用程序

WSManager 也可以生成响应;这个过程由方法调用返回值的简单构造所组成。WSManager 中保留这样的功能,您可以通过缓存数据从而避免重复访问模型服务层。您还可以集中管理响应聚集以及 XML 文档转换,如果您要返回给调度者的文档必须遵守与内部 schema 不同的 schema 时,这一点就显得尤其重要。

在以上模型中,Web服务的客户端通过SOAP消息与Web服务端点进行交互从而达到使用EJB组件提供的服务的目的。在Web服务端,WSManager 处理所有SOAP 请求并把它们委派到模型层(EJB层,使用Session Facade 设计模式)所暴露的业务逻辑。这样有很多好处,因为 WSManager 会:

(1)作为初始联系点来管理请求与服务。

(2)调用安全服务,包括身份验证与授权使用,从而避免任何重复的层访问。

(3)委派业务处理(采用由 Struts 应用程序所使用的模型服务)WSManager代理对EJB的方法调用。接受客户端传递的所有参数然后简单地把这个调用代理给会话外观的某个方法,把对EJB的调用过程从Web服务端点中分离出来。

(4)隐藏与EJB相关的系统异常。与API相关的系统异常,比如RemoteException,EJBException都在WSManager中被捕获然后作为一个非EJB的相关异常(比如一个自定义的业务代理异常)通过Web服务端点重新抛出给客户端。应用级的异常仍然被传递给Web服务端点,然后由Web服务端点通过SOAP消息发送给调用Web服务的客户端。

(5)缓存数据避免任何不必要的数据库访问,可以在本地缓存一个会话bean方法调用返回结果,然后在后续请求中把它们传递给Web服务端点。还可以缓存一个会话bean的引用。

(6)具有重新尝试失败事务的能力。WSManager可以实现判断事务失败原因所需的复杂错误处理代码。通过重新执行会话外观的方法来重新尝试执行事务,WSManager对Web服务端点隐藏了复杂的处理过程。

(7)快速方便地进行Web服务地发布和使用。在 WSManager 类中实现的每一个公共方法都将作为一种Web服务发布出来。换句话说,您要为这些类发布一种Web 服务描述。Web 服务描述是由服务的Web 服务描述语言(Web Services Description Language,WSDL)描述与由它所引用的任何 XML schema 所组成。应用程序可以利用在公共注册表或者企业内部中已存的Web服务。WSManager有解析必要的WSDL文件的方法并且调用相关的操作返回一个值。

4、总结

通过在Action和EJB层间加入WSManager层即在Web容器和EJB容器之间加入WSManager中间件,很好地结合了Struts和Web服务。使用本文所阐明的体系结构,我们可以快速高效地开发出这样的企业应用程序,它非常健壮,很容易维护,而且能很容易地与早期应用程序集成在一起。








  • 大小: 15.7 KB
  • 大小: 32.4 KB
分享到:
评论

相关推荐

    SOA\精通SOA_基于服务总线的Struts+EJB+Web Service整合应用开发

    本资料深入探讨了如何在SOA框架下,利用Struts、EJB和Web Service这三种技术进行高效整合,以实现灵活、可扩展的应用程序。 **1. Struts框架** Struts是Apache软件基金会的一个开源项目,它是MVC(Model-View-...

    基于Struts+EJB购书系统

    总之,基于Struts+EJB的购书系统结合了MVC架构的优势和EJB的强大功能,实现了高效、灵活和可扩展的企业级应用。通过理解这两者之间的交互以及购书系统的具体业务需求,开发者可以构建出稳定、安全且易于维护的系统。

    精通SOA_基于服务总线的Struts+EJB+Web Service整合应用开

    - **工具和技术选择**:考虑到系统的复杂性和集成需求,本书店系统采用了Struts框架构建用户界面,使用EJB实现业务逻辑,通过Web Service技术实现服务间的交互。 综上所述,本章通过一个具体的网上书店系统案例,...

    精通SOA_基于服务总线的Struts+EJB+Web Service整合应用开发08

    【精通SOA_基于服务总线的Struts+EJB+Web Service整合应用开发08】这一主题涵盖了企业级软件开发中的重要技术栈,包括Service-Oriented Architecture(面向服务架构,SOA)、Struts、EJB(Enterprise JavaBeans)...

    spring+struts+ejb整合

    Struts则是一个基于MVC模式的Java Web应用框架,主要用于控制应用程序的流程。EJB(Enterprise JavaBeans)是Java EE平台的核心部分,提供服务器端组件模型来构建可扩展和可移植的企业级应用。 在"spring+struts+...

    精通java Web开发--基于Struts EJB.zip

    Java Web开发是构建互联网应用程序的重要领域,而Struts和EJB是其中两个核心的技术框架。本教程"精通java Web开发--基于Struts EJB"旨在帮助开发者深入理解并熟练运用这两种技术来创建高效、可扩展的Web应用。 ...

    Struts2+Spring+EJB框架整合实例

    Struts2、Spring和EJB(Struts2+Spring+EJB,简称SSE)是Java企业级开发中常用的三大框架,它们各自承担着不同的职责,共同构建了一个强大的应用架构。Struts2作为MVC(Model-View-Controller)框架,负责处理用户...

    struts1.1+ejb模拟项目

    Struts1.1和EJB(Enterprise JavaBeans)是Java Web开发中的两个重要技术,它们在构建企业级应用中发挥着关键作用。本项目通过结合这两个框架,旨在提供一个模拟真实工作环境的学习平台,帮助开发者熟悉和掌握这两种...

    Struts + Spring + EJB3 demo

    Struts、Spring和EJB3是Java开发中的三个重要框架,它们在企业级应用程序开发中发挥着关键作用。Struts提供了MVC(Model-View-Controller)架构,Spring强化了依赖注入和面向切面编程,而EJB3则是Java EE平台上的...

    Struts+Ejb完成例子.rar

    Struts是一个基于MVC(Model-View-Controller)设计模式的开源框架,主要用于构建Web应用程序的控制层,而EJB(Enterprise JavaBeans)是Java EE平台的核心组件,用于实现业务逻辑,提供服务器端的组件模型。...

    spring,struts,Ejb 项目综合 ,sse

    在IT行业中,Spring、Struts和EJB是三个非常重要的框架,它们主要用于构建企业级Java应用程序。 SSE(Server-Sent Events)是一种Web技术,用于实现服务器向客户端的实时推送数据。接下来,我们将深入探讨这三个框架...

    struts2 + ejb3 demo

    Struts2和EJB3是Java企业级开发中两种重要的技术框架。Struts2作为MVC(模型-视图-控制器)设计模式的实现,主要用于处理Web应用的前端逻辑,而EJB3则是Java EE(企业版)的一部分,提供了一种规范来管理和部署企业...

    包含了J2EE , EJB, MVC, JDBC, Struts技术的例子

    Struts是Apache软件基金会的一个开源项目,它是一个基于MVC设计模式的Java Web框架。Struts将业务逻辑、控制流程和表示层分离,使得开发者可以更方便地管理和维护Web应用。它提供了ActionForm、Action、Struts-...

    struts2+EJB3.0开发实例项目

    Struts2 和 EJB3.0 是两种在 Java Web 开发中广泛使用的开源技术,它们在构建企业级应用程序中发挥着关键作用。本项目结合了这两个框架,为初学者提供了一个学习和实践的实例。 Struts2 是一个 MVC(Model-View-...

    EJB3+spring2.5+struts2和ejb3+servlet增,删,改,查实现!

    标题 "EJB3+Spring2.5+Struts2和EJB3+Servlet实现增删改查" 描述了一个集成的Java企业级应用开发场景,其中涵盖了四个关键的技术框架:Enterprise JavaBeans(EJB)3.0、Spring 2.5、Struts 2以及Servlet。...

    ejb struts多层架构例子

    在Java Web开发中,EJB(Enterprise JavaBeans)和Struts是两种重要的技术,常被用于构建企业级的、基于模型-视图-控制器(MVC)架构的应用程序。本例子以“网上银行系统”为背景,展示了如何整合这两者来实现一个...

    基于Struts和Hibernate的J2EE应用

    **基于Struts和Hibernate的J2EE应用** 在企业级应用程序开发中,Java 2 Platform, Enterprise Edition (J2EE) 提供了一个强大的框架来构建分布式、多层的应用程序。Struts 和 Hibernate 是两个非常重要的 J2EE 开发...

    精通struts基于MVC的java web设计与开发(代码全六netstore下).rar

    2. **Struts框架**:Struts是由Apache软件基金会开发的一个开源框架,主要用于构建基于Java Servlet和JSP的Web应用。它简化了MVC的实现,提供了一系列的标签库、拦截器和生命周期管理,使得开发者可以更专注于业务...

Global site tag (gtag.js) - Google Analytics