设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
中问网首页
我的收藏
站长博客
搜索
搜索
本版
帖子
用户
第一问答网
»
论坛
›
中问网
›
问答
›
基于Struts和EJB的Web Service框架研究
返回列表
发新帖
基于Struts和EJB的Web Service框架研究
[复制链接]
11
|
0
|
2010-11-9 10:49:44
|
显示全部楼层
|
阅读模式
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服务。使用本文所阐明的体系结构,我们可以快速高效地开发出这样的企业应用程序,它非常健壮,很容易维护,而且能很容易地与早期应用程序集成在一起。
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
千问
主题
0
回帖
4882万
积分
论坛元老
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
积分
48824836
加好友
发消息
回复楼主
返回列表
问答
热门排行
1
a g k r o n a o 把这些英为字母,组合成正确的单词
2
手指沾水之后变软,手指缝想烂
3
酒店管理?
4
江苏体彩七位数10129期中奖号码是多少
5
右下肺部,肺炎;一直发烧
6
结肠癌吃什么有好处?
7
宝宝总生病该怎么办好呐?
8
我是学土木工程的,想转做装修设计,以后开个装修公司,有谁能指点下吗?
9
口袋妖怪蓝宝石小火龙,妙蛙种子,杰尼龟金手指是多少?
10
隆胸是真的安全吗?
11
伊利牛奶日期后面的字母EM12C9是什么意思
12
广东电信不是E9用户的,怎样把网速2M免费升4M???
13
爱王力宏 爱宋晓青 爱刘亦菲 的藏头诗
14
跪求 桌面女友 就那个游戏
[email protected]
15
为什么菜屑掉进汽水里会一会沉下去,一会浮上来
16
肿瘤化疗后的饮食应该如何调理
17
风湿病,手麻木,酸痛,手指变形
18
QQ牧场麒麟现在最多的有多少只了
19
请有识人士详细分析下国服即将开的魔兽WLK中G团的前途,最好分阶段详细说明缘由级受到那些因素的影响,
20
给名字打分 李雪晴 谢谢 越快越好
21
跪求一个家里宽带账号不怎么用的
22
我到底该不该去找她呢?
23
支气管哮喘患者一般怎么治?
24
考哲学大学需要多少分?
25
你是石家庄的吗? 新华交警大队是不是就是北2环的那个?用不用带体检表?
26
在什么地方买笔记本电脑能分期付款
27
阻断术后近两,但偶而阴劲有痛感,
28
为什么我进不了练兵场深渊,说让我完成入场任务
29
水大时,鱼应在什么地方
30
谁有算号器,帮我算算 我的ID 42736B4FA0B1E5C52B6821B4544E9DD4
31
凡人修仙传中VIP章节比普通章节多多少?
32
胎儿多少周可以照四维彩超,听说贵院四维彩超不用预约
33
QQ炫舞GG 无毒的
34
支气管哮喘不治疗会导致死亡吗?
35
有支气管炎支气管哮喘,我该怎么办
36
为什么百度上这么多网秦杀毒的托啊
37
初级会计职称考试 教材哪个出版社的比较好 推荐一下 除了要教材还要不要其他的辅导资料
38
我想找在广东的 服装加工厂 员工不能少于 500名 美国单的 急急急
39
辞职后继续交养老保险还是买商业保险,哪个好
40
四川成都平原的水稻要什么时成熟
41
蔡依林新专辑开始玩火了??
42
我就是奶嘴突然痛起来,我想问下是不是以我
43
请翻译,谢谢!
44
魔兽世界起个个性 叫起来比较顺嘴的名字! 拒绝黄色拒绝暴利! 一经使用 50分送上 !
45
古华网是否提供上海孕婴用品批发代理?
46
cf比赛地图怎么开,详细点
47
眼球突出计测量
48
什么是劳保鞋
49
一年四季手脚冰冷怎麽办?
50
想知道,国内工业蓝宝石晶体切割和研磨,做成完成品的公司。前提是来料加工
51
QQ聊天工具怎么在电脑右边隐藏啊?就像通常在上面隐藏一样
52
老虎怎么换月宫
53
嘴唇发炎、肿请教
54
姑父的孩子在英国定居,想将姑父接到英国调理一段身体。问:我能不能办理签证陪姑父前往英国?
55
肚子疼,便溏,每天2-3次
56
可以做皮下埋植避孕吗?
57
米非司酮片推迟月经吗
58
胎记周围出现红血丝
59
我20级去血色修道院的路上有怪过不去,怎么才能通过到门口呀?
60
胎记要如何处理
61
如何让女孩喝酒
62
乳腺疾病吃什么水果好呢??
63
体质虚易上火怎么办?
64
周姓女孩2010元旦出生 起个名字
65
更年期综合征有什么表现呀
66
哦也英语怎么说
67
围场到蓝旗怎么走?
68
求NBA LIVE 2006中的像电脑一样的过人技巧,除了空格键之外的
69
六道出什么事勒
70
好心提醒,玩DNF的小心了!
71
眼睛看东西不集中怎么回事
72
身体处在成长阶段却挑食怎么办?
73
头孢拉定产生的血尿大约持续几天
74
美白有哪些比较好的方法
75
湘字用英语怎么写?
76
山东济南修耐德电动车维修养护连锁总部是真的吗?
77
请问解决排痰困难都有哪些好的方法呢?
78
花宝快飞怎么赢
79
360网络连接查看器 状态那一栏是监听的话 有危险么??用不用结束进程?
80
我是中航工业成发集团08年以劳务派遣形式进的厂签了2年,现在和成发集团签正式合同但现在不给我们计算工龄
81
给 产科医生 送锦旗写什么?
82
出现乳腺疾病怎么办?
83
从北京六里桥车站出来坐几路可以去公主坟地铁口?
84
肝癌的一般症状都是哪些呢?
85
我的问题63 25
86
肾癌后续治疗透明细胞癌舒尼替尼
87
白癜风患者的饮食注意什么
88
孩子不爱吃饭要怎么办呢??
89
白天脚肿,早上起床脚就不肿,身体很好,能吃能睡
90
膀子胎记会怎么去除
91
不小心撞到下身
92
跪求征途账号 谁有不玩的征途账号 最好是个大号能给我一个.我的邮箱是:
[email protected]
谢谢!!
93
荣威550S1.8T做完进气保养发动机抖什么原因
94
我急需喜鹊怠,养鸳鸯的加加加,我号是:805709393,快点哦,快到期了。
95
我的6700s是向下的方向键失灵了,去客服说是进水了,可是为什么之后一个按键失灵了,其他的都好使呢?而且
96
为什么我的腿会无缘无故出现肿块?
97
吃结核药白细胞低。
98
求天龙1888代金卡 谢谢 我已经申请过一个给朋友了 可是1个IP只能申请一个 谁帮帮我给我一张 谢谢了
99
做一份交通安全的采访
100
胃癌患者平时吃些什么,有什么要求?