Desenvolvimento de sistema de reserva de negócios baseado em tecnologia EJB
Autor:Eve Cole
Data da Última Atualização:2009-07-02 17:12:35
A tecnologia tem sido cada vez mais utilizada no desenvolvimento de sistemas de rede em grande escala. Neste artigo, o autor apresentará a definição de EJB (Enterprise Java Beans), o modelo de estrutura do sistema de aplicação baseado na tecnologia EJB, e o conteúdo e classificação de EJB. Finalmente, combinado com o baseado em EJB. Desenvolveu um sistema de reservas de negócios usando modelo estrutural e componentes EJB.
EJB não é tecnicamente um “produto”, mas sim uma especificação técnica. A definição de EJB da SUN é: A estrutura do EJB é uma estrutura de componentes para desenvolver e configurar aplicativos de negócios distribuídos baseados em componentes. Os aplicativos desenvolvidos com estruturas EJB são escaláveis, transacionais e seguros para vários usuários. Esses aplicativos podem precisar ser gravados apenas uma vez, mas podem ser implementados em uma plataforma de servidor de tarefas que suporte a especificação EJB. Em geral, EJB é um modelo de componente padrão do lado do servidor para monitoramento de transações de componentes.
Modelo de estrutura de sistema baseado em tecnologia EJB
A estrutura EJB é uma estrutura de componentes do lado do servidor, que é uma estrutura hierárquica. Seu modelo estrutural é mostrado na Figura 1. Este modelo estrutural geralmente pode ser dividido em camada de cliente, camada de lógica de negócios e camada de dados. O autor fará uma breve introdução a isso a seguir.
Figura 1: Modelo de estrutura de aplicativo baseado em EJB
A camada cliente é usada principalmente para atender a vários requisitos de acesso para todo o sistema e lidar com as seguintes tarefas:
Receba a entrada do usuário, analise e verifique a entrada do usuário e processe adequadamente;
Exibe os resultados de execução transmitidos do alto nível do lado do servidor.
A camada cliente geralmente consiste em processos clientes, que são criados e destruídos dinamicamente pelo navegador.
Camada de lógica de negócios Esta é a parte mais crítica de todo o sistema. A camada de lógica de negócios é geralmente dividida em duas camadas. A camada superior é a camada de recebimento de solicitações (comumente chamada de camada da Web), que é usada para receber solicitações do navegador e transferir as solicitações para a camada inferior para processamento. são enviados para o navegador. Esses processos consistem principalmente em páginas JSP, miniaplicativos baseados na Web e Servlets que exibem páginas HTML. A camada inferior é a camada de processamento de solicitações (geralmente chamada de camada EJB), que inclui o processo de escuta, o processo de processamento e o processo de operação do banco de dados. É responsável por processar as solicitações dos clientes da camada de recebimento de solicitações e processá-las, e ao mesmo tempo. passando os resultados da solicitação para a camada de recebimento da solicitação, se necessário, os resultados do processamento precisam ser entregues à camada de dados para armazenamento.
A camada de dados fornece principalmente serviços de dados para a camada de lógica de negócios, como armazenar os resultados do processamento da camada de lógica de negócios e retornar os resultados dos dados recuperados pela camada de lógica de negócios. quando o banco de dados muda, só precisamos modificá-lo. Basta usar a instrução para conectar-se à fonte de dados.
Classificação de componentes EJB Normalmente, existem dois tipos básicos de componentes EJB do lado do servidor: Entity Bean e Session Bean.
Figura 2: Arquitetura do sistema de reservas empresariais
Entity Beans são modelos construídos para objetos do mundo real, que geralmente são registros persistentes em um banco de dados. Entity Bean constrói um modelo para conceitos de negócios que podem ser expressos como substantivos. Ele descreve o estado dos objetos do mundo real e seu comportamento e permite aos desenvolvedores encapsular dados e regras de negócios relacionados a conceitos específicos. Session Bean é um Enterprise Bean criado através da Home Interface e dedicado a conexões de clientes. As instâncias de Session Bean geralmente não são compartilhadas com outros clientes. Session Bean é uma extensão da aplicação cliente e é responsável por gerenciar todo o processo ou tarefa. Session Beans podem gerenciar a interação entre Entity Beans, descrevendo como eles trabalham juntos para completar uma tarefa especial.
Os beans de entidade podem ser divididos em beans gerenciados por contêiner e beans gerenciados usando beans com base na maneira como gerenciam a persistência. Os beans gerenciados por contêiner são gerenciados automaticamente pelo contêiner EJB. O contêiner sabe como os campos da instância do Bean são mapeados para o banco de dados e gerencia automaticamente a inserção, atualização e exclusão de dados relacionados à entidade no banco de dados; gerenciar a persistência. O Beans precisa fazer tudo isso explicitamente. Os desenvolvedores do Bean devem escrever código para operar o banco de dados. O contêiner EJB apenas informa à instância do Bean quando ele pode inserir, atualizar e excluir dados do banco de dados com segurança. A instância do bean faz todo o trabalho de persistência sozinha.
Os Session Beans podem ser divididos em beans sem estado e beans com estado, dependendo de serem ou não com estado. Stateless Session Beans tendem a ser versáteis e reutilizáveis. Session Beans são extensões de aplicativos clientes que completam tarefas em nome dos clientes e mantêm o status relacionado ao cliente.
Desenvolvimento de Sistema de Reservas Empresariais O sistema de reservas de cabines é um sistema de reservas empresariais baseado na tecnologia de componentes EJB desenvolvido na plataforma J2EE. Seu processo principal é que após o login do usuário, ele será conduzido pela página de seleção do cliente e pela página de seleção de navegação. por sua vez, e fornecerá ao cliente Selecione uma cabine disponível (obtenha a lista de cabines disponíveis no TravelAgentBean. O método listAvailableCabin() do TravelAgentBean é chamado pelo Servlet que gera esta página da web. A lista de cabines será usada para criar um Caixa de listagem HTML na página da web carregada no navegador do usuário), quando o usuário seleciona uma cabine e envia a seleção, uma solicitação HTTP será enviada ao servidor EJB (Websphere Application Server). Após o servidor receber a solicitação, ele despacha. para o ReservationServlet. Este servlet chama o método TravelAgent.BookPassage(). Para fazer a reserva real, as informações da tag retornadas pelo método BookPassage() serão usadas para criar outra página da web que será enviada de volta ao navegador do usuário. Se a reserva for bem-sucedida, ProcessPaymentServlet chamará o método de pagamento em ProcessPaymentBean para implementar o processo de cobrança para o cliente. Sua estrutura específica é mostrada na Figura 2.
Os componentes EJB no sistema de reservas incluem principalmente as seguintes partes:
CabinBean: Entity Bean, a chave primária é CabinPK, que é um Entity Bean usado para encapsular a cabine de um navio no mundo real.
CustomerBean: Entity Bean, a chave primária é CustomerPK, que é uma entidade Bean usada para encapsular consumidores que precisam reservar cabines de cruzeiro no mundo real.
CruiseBean: Entity Bean, a chave primária é CruisePK, que é um Entity Bean usado para encapsular rotas de navios no mundo real. ReservationBean: Entity Bean, a chave primária é CruiseID, CabinID Representa um registro inalterado no banco de dados, ou seja, uma reserva. Registra os eventos históricos do sistema de reservas. dois clientes reservam a mesma rota. A razão para esse problema é que há uma lacuna entre o momento em que o cliente seleciona a cabine e a rota e o momento em que o método bookPassage() é chamado. TravelAgentBean: Stateful session bean, um bean de sessão responsável pelo fluxo de trabalho de reserva de cabines de voo. Ele encapsula o processo de conclusão de uma operação de reserva para uma rota e é usado em aplicações de clientes de agentes de viagens em todo o mundo. TravelAgentBean não só atende às necessidades dos consumidores na reserva de passagens, mas também fornece informações sobre as demais cabines durante a viagem. Para realizar esta tarefa, o Bean precisa saber de qual rota, cabine e cliente é feita a reserva. Após coletar essas informações, o método bookPassage() finaliza o processo de reserva. conta Na rota correta Reserve a cabine selecionada no navio correto e gere um ticket para o cliente através da classe Ticket. Aqui, precisamos usar a classe CreditCard para armazenar informações relevantes sobre o cartão de crédito do cliente. Ao mesmo tempo, o método ListAvailableCabins() é usado para exibir as cabines disponíveis que não foram reservadas.
ProcessPaymentBean: Bean de sessão sem estado, que é o processo de cobrança dos consumidores em um sistema de transação. Ele define três métodos de transação para métodos de pagamento em cheque, dinheiro e cartão de crédito, nomeadamente ByCheck(), ByCash() e ByCredit().
Exemplo de código de programa do sistema de reservas de negócios Todo o sistema de reservas de negócios foi desenvolvido no IBM VisualAge for Java. Neste ambiente de desenvolvimento IDE, os beans de entidade são muito mais fáceis de desenvolver do que os beans de sessão. de componentes EJB:
1. Interface remota do TravelAgent Fornece um método para definir a rota e o ID da cabine que o cliente deseja reservar. Além disso, o método boolPassage() é configurado para cobrar do cliente pela reserva e gerar um ticket para o cliente. O código específico é o seguinte:
pacote com.titan.travelagent;
importar java.rmi.RemoteException;
importar javax.ejb.FinderException;
importar com.titan.cruise.Cruise;
importar com.titan.customer.Customer;
importar com.titan.processpayment.CreditCard;
interface pública TravelAgent estende javax.ejb.EJBObject
{
public void setCruiseID(int cruise) lança RemoteException, FinderException;
public int getCruiseID() lança RemoteException, IncompleteConversationalState;
public void setCabinID(int cabine) lança RemoteException, FinderException;
public int getCabinID() lança RemoteException, IncompleteConversationalState;
public int getCustomerID() lança RemoteException, IncompleteConversationalState;
ticket público boolPassage (cartão de crédito, preço duplo) lança RemoteException, IncompleteConversationalState;
}
2. Interface inicial do TravelAgent
O código da interface do TravelAgent Home é o seguinte:
puckage com.titan.tracelagent;
importar java.rmi.RemoteException;
importar javax.ejb.CreateException;
importar com.titan.customer.Customer;
interface pública TravelAgentHome estende javax.ejb.EJBHome {
public TravelAgent create(custo do cliente) lança RemoteException,CreateException;}
3. A classe TravelAgent Bean precisa implementar todos os comportamentos na interface remota e na interface Home do TravelAgent. Devido às limitações de espaço, este artigo não apresentará seu código de implementação.
Através das etapas acima, concluímos o desenvolvimento do componente EJB de um sistema de reservas empresariais.