基于EJB技术的商务预订系统的开发 _MySQL
EJB
技术已经越来越多地应用到大型网络系统开发中,本文中,笔者将介绍EJB(Enterprise Java Beans)的定义、基于EJB技术的应用系统结构模型以及EJB组件的内容和分类,最后结合基于EJB的结构模型和EJB组件开发了一个商务预订系统。
EJB从技术上而言不是一种“产品”,而是一种技术规范。SUN公司对EJB的定义是:EJB的结构是开发和配置基于组件的分布式商务应用程序的一种组件结构。用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。这些应用程序可能只需编写一次,却可以在支持EJB规范的任务服务器平台上进行配置。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。
基于EJB技术的系统结构模型
EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。该结构模型在通常情况下可分为客户层、业务逻辑层和数据层,下面笔者对此作一简单介绍。
图1:基于EJB的应用结构模型
客户层 主要是用来满足对整个系统的各种访问需求并处理以下工作:
接收用户的输入,还可以对用户的输入进行分析检查并作相应的处理;
显示由服务器端高层传来的运行结果。
客户层通常是由客户进程组成,这些进程由浏览器动态地创建和撤销。
业务逻辑层 这是整个系统最关键的部分。业务逻辑层在通常情况下会分为两层,其高层是请求接收层(一般称之为Web层),用于接收从浏览器传来的请求并将请求交给底层进行处理,同时将请求处理结果发送给浏览器。这些过程主要由JSP页面、基于Web的Applets以及显示 HTML页面的Servlets组成。底层是请求处理层(一般称之为EJB层),包括监听进程、处理进程和数据库操作进程,负责处理请求接收层传来的客户请求并对它进行处理,同时将请求结果传递给请求接收层,如果需要的话还需要将处理结果交给数据层进行存储。
数据层 主要是为业务逻辑层提供数据服务,如存储业务逻辑层处理结果、返回业务逻辑层检索的数据结果,同时也是为了实现屏蔽数据源的变化,从而实现当数据库发生变化时我们只需修改连接数据源的语句就可以。
EJB组件的分类
通常情况下,服务端的EJB组件有两种基本类型:Entity Bean(实体Bean)和Session Bean(会话Bean)。
图2:商务预订系统的构架
Entity Bean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。Entity Bean为那些可以表达成名词的商务概念建立模型,它既描述了真实世界对象的状态,也描述了它们的行为,同时允许开发者封装与具体概念有关的数据和商务规则。Session Bean是一种通过Home Interface创建并对客户端连接专有的Enterprise Bean,Session bean实例一般不与其它客户端共享。Session Bean是客户端应用程序的一个扩展,并负责管理整个过程或任务。Session Bean可以管理Entity Bean之间的交互,描述它们如何一起工作来完成一个特殊任务。
Entity Bean根据管理持久性的方式可以分为容器管理的Bean和使用Bean管理的Bean。容器管理的Bean由EJB容器自动管理它们的持久性,容器知道Bean实例的字段是怎样映射到数据库中去,并自动管理插入、更新和删除数据库中与实体有关的数据;使用Bean管理持久性的Bean需要明确地完成所有这些工作。Bean的开发者必须编写代码操作数据库,EJB容器只告诉Bean实例什么时候可以在数据库中安全地插入、更新和删除数据,除此之外,它不提供任何别的帮助。Bean实例自己完成所有的持久性工作。
Session Bean根据是否有状态可分为无状态Bean和有状态Bean。无状态Session Bean倾向于通用并可重复使用;有状态Session Bean是客户应用程序的扩展,它代表客户完成任务并维护客户的相关状态。
商务预订系统的开发
客舱预订系统是在J2EE平台上开发的基于EJB组件技术的商务预订系统,其主要流程是用户登录以后,将被依次带领着通过顾客选择页和导航选择页,并将为顾客选择一个可获得的客舱(从TraveAgentBean处获得可供选择的客舱列表,TravelAgentBean的listAvailableCabin()方法由生成此网页的Servlet调用,客舱列表将用于装载到用户浏览器的网页上创建HTML列表框),当用户选择一间客舱并提交了选择时,一个HTTP请求将会发送到EJB服务器(Websphere Application Server),服务器接到此请求后,将其分派给ReservationServlet,此Servlet调用TravelAgent.BookPassage()方法做实际的预订,BookPassage()方法返回的标签信息将用于创建另一个送回用户浏览器的网页。如果预订成功,则由ProcessPaymentServlet去调用ProcessPaymentBean中的支付方法,从而实现对客户的收费过程。其具体构架见图2。
预定系统中的EJB组件主要包括以下几个部分:
CabinBean:实体Bean,主键是CabinPK,是用来封装现实世界中的航船客舱的一个实体Bean。
CustomerBean:实体Bean,主键是CustomerPK,是用来封装现实世界中需要预订航船客舱的消费者的一个实体Bean。
CruiseBean:实体Bean,主键是CruisePK,是用来封装现实世界中航船航线的一个实体Bean。ReservationBean:实体Bean,主键是CruiseID,CabinID,它代表了数据库中不变的一条记录,即一个预订,它记录了预订系统的历史事件,主要是用来防止双重预订,即两个客户预订相同航线的相同客舱,产生这种问题的原因是因为客户选择客舱和航线的时刻与调用bookPassage()方法的时刻之间有一段间隔时间。TravelAgentBean:有状态会话Bean,一个负责预订航行舱位工作流的会话Bean,它封装了完成一条航线的一个预订操作的过程并在全世界的旅行代理的客户端应用程序中使用。TravelAgentBean不仅满足消费者预订票据的需要,还可提供在航行中剩余客舱的消息。为了完成此任务,Bean需要知道预订是由哪一条航线、客舱,以及客户组成,收集到这些信息后,由bookPassage()方法来完成处理预订过程,它为客户账户的计费负责,在正确航线的正确船只上预订选择的客舱,并通过Ticket类来为客户产生一张票据。在这里,我们需使用CreditCard类存储有关客户信用卡的相关信息,同时,ListAvailableCabins()方法用来显示可用的尚未被预订的客舱。
ProcessPaymentBean:无状态会话Bean,它是在事务系统中向消费者收费的过程。它定义了支票、现金和信用卡支付方式的三个事务方法,即ByCheck()、ByCash()和ByCredit()。
商务预订系统的程序代码示例
整个商务预订系统的开发是在IBM VisualAge for Java下面开发完成的,在该IDE开发环境中,实体Bean相对会话Bean要容易开发得多,以下就以TravelAgentBean为例,介绍EJB组件的开发过程:
1.TravelAgent远程接口
它提供了设置客户希望预订的航线和客舱ID的方法。此外,还设置boolPassage()方法来对客户的预订进行计费,并为客户产生一张票据。具体代码如下:
package com.titan.travelagent;
import java.rmi.RemoteException;
import javax.ejb.FinderException;
import com.titan.cruise.Cruise;
import com.titan.customer.Customer;
import com.titan.processpayment.CreditCard;
public interface TravelAgent extends javax.ejb.EJBObject
{
public void setCruiseID(int cruise) throws RemoteException, FinderException;
public int getCruiseID( ) throws RemoteException, IncompleteConversationalState;
public void setCabinID(int cabin) throws RemoteException, FinderException;
public int getCabinID()throws RemoteException, IncompleteConversationalState;
public int getCustomerID()throws RemoteException, IncompleteConversationalState;
public Ticket boolPassage(CreditCard card,double price) throws RemoteException, IncompleteConversationalState;
}
2.TravelAgent Home接口
TravelAgent Home接口代码如下:
puckage com.titan.tracelagent;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import com.titan.customer.Customer;
public interface TravelAgentHome extends javax.ejb.EJBHome {
public TravelAgent create(Customer cust) throws RemoteException,CreateException;}
3.TravelAgent Bean类
它需要实现TravelAgent的远程接口和Home接口中的所有行为,限于篇幅,本文将不再介绍其实现代码,感兴趣的读者可自己加以完成。
通过以上步骤,我们就完成了一个商务预定系统的EJB组件的开发。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











GEMM(일반 행렬 곱셈)은 많은 응용 프로그램과 알고리즘의 중요한 부분이며 컴퓨터 하드웨어 성능을 평가하는 중요한 지표 중 하나이기도 합니다. GEMM 구현에 대한 심층적인 연구와 최적화는 고성능 컴퓨팅과 소프트웨어와 하드웨어 시스템 간의 관계를 더 잘 이해하는 데 도움이 될 수 있습니다. 컴퓨터 과학에서 GEMM의 효과적인 최적화는 컴퓨팅 속도를 높이고 리소스를 절약할 수 있으며, 이는 컴퓨터 시스템의 전반적인 성능을 향상시키는 데 중요합니다. GEMM의 작동 원리와 최적화 방법에 대한 심층적인 이해는 현대 컴퓨팅 하드웨어의 잠재력을 더 잘 활용하고 다양하고 복잡한 컴퓨팅 작업에 대한 보다 효율적인 솔루션을 제공하는 데 도움이 될 것입니다. GEMM의 성능을 최적화하여

7월 29일, AITO Wenjie의 400,000번째 신차 출시 행사에 Huawei 전무이사이자 Terminal BG 회장이자 Smart Car Solutions BU 회장인 Yu Chengdong이 참석하여 연설을 했으며 Wenjie 시리즈 모델이 출시될 것이라고 발표했습니다. 올해 출시 예정 지난 8월 Huawei Qiankun ADS 3.0 버전이 출시되었으며, 8월부터 9월까지 순차적으로 업그레이드를 추진할 계획입니다. 8월 6일 출시되는 Xiangjie S9에는 화웨이의 ADS3.0 지능형 운전 시스템이 최초로 탑재됩니다. LiDAR의 도움으로 Huawei Qiankun ADS3.0 버전은 지능형 주행 기능을 크게 향상시키고, 엔드투엔드 통합 기능을 갖추고, GOD(일반 장애물 식별)/PDP(예측)의 새로운 엔드투엔드 아키텍처를 채택합니다. 의사결정 및 제어), 주차공간부터 주차공간까지 스마트 드라이빙의 NCA 기능 제공, CAS3.0 업그레이드

이 AI 지원 프로그래밍 도구는 급속한 AI 개발 단계에서 유용한 AI 지원 프로그래밍 도구를 많이 발굴했습니다. AI 지원 프로그래밍 도구는 개발 효율성을 높이고, 코드 품질을 향상시키며, 버그 발생률을 줄일 수 있습니다. 이는 현대 소프트웨어 개발 프로세스에서 중요한 보조자입니다. 오늘 Dayao는 4가지 AI 지원 프로그래밍 도구(모두 C# 언어 지원)를 공유하겠습니다. 이 도구가 모든 사람에게 도움이 되기를 바랍니다. https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot은 더 빠르고 적은 노력으로 코드를 작성하는 데 도움이 되는 AI 코딩 도우미이므로 문제 해결과 협업에 더 집중할 수 있습니다. 힘내

Go 언어 개발 모바일 애플리케이션 튜토리얼 모바일 애플리케이션 시장이 지속적으로 성장함에 따라 점점 더 많은 개발자가 Go 언어를 사용하여 모바일 애플리케이션을 개발하는 방법을 모색하기 시작했습니다. 간단하고 효율적인 프로그래밍 언어인 Go 언어는 모바일 애플리케이션 개발에서도 강력한 잠재력을 보여주었습니다. 이 기사에서는 Go 언어를 사용하여 모바일 애플리케이션을 개발하는 방법을 자세히 소개하고 독자가 빠르게 시작하고 자신의 모바일 애플리케이션 개발을 시작할 수 있도록 특정 코드 예제를 첨부합니다. 1. 준비 시작하기 전에 개발 환경과 도구를 준비해야 합니다. 머리

본 논문에서는 자율 주행에서 다양한 시야각(예: 원근 및 조감도)에서 객체를 정확하게 감지하는 문제, 특히 원근(PV) 공간에서 조감(BEV) 공간으로 기능을 효과적으로 변환하는 방법을 탐구합니다. VT(Visual Transformation) 모듈을 통해 구현됩니다. 기존 방법은 크게 2D에서 3D로, 3D에서 2D로 변환하는 두 가지 전략으로 나뉩니다. 2D에서 3D로의 방법은 깊이 확률을 예측하여 조밀한 2D 특징을 개선하지만, 특히 먼 영역에서는 깊이 예측의 본질적인 불확실성으로 인해 부정확성이 발생할 수 있습니다. 3D에서 2D로의 방법은 일반적으로 3D 쿼리를 사용하여 2D 기능을 샘플링하고 Transformer를 통해 3D와 2D 기능 간의 대응에 대한 주의 가중치를 학습하므로 계산 및 배포 시간이 늘어납니다.

세계 최초의 AI 프로그래머 데빈(Devin)이 태어난 지 한 달도 채 안 된 2022년 3월 3일, 프린스턴 대학의 NLP팀은 오픈소스 AI 프로그래머 SWE-에이전트를 개발했습니다. GPT-4 모델을 활용하여 GitHub 리포지토리의 문제를 자동으로 해결합니다. SWE-bench 테스트 세트에서 SWE-agent의 성능은 Devin과 유사하며 평균 93초가 걸리고 문제의 12.29%를 해결합니다. SWE-agent는 전용 터미널과 상호 작용하여 파일 내용을 열고 검색하고, 자동 구문 검사를 사용하고, 특정 줄을 편집하고, 테스트를 작성 및 실행할 수 있습니다. (참고: 위 내용은 원문 내용을 약간 조정한 것이지만 원문의 핵심 정보는 그대로 유지되며 지정된 단어 수 제한을 초과하지 않습니다.) SWE-A

4월 11일, 화웨이는 처음으로 HarmonyOS 4.2 100개 시스템 업그레이드 계획을 공식 발표했습니다. 이번에는 휴대폰, 태블릿, 시계, 헤드폰, 스마트 스크린 및 기타 장치를 포함하여 180개 이상의 장치가 업그레이드에 참여할 것입니다. 지난달 HarmonyOS4.2 100대 업그레이드 계획이 꾸준히 진행됨에 따라 Huawei Pocket2, Huawei MateX5 시리즈, nova12 시리즈, Huawei Pura 시리즈 등을 포함한 많은 인기 모델도 업그레이드 및 적응을 시작했습니다. 더 많은 Huawei 모델 사용자가 HarmonyOS가 제공하는 일반적이고 종종 새로운 경험을 즐길 수 있을 것입니다. 사용자 피드백에 따르면 HarmonyOS4.2를 업그레이드한 후 Huawei Mate60 시리즈 모델의 경험이 모든 측면에서 개선되었습니다. 특히 화웨이 M

Linux와 Windows는 각각 오픈 소스 Linux 시스템과 상용 Windows 시스템을 대표하는 두 가지 일반적인 운영 체제입니다. 두 운영 체제 모두 사용자가 운영 체제와 상호 작용할 수 있는 명령줄 인터페이스가 있습니다. Linux 시스템에서는 사용자가 Shell 명령줄을 사용하고 Windows 시스템에서는 cmd 명령줄을 사용합니다. Linux 시스템의 Shell 명령줄은 거의 모든 시스템 관리 작업을 완료할 수 있는 매우 강력한 도구입니다.
