Middleware em java

Ola Pesso estarei desenvolvendo uma aplicação web na qual precisarei capturar informações de 3 base de dados e locais diferentes, onde estou pesquisando sobre qual tecnologia usar e estou em duvidas entre RMI e EJB.

Qual devo usar como um iniciante nos estudos de arquitetura de N camadas na plataforma JEE.

Aconselho dar uma olhada no JBoss ESB é um middleware bem interessante.
E tem outras opções como o Mule, Service Mix, Open ESB.
Todos fazem o que você está querendo fazer.

Olá

EJBs usam RMI. Usar RMI direto é bobagem em 95% dos casos mas se você pesquisar aqui no GUJ vai descobrir que o povo tem mania de usar isto. Devem existir professores ensinando coisas obsoletas nas faculdades. Se você não sabe RMI, sugiro fortemente que reserve seu tempo e sua cabeça para outras coisas melhores.

Há diversas maneiras de fazer o que quer e a maioria delas ficará uma bela porcaria se não muito bem pensada por alguém com razoável experiência. Só para saber, aí vai uma lista de opções sem que nenhuma delas possa ser indicada sem saber as características do problema a resolver:

  1. web services (de preferência usando REST)

  2. JMS na raça ou EJBs do tipo MDBs

  3. Usando algum ESB tal como foi recomendado mas sabendo que pode estar matando pulga com bala de canhão

  4. E mais dezenas de outros modos normalmente usados para fazer EAI

[]s
Luca

[quote=fabiano-under]Ola Pesso estarei desenvolvendo uma aplicação web na qual precisarei capturar informações de 3 base de dados e locais diferentes, onde estou pesquisando sobre qual tecnologia usar e estou em duvidas entre RMI e EJB.
[/quote]

não entendi o que RMI ou EJB tem a ver com o problema. Nem porque foram seguridas tecnologias de integração entre sistemas quando o problema é comunica com 3 bancos de dados.

Comunicar com banco de dados = JDBC.

O facto de serem 3 bancos não significa nada de especial. Significa apenas que terá 3 fontes de dados. 3 DataSource.

as tecnologias de integração só fazem sentido se por alguam razão ( segurança, sometimes-connected, firewall, etc…) não poder colocar um servidor de aplicação único comunicando com os 3 bancos simultaneamente.

Claro que ha uam estrutrua e um design a ser feito, mas isso depende do objetivo do sistema.

Olá

[quote=sergiotaborda]não entendi porque foram seguridas tecnologias de integração entre sistemas quando o problema é comunica com 3 bancos de dados.

Comunicar com banco de dados = JDBC.

O facto de serem 3 bancos não significa nada de especial. Significa apenas que terá 3 fontes de dados. 3 DataSource.

as tecnologias de integração só fazem sentido se por alguam razão ( segurança, sometimes-connected, firewall, etc…) não poder colocar um servidor de aplicação único comunicando com os 3 bancos simultaneamente.[/quote]

Porém…

Se os tais locais diferentes estivessem na mesma rede local a pergunta não teria sentido e você teria razão.

[]s
Luca

E se eles tivessem em redes diferentes vc terias duas hipoteses:

  1. abrir comunicação ao IP do banco - neste caso a solução é a mesma do que se fossem locais.
  2. colocar uma aplicação rodando no local do banco. Ai sim usaria serviços de integração, mas para começo de conversa teria que instala-los dá no mesmo que abrir o IP para a sua aplicação já que esses programinas seriam agentes da sua aplicação.

Sem mais detalhes do ambiente alvo é dificil saber. O que eu não entendi é porque optaram primeiro por 2 em vez 1.

Olá

[quote=sergiotaborda]E se eles tivessem em redes diferentes vc terias duas hipoteses:

  1. abrir comunicação ao IP do banco - neste caso a solução é a mesma do que se fossem locais.[/quote]

Deus me livre! Isto cheira àquelas soluções cliente/servidor do milênio passado em que cada cliente precisava de uma licença do banco de dados. Dificilmente o banco de dados agüenta algo assim. Mas se no caso dele a aplicação web é muito pequena e com poucos clientes, então repito que a pergunta dele não teria sentido.

[]s
Luca

a ideia do Aplicação é uma Agencia de viagem que tem seu Banco, na qual quando o Cliente marcar uma Viagem ele podera reservar um hotel na qual esta informações estará no banco do Sistema do Hotel na qual Aplicação mostrara qual quartos estão vagos, valor e outros.

aqui esta a ideia da Aplicação.

Grato Pela Ajuada até agora!!!

Olá

Como suspeitei, isto não é caso de consulta a um banco de dados externo. Aliás, só se a área de TI do Hotel fosse composta de loucos furiosos, seria permitida a consulta direta ao banco de dados. O que a agência deve fazer é consultar um serviço de reservas que o Hotel deve disponibilizar.O mesmo no caso de companhias aéreas.

A aplicação deve cuidar direitinho da questão de não conseguir montar o pacote completo mas já ter feito um das reservas. Como vê, este não é uma aplicação simples. Geralmente precisa ser criada por gente que conhece bem integração de sistemas e esta área de negócios.

[]s
Luca

Mas eu serei obrigado a utlizar EJB para controlar a logica de negocio ou moderei criar a camada de Middleware utilizando só JDBC .

Olá

O que está dentro da sua aplicação você pode fazer como quiser. JDBC direto na raça pouca gente usa. Procure aprender sobre ORM, Hibernate, etc. e tal.

Pensei que sua pergunta se referia como ia obter as informações dos outros sistemas.

[]s
Luca

Tambem como e irei captura informações de outra base de dados controlarei esta informações correta.