Estou desenvolvendo em java um coordenador de transações como objetivo de escrever um artigo junto ao meu professor sobre banco de dados!
Estou com uma dúvida qual a melhor maneira de comunicação com as aplicações que vão utilizar a aplicação em java que será um coordenador de transações!
Pois minha aplicação terá que devolver os resultados de um select e tbém receber comandos das aplicações que não serão necessariamente em java!
O que vocês me recomendam para fazer essa troca de informações entre as aplicações ??
Pelo que entendi vc vai criar uma aplicação que será um coordenador geral de transações. Uma parte disso é coorcenar-se com o java. Em java a coordenação de trancções passa por JPA ( se vc quiser algo dentro dos padrões) e a comunicação fica a seu inteiro critério. Se a sua aplicação é escrita em java pode usar um mecanismo java como rmi. Se ela é escrita em outra linguagem use sockets.
Estou com uma dúvida qual a melhor maneira de comunicação com as aplicações que vão utilizar a aplicação em java que será um coordenador de transações!
[/quote]
Pelo que entendi vc vai criar uma aplicação que será um coordenador geral de transações. Uma parte disso é coorcenar-se com o java. Em java a coordenação de trancções passa por JPA ( se vc quiser algo dentro dos padrões) e a comunicação fica a seu inteiro critério. Se a sua aplicação é escrita em java pode usar um mecanismo java como rmi. Se ela é escrita em outra linguagem use sockets.[/quote]
Ce pegou a ideia, então será um middleware visto que será para qualquer aplicação entendeu?? Ai precisava saber qual o modelo de comunicação que usarei, pq por exemplo quando cara me der um select o meu aplicativo devolve o result set em que formato? pois objetos diferem de uma linguagem para outra certo? isto que não estou conseguindo entender como fazer…
Estou com uma dúvida qual a melhor maneira de comunicação com as aplicações que vão utilizar a aplicação em java que será um coordenador de transações!
[/quote]
Pelo que entendi vc vai criar uma aplicação que será um coordenador geral de transações. Uma parte disso é coorcenar-se com o java. Em java a coordenação de trancções passa por JPA ( se vc quiser algo dentro dos padrões) e a comunicação fica a seu inteiro critério. Se a sua aplicação é escrita em java pode usar um mecanismo java como rmi. Se ela é escrita em outra linguagem use sockets.[/quote]
Ce pegou a ideia, então será um middleware visto que será para qualquer aplicação entendeu?? Ai precisava saber qual o modelo de comunicação que usarei, pq por exemplo quando cara me der um select o meu aplicativo devolve o result set em que formato? pois objetos diferem de uma linguagem para outra certo? isto que não estou conseguindo entender como fazer…[/quote]
Bom, acho que não entendi a ideia afinal. Um coordenador não faz selects nem devolve ResultSets*.
Agora, um middleware, ok, ai são outros 500. Mas um middleware assim … não vejo para que serve.
Bom, se o que vc quer é fazer selects e passá-los a outros programas que correm em outras linguagens
tome como base o padrão JDBC. O driver jdbc é feito em java e comunica com o banco (que não é java) por um protocolo especifico. Isso é feito via sockets com o protocolo sendo comum aos dois lados.
Suponho que vc possa usar outras coisas como webservices ( na realidade um protocolo especifico sobre HTTP). Acho que tecnologias mais avançadas como rmi ou corba possam ser um problema ainda mais se seu objetivo é comunicar com linguagens diferentes. Acho que , então, se resume a socket ( sendo o usso de HTTP uma variação deste)
*Um coordenador de transação só vigia se todos os envolvidos na transação podem dar commit e se sim, vigia se todos deram realmente. Ele não sabe nada sobre dados ou protocolos, apenas sobre transações
Mais ou menos como disse o Sérgio, o coordenador é o componente responsável por guiar ou dirigir a execução do protocolo (acho melhor usar os termos guiar ou dirigir do que vigiar). E como também disse o Sérgio, o coordenador não recebe selects e nem devolve resultsets.
A discussão sobre o que usar está no livro Java Transaction Processing que indiquei acima. Eu não usaria web services neste tipo de comunicação e nem RMI. Apesar do JTS ter sido escrita em cima da especificação CORBA OTS, também evitaria CORBA. Aliás, evitaria qualquer coisa com cheiro de RPC para poder contemplar as chamadas transações de longa duração. Como as mensagens trocadas são simples, eu usaria sockets na raça ou JMS, mais provavelmente JMS se ocorrerem as transações de longa duração.
[quote=Luca]
Mais ou menos como disse o Sérgio, o coordenador é o componente responsável por guiar ou dirigir a execução do protocolo (acho melhor usar os termos guiar ou dirigir do que vigiar). [/quote]
Isto é semântica mas a palavra certa seria coordenar (!) só que eu não quiz ser redundante. Guiar/Dirigir implica que se sabe qual é o objetivo final e/ou que se pode impor decisões. O coordenador não é um componente ativo no sentido que “guiar/dirigir” sugerem, por isso escolhi vigiar , por ser mais passivo. Mas é apenas semântica
Hoje em dia se queremos implementar um banco de dados distribuidos ou fazemos em cima do proprio SGBD que estivermos utilizando ou usamos alguns serviços especificos de cada sistema operacional estilo MICROSOFT TRANSACTION COORDINATOR…
A minha proposta seria um coordenador de transação distribuida multiplataforma e independente da aplicação ou banco! O cara iria configurar os parametros e os servidores no middleware e faria o planejamento de como seria a distribuição (RANGE DE DADOS PARA CADA SERVER).
Ai na aplicação ele passaria somente strings via sockets que seriam as proprias querys, na minha aplicação eu aplicava um parser na string e faria a transação para o cara de acordo com os critérios pre-estabelecidos!
Agora eu não vejo é uma forma de retornar os resultsets pois o cara tbém vai fazer select distribuidos e etc… Queria pensar numa forma de devolver o resultset e o cara conseguir mapea-lo em uma classe dentro de sua aplicação…
[quote=sergiotaborda]… palavra certa seria coordenar (!) só que eu não quiz ser redundante. Guiar/Dirigir implica que se sabe qual é o objetivo final
[/quote]
Em termos semânticos concordo contigo que o coordenador não guia e não dirige. Mas o termo que empreguei vem da tradução de “driven” tirado dos textos que citei.
Eu entendo o coordenador do mesmo modo que o Sérgio descreveu e que é também o modo dos textos que conheço. Veja a figura do slide 12 do PDF do JavaOne que indiquei.
Não conheço o Microsoft Transaction Coordinator, mas acho que o que você quer fazer compara melhor com o Microsoft Transaction Server que contém o serviço do Microsoft Distributed Transaction Coordinator. Me parece que é o MTS que faz este monte de coisas a mais. Por este motivo é até comparado com os EJBs, que são a solução Java de fazer processamento distribuído. Veja uma comparação em http://gsraj.tripod.com/misc/ejbmts/ejbmtscomp.html
Se eu fosse fazer algo assim em Java do modo como você quer, procuraria não reinventar a roda e usar os EJBs junto com JTA/JTS. A comunicação com outras linguagens não tem nada a ver com o controle transacional.
[quote=sergiotaborda]… palavra certa seria coordenar (!) só que eu não quiz ser redundante. Guiar/Dirigir implica que se sabe qual é o objetivo final
[/quote]
Em termos semânticos concordo contigo que o coordenador não guia e não dirige. Mas o termo que empreguei vem da tradução de “driven” tirado dos textos que citei.
Eu entendo o coordenador do mesmo modo que o Sérgio descreveu e que é também o modo dos textos que conheço. Veja a figura do slide 12 do PDF do JavaOne que indiquei.
Não conheço o Microsoft Transaction Coordinator, mas acho que o que você quer fazer compara melhor com o Microsoft Transaction Server que contém o serviço do Microsoft Distributed Transaction Coordinator. Me parece que é o MTS que faz este monte de coisas a mais. Por este motivo é até comparado com os EJBs, que são a solução Java de fazer processamento distribuído. Veja uma comparação em http://gsraj.tripod.com/misc/ejbmts/ejbmtscomp.html
Se eu fosse fazer algo assim em Java do modo como você quer, procuraria não reinventar a roda e usar os EJBs junto com JTA/JTS. A comunicação com outras linguagens não tem nada a ver com o controle transacional.
[]s
Luca[/quote]
Luca me desculpe, mas infelizmente minha experiencia em desenvolvimento java comecou agora e por isso não tenho tanta noção das tecnologias que posso utilizar… Para falar a verdade ainda não sei nem o que é EJB…
Me da um pouco do caminho das pedras, algum material para me estudar e ver como implementar! E você faria a comunicação com as aplicações de que maneira? Se o seu programa que realmente vai se comunicar com SGBD ele teria q tbém repassar os resultados para aplicação não ??
Tenta me dar uma luz sobre isso ai por favor, vi q voce tem um vasto conhecimento em desenvolvimento java… help noís ai heheheh!
Desculpas peço eu mas não posso deixar de dizer que este projeto exige conhecimentos avançados e talvez não seja muito adequado ao seu atual nível de conhecimento de Java. Procure seu professor e peça para ele delimitar exatamente o que espera que você faça dentro do que sabe de Java.
Desculpas peço eu mas não posso deixar de dizer que este projeto exige conhecimentos avançados e talvez não seja muito adequado ao seu atual nível de conhecimento de Java. Procure seu professor e peça para ele delimitar exatamente o que espera que você faça dentro do que sabe de Java.
[]s
Luca[/quote]
Luca, ce ta certissimo é desenvolvimento avançado em java… Eu estou ciente disso…
Mas acho que adoto uma metodologia muito legal para desenvolver uma aplicação… Eu sempre busco estudar os requisitos, elaborar um projeto e assim levantar as tecnologias que vou necessitar aprender ou utilizar visto que vou ter tudo no projeto…
Ai eu queria pelo menos umas dicas do que estudar com refencia a algum material, pois o conceito por trás de um banco de dados distribuído eu tenho, tenho conhecimento muito bom sobre quase todos os dicionarios de dados desses bancos sql grandes… Já implementei um banco distribuído utilizando os recursos disponíveis no SGBD…
Por isso que preciso saber de pessoas que já tem mais maturidade em desenvolvimento java, as tecnologias envolvidas por trás de uma aplicação de grande porte, e se precisar botar a cara pra aprender eu coloco não tenho muita dificuldade em pegar novas tecnologias…
Se vocês puderem me guiar um pouco para que eu consigo me familiarizar com essas tecnologias ficaria muito grato… Pois de toda maneira um dia eu vou me deparar com elas queira ou não, pois tenho o objetivo de trilhar o caminho de desenvolvedor em java e por isso busco cada vez mais conhecimento seja qual for a área.
Desculpas peço eu mas não posso deixar de dizer que este projeto exige conhecimentos avançados e talvez não seja muito adequado ao seu atual nível de conhecimento de Java. Procure seu professor e peça para ele delimitar exatamente o que espera que você faça dentro do que sabe de Java.
[]s
Luca[/quote]
Luca, ce ta certissimo é desenvolvimento avançado em java… Eu estou ciente disso…
Mas acho que adoto uma metodologia muito legal para desenvolver uma aplicação… Eu sempre busco estudar os requisitos, elaborar um projeto e assim levantar as tecnologias que vou necessitar aprender ou utilizar visto que vou ter tudo no projeto…
Ai eu queria pelo menos umas dicas do que estudar com refencia a algum material, pois o conceito por trás de um banco de dados distribuído eu tenho, tenho conhecimento muito bom sobre quase todos os dicionarios de dados desses bancos sql grandes… Já implementei um banco distribuído utilizando os recursos disponíveis no SGBD…
Por isso que preciso saber de pessoas que já tem mais maturidade em desenvolvimento java, as tecnologias envolvidas por trás de uma aplicação de grande porte, e se precisar botar a cara pra aprender eu coloco não tenho muita dificuldade em pegar novas tecnologias…
Se vocês puderem me guiar um pouco para que eu consigo me familiarizar com essas tecnologias ficaria muito grato… Pois de toda maneira um dia eu vou me deparar com elas queira ou não, pois tenho o objetivo de trilhar o caminho de desenvolvedor em java e por isso busco cada vez mais conhecimento seja qual for a área.
Se seu problema é apenas de comunicação, basta estudar sockets.
Se você já conhece Java básico e computação distribuída, pode seguir o seguinte caminho para aprender EJBs:
RMI (básico porque é usado pelos EJBs por debaixo dos panos) - não precisa dominar totalmente, basta entender
JDBC
ORM (JPA ou Hibernate)
Um livro tal como Enterprise JavaBeans 3.0 do Bill Burke
[]s
Luca[/quote]
Luca valeu pela paciencia, sockets realmente estou dando uma estudada e talvez até implemente o meu proprio socket para ter mais controle sobre o mesmo!
RMI vou dar uma estudada para entender o que o EJB faz como você disse…
JDBC já tenho pratica mais ireia aprofundar um pouco!
Estou estudando JPA já também!
Comprei o livro agora heuehuehue valeu mesmo! O livro ensina bem o que eu vou precisar, você sabe me dizer???
Abraços e fico muito agradecido pela paciencia com o noob aqui heuehueh!