servlet容器设计感想(初级)
——对我们设计“umpay的前置和业务服务器”可能有帮助
——我们可以把通信框架看成是一个servlet容器,把交易处理类看成是一个个的servlet。
但是,我们可以思考下,我们的框架设计的怎么样,我们是不是能轻松地动态地加载一个新的业务处理类呢?我们又有没有考虑servlet协作呢,包括共享数据和共享控制呢?
servlet容器具备的职能:
1、管理servlet的生命周期,如何做到能够动态加载(包括对“新增动态加载”,“删除动态加载”和“修改动态加载”,tomcat目前都未能做到对“修改动态加载”。
);
2、会话跟踪,尽管我们的平台一般用的是异步长连接,可以依靠TCP的有状态来实现会话状态跟踪,但是一个好的应用层协议设计,最好应该设计成不依赖于通信层采用的是长连接还是短连接。http起初无状态,但是由于web应用很多都是有状态的,一个逻辑完整的conversation需要进行多次的交互,而且允许此间的交互过程中跨越多个TCP连接,于是出现了session(依赖于cookie或url rewriting来传递ID),session的加入其实就是对http协议的补充,因为session的正常工作,必须要求服务端和客户端的配合,客户端有责任把这个id通过cookie或url rewriting参数带给服务端。这一点在我们的非接项目中也有类似的情况,也就是所谓的“通信层流水号”和“应用层流水号”,因为一个Transaction可能需要多次网络交互。注意:一个逻辑完整的交易如果需要进行多次的网络交互,甚至这种交互还发生在多个分布式子系统之间的话,这种交易会涉及许多高难度的技术。这也是SOA中的一个热点话题。 http Session的虽然是一个交易跨好几个网络交互,但是它牵涉的分布式子系统不多,就客户端和服务端。 在SOA里把这种交易称为“分布式事务”,分布式表示这个交易要牵涉到多个子系统的网络交互,事务表示该交易的成功需要多个交互都成功。
(分布式事务)。
3、安全性(包括资源的访问控制) 现在我们的业务框架是没有对资源访问有什么控制的,因为我们的平台还没有真正的具有特别多的用户,或者特别多的合作伙伴,此时,我们的访问控制基本上都是在网络层做的,通过vpn,源IP限制,端口限制等来做访问控制的。当然,非接项目,安全性算做得比较好的,有资源的访问权限控制,也有ssl。
4、协作 (servlet的协作包括“共享数据”和“共享控制”)
共享数据包括共享内存数据(比如HttpSessionContext还有叫什么ContextManager的,再如System.getProperties(),ServletContext,都是利用面向对象的类中的静态方法什么的)来实现数据的跨类共享。当然如果共享发生在某几个相近的类之间,还可以抽象一个超类来共享这些数据。当然,如果数据还要跨网络共享怎么办? 可以使用第三方数据源,比如数据库(对外提供的API是jdbc connection),分布式session容器(我们的sso服务器,本身就可以认为是个分布式的session容器,对外提供的API是HttpClient)。共享控制,也就是对于一个请求,需要两个或多个servlet共同处理,这种模型也很常见的,比如 公共过滤器-分发-特定的servlet-公共装饰器。对于,跨网络的共享控制,也就是要将请求转发到另一个分布式子系统。所以,无论是共享数据,共享控制,都包括是局部于本子系统内部的,还是要跨入其他子系统的(程序=数据+控制)。
注意:servlet之间一般不允许相互调用,而要通过共享数据的方式来进行通信。
分享到:
相关推荐
接下来,框架设计是项目架构的关键。这里提到了SSH(Struts、Spring、Hibernate)框架,它将项目分为表示层、业务逻辑层、持久层,还有可能扩展的通信层等。包的划分应遵循一定的规范,如SSH框架中的bean、bo、...
例如,类和对象是构建软件的基础,封装则保护了数据的安全性,继承使得代码复用更加便捷,多态则提供了灵活的接口设计,使程序更具扩展性。 数据库方面,实训主要涉及SQL语言的学习,包括DDL(数据定义语言)、DML...
PO被设计为简单的Java对象(Plain Old Java Object,POJO),即不包含任何特定框架的代码,只包含业务逻辑和数据。为了使PO具备持久化能力,我们需要在对象上添加持久化注解,如@Entity、@Table、@Column等,这些...
在新兴市场,产品经理可能更多地扮演探索者和开创者的角色,而在成熟市场,他们可能需要在现有框架下寻找微创新的机会。这种阶段性的差异影响了产品经理的工作内容和挑战,同时也为他们的职业发展提供了多样化的路径...
在技术框架设计方面,系统采用了SpringBoot框架。SpringBoot是Spring的一个模块,它简化了基于Spring的应用开发,通过大量的默认配置,使得开发者可以专注于业务逻辑的开发而不是繁琐的配置工作。它提供了一种快速...
五、课程设计感想 通过这次课程设计,开发者不仅能深入理解JSP和MVC架构,还能锻炼数据库设计和Web应用开发的技能。此外,对于需求分析、系统设计和问题调试也有了实际操作的经验。 六、总结 总的来说,这个JSP版...
BBS论坛的开发是一个综合性的项目,涵盖了多个技术领域,包括网页设计、JavaScript、Struts2框架以及数据库操作等。 首先,BBS论坛的开发通常分为前后台两大部分。前台功能主要面向用户,包括用户登录、注册、发帖...
- **总体框架设计**:小程序通常采用MVC(Model-View-Controller)架构,将数据模型、视图展示和控制逻辑分离,便于维护和扩展。 - **界面设计**:界面需遵循微信小程序的UI规范,注重用户体验,设计清晰的导航结构...
报告应包含项目名称、设计目的、需求规格说明、需求分析过程、项目管理计划、设计收获、待改进之处和个人感想。同时,报告应附带完整图表和代码框架。 【成绩评定标准】 成绩基于程序运行情况、功能完善度、程序...
MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。 我们有必要严格区分mvc的三层模式模式吗? m与c的跨界使用更...
6. **设计模式**:遵循MVC(Model-View-Controller)设计模式,分离业务逻辑、数据和视图。 7. **开发语言**:使用Java进行后端开发。 8. **浏览器**:推荐使用谷歌浏览器以获得最佳用户体验。 9. **编译器**:使用...
2. **日志记录和发布**:用户可以发表生活感想和记录生活点滴,这涉及到用户界面设计、数据库操作(如MySQL)和JDBC连接,以及后端服务处理用户的输入和保存到数据库中。 3. **阅读和分享**:用户可以查看他人的...
4.2 微信小程序开发:分为前端和后端两个阶段,前端负责用户界面和交互,后端负责数据处理和业务逻辑。 4.3 模拟器搭建:创建一个能够模拟充电桩功能的环境,以便于测试和调试。 5. 设计结果及分析 设计完成后,...
九宫格日记是一种创新的日记记录方式,它将每一天的日记分为九个部分,每个部分可以独立记录不同的事件或感想,提供了更为丰富和立体的日记体验。在J2EE平台上开发九宫格日记,意味着我们需要利用Java后端技术、...
在学生信息管理系统中,MFC负责构建用户界面,包括对话框、控件等,使得开发者能更专注于业务逻辑而不是底层的窗口和消息处理。 2. **VC++编程环境**: Visual C++是微软的集成开发环境,支持C++编程,提供了包括...
这要求我不仅要深入理解业务流程中的各个节点,还要能够从复杂的业务逻辑中提取关键信息,设计出直观、易用的用户界面。在项目负责人的指导下,我逐渐学会了如何将业务逻辑转化为具体的技术实现,这一过程有效地锻炼...
3. **建立测试用例框架**:基于用例图和活动图,构建一个清晰的测试用例框架,包括但不限于操作对象、操作功能、业务流程及规则、输入输出等关键要素。 4. **测试用例评审**:测试用例编写完成后,应进行内部评审,...
- **大赛报名**:利用GPS定位技术确定用户所在位置,并通过服务器端的Hibernate框架查询相关比赛信息。 - **发布功能**:用户可通过该功能发布活动、会议和比赛信息,使用后台管理系统实时监控报名情况。 #### 五、...