Integração Java (SUN/Solaris) com Cobol/CICS (IBM/zOS)

Caros amigos,

Sei que esse é um tema comum nos fóruns, mas em minhas pesquisas não encontrei nada realmente proveitoso e concreto sobre o assunto.

Estou desenhando a arquitetura de uma solução onde haverá uma aplicação Java EE (servidor SUN/Solaris) que precisará “transacionasr” com uma aplicação COBOL/CICS (rodando em um Mainframe IBM).

Existe algum estudo, realmente conclusivo, ou algum case importante onde haja essa integração, buscando sempre a melhor performance (serão 50 mil usuários) e simplicidade de projeto (não quero ter que empregar dezenas de componentes e frameworks que deixarão a equipe de desenvolvimento de cabelo em pé). :shock:

Levantei algumas possibilidades como JCA, SOAP for CICS, MQ, mas como não conheço a fundo cada umas dessas tecnologias, fica difícil escolher a mais eficiente.

Por ser um projeto grande, com certeza serão feitos testes de performance, mas de cara tenho que apontar os fortes candidatos e descartar outros.

Gostaria muito de contar com a ajuda de vocês, pois apesar de eu não ser o programador que vai realmente por a mão na massa (infelizmente), eu como arquiteto devo deixar a bola redondinha para a FSW.

Forte abraço a todos. :lol:

Olá Cesar,

Minha opinião é que voçê comece a implementar diante do que a iteração pede
com um constante acompanhamento seu próximo aos desenvolvedores. Arquiteturas pré-definidas ou
otimizações prematuras só dão dor de cabeça, pense num startup que permita uma
evolução e mudanças rápidas.

Não sei se fui bem direto.

[]s

Usualmente se usa JCA ou MQ mesmo; em termos de eficiência acho que não há muita diferença - é só ver o que existe de homologado para o seu servidor Sun / Solaris (eu sei que no Bradesco se usa JCA mas sob IBM Websphere sob Solaris (Fujitsu), não sob Sun Java System Application Server). Entretanto, usar SOAP só é interessante se você precisar disponibilizar a sua aplicação do mainframe para outras coisas que não seja só a sua aplicação Java, pois costuma ser um pouco mais pesado.

Obrigado thingol.
Gostaria de saber como é o funcionamento do JCA, pois não se trata de um componente, mas sim de uma arquitetura montada com componentes do framenwork Java EE.
Pelo pouco que pesquisei ele usa mensageria igual ao MQ, certo?
Qual a diferença entre os dois padrões?

[quote=cesarpiau]Obrigado thingol.
Gostaria de saber como é o funcionamento do JCA, pois não se trata de um componente, mas sim de uma arquitetura montada com componentes do framenwork Java EE.
Pelo pouco que pesquisei ele usa mensageria igual ao MQ, certo?
Qual a diferença entre os dois padrões?[/quote]
O JCA é uma spec para integração de Java EE com outros tipos de servidores/serviços, em especial alguns legados. É bem utilizado para conectar com SAP, CICS, entre outros. Basicamente o vendor do produto que você vai se conectar disponibiliza um adapter JCA que você irá utilizar pra fazer essa comunicação. A parte do JCA com JMS pelo que eu sei é utilizada para integração desse serviço entre servidores Java EE.

No seu caso em específico de comunicação entre Java <–> COBOL eu já trabalhei em algumas empresas com essas características (Todas eram Bancos e/ou Seguradoras).

Em uma delas utilizavamos o CTG (CICS Transaction Gateway) da IBM, que é relativamente simples. Bastava configurar no App Server e fazer um lookup no JNDI que era disponibilizado. Você pode fazer por fora do container tb, mas da mais trabalho.

Em outra empresa, tinhamos sistemas que utilizamos o próprio MQSERIES (a.k.a. Websphere MQ) da IBM, para troca de mensagens assíncronas (que era bem eficiente por sinal) e Tinha também uma implementação Ad-hoc que utilizava Sockets (ARGH !!!) :slight_smile:

Dê uma olhada tb no ORACLE/BEA Tuxedo, talvez possa lhe ajudar…

Valeu Emerson e Tecnoage,
Pesquisando aqui mesmo na empresa, descobri que o pessoal costuma utilizar o “CICS Conector” juntamente com um encapsulador genérico para subir a transação.
Não entendi bem o funcionamento da coisa, mas se alguém souber do que se trata, ficarei grato se compartilhasse. :slight_smile:
Abraço a todos!

Reabrindo o post, um tanto quanto antigo… Estou com um cenário semelhante de integração, sendo que estamos utilizando o websphere as para intergrar com cobol-cics no z/os. Até ler este post estava pensando em utilizar o JCA, mas desconheço o connector da IBM para isso. Existe um ou já bem imbutido no websphere e é só configurar? O websphere precisa estar presente nos dois lados, java e cobol?

Outra coisa que gostaria de um esclarecimento dos amigos é referente ao cobol, não manjo nada de cobol, imagino que seja algo semelhante ao PL/SQL, onde procedures são executadas na mesma linha dos dados. Minha dúvida é, após ter estabelecido comunicação entre o Java e o cobol, como faço minhas consultas (se é assim que é feito), ou acesso objetos do cobol, vi o colega falando em fazer lookup mas lookup de que recurso?

Jbjares, cobol é um mundo estranho a primeira vista, mas não é o fim do mundo.
Eu não sou programador cobol, mas por estar envolvido com sistemas e equipes que lidam com cobol, a coisa vai ficando mais desmistificada.
Bom, a integração java/cobol não é algo trivial de se fazer, principalmente se for seguir o padrão JCA, que pede uma infinidade de controles para a transação.
Esse artigo da IBM pode te ajudar: http://www.ibm.com/developerworks/websphere/tutorials/0602_barosa/section2.html
Outra opção para conectar uma aplicação java a um programa cobo/cics é por meio do CTG (Cics Transation Gateway) ferramenta da IBM (paga) que faz o trabalho e implementa o padrão JCA.
Mas não existe receita pronta para tal. Na empresa onde trabalho foi criada uma solução caseira, a qual só os “gurus” do cobol sabem como funciona.
A iWay também comercializa um conector para cics, o qual também usamos aqui, apesar de estarmos descontinuando seu uso por questões de licença. http://www.iwaysoftware.com/pdf/tech_brief/TB_transaction_processing.pdf
Espero que tenha ajudado e desejo boa sorte.