Pergunta

Nossa aplicação muitas vezes se conecta a um tipo diferente de back-ends sobre serviços web, MQ, JDBC, proprietária (dirigir sobre o soquete) e outros tipos de transporte. Nós já temos uma série de implementações que nos permitem conectar de nossa aplicação para esses back-ends e enquanto todas essas implementações implementar a interface java comum, eles não compartilham qualquer outra coisa.

Nós percebemos que há significação porções de código que são comuns para todas estas implementações de conectores específicos e decidimos agilizar o desenvolvimento de conectores futuras através de um conector universal. Esse conector será capaz de formatar mensagens para um formato esperado pelo back-end e enviá-los usando o mecanismo de transporte disponível. Por exemplo, o formato de mensagem de comprimento fixo sobre MQ ou ao longo de um encaixe.

Um dos dilemas que estamos enfrentando é a tecnologia mais adequada para este tipo de conector. Até agora, nossos conectores foram classes Java básicas que implementam a interface java comum. Uma vez que geralmente hospedar nossos aplicativos em algum servidor de aplicativos Java EE, parece que Java Connector Architecture seria a tecnologia mais adequada para este pedaço de software. No entanto, a implementação de conector compatível com JCA parece ser relativamente complexa. Quais são os benefícios palpáveis ??de ir com o padrão -? JCA e não benefícios justificam o esforço adicional

Foi útil?

Solução

Na verdade JCA parece a tecnologia mais adequada para você. Já excelentes argumentos foram feitas, ou seja, a portabilidade, interface padronizada, o pool de conexão e suporte a transações. E não se esqueça de segurança.

Com o servidor WebSphere Process os adaptadores poderia ser exposta como um serviço SCA que pode ter uma série de benefícios se que é importante para você.

Além disso, algumas ferramentas de desenvolvimento tem amplo suporte para desenvolver e testar conectores JCA.

Outra vantagem é (experientes) desenvolvedores Java EE administradores e Java EE (deveria) conhecer o padrão de modo de administração e desenvolvimento deve ser fácil de racionalizar.

Mas no final você deve ter para encontrar razões para implementar JCA com base no escopo do seu projeto, os planos para o futuro que você tem para o seu projeto ou talvez dentro da política da sua empresa.

Outras dicas

Resposta curta: Não vejo nenhum benefício sobre a seleção JCA sobre outras tecnologias, eu vejo isso como uma desvantagem, pois você precisa container Java EE

.

Resposta longa:

Eu fui cético sobre esses padrões Java EE já há algum tempo. Eu não vejo uma convincente técnico razão para usar um servidor Java EE cheio de recursos mais, uma vez que existem implementações de código melhor abertas para todos os recursos oferecido. Eu fui mordido várias vezes por incompatibilidades de implementação quando se deslocam para / de "soluções enterprisey".

A idéia para JCA está surgindo aqui agora e eu estou empurrando para tentar apache camelo ou integração primavera . Eu sou tudo para implementações de código aberto que você pode usar em todos os lugares. E há muita coisa acontecendo. Verifique esta lista de componentes . Concedido, talvez seja menor do que o que está já desenvolvidos com JCA, mas cada bit é de código aberto e é tudo em um único local. Além disso, acredito que a documentação é mais simples e mais completa. O impulso para chamadas de integração para um poderoso SPI com abundância de fonte aberta, exemplos vivos reais, desenvolvido da mesma forma, e que pode ser encontrado no mesmo lugar.

Eu estou odiando a negatividade, mas eu não gosto de servidores aplicação completa. Por exemplo, eu iria para tomcat e terracota qualquer dia em relação a outros produtos "enterprisey", assim como eu iria com camelo antes JCA, até a necessidade de JCA fica comprovada. Eu não gosto da idéia do Comitê de Java para dizer como devo desenvolver minhas próprias aplicações porque eu não confio neles. Eu acredito que é do meu interesse quando o pedaço de software pode trabalhar com a mesma facilidade em Java SE / RCP como em ambientes Java EE ou em um recipiente Servlet puro.

Acabei desenvolveu um adaptador de recursos de entrada para um dispositivo GPS comunicando através de um protocolo proprietário. Ele não era muito incômodo, embora eu tenho a impressão de que o desenvolvimento de uma uma saída pode exigir mais trabalho. A pior coisa com a JCA é a falta de documentação. Todos os livros e artigos parece ter o mesmo exemplo mudo.

A coisa que eu estou mais satisfeito com é a portabilidade. Uma vez que você tenha escrito o adaptador você pode conectar o rar (recurso de arquivo adaptador) em qualquer servidor de aplicativos para fornecer aplicativos implementados a capacidade de comunicar com eis suportados pelo seu ra. Ou você pode agregar o rar para a guerra / orelha.

Os benefícios são principalmente para vendedores que desejam conectores vender aos sistemas de back-end de propriedade para uso com qualquer servidor de aplicações, para os clientes que querem ser capaz de cair em um conector sem se preocupar se ele só funciona em não WebLogic Websphere, etc. na verdade, este é o objetivo do Java EE em geral.

Note que JBoss decidiu colocar várias coisas em JCA, por exemplo conexões JDBC passar por JCA.

O seu código de cliente futuro terá uma interface padronizada, alguns pooling e suporte a transações etc., mas é importante não perder de vista o quadro maior; ou seja, que os benefícios não são direcionados a você e seu projeto um especificamente, mas a um eco-sistema de software que consiste de muitos servidores de aplicativos, muitos sistemas de back-end, muitos conectores e assim por diante.

soa como um bom uso para um JBI recipiente com componentes de ligação. Discussão de JCA vs JBI.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top