Chamar programa JAVA com COBOL passando dados por parâmetro
6 respostas
F
Filipe_Sartor
Olá,
Estou fazendo um programa JAVA para receber por parâmetro de um programa(COBOL) um código. A partir deste código, o programa JAVA faz um SELECT no banco de dados e precisa devolver o resultado por parâmetro novamente ao outro programa(COBOL). Já fiz esta troca de dados através de um arquivo .txt, porém, preciso que esta troca de arquivos seja feita em memória. É possível fazer isto ? Alguém pode me dar uma dica ?
Formas comuns de comunicar 2 aplicações:
a) Socket - TCP/IP
b) Comunicação interprocessos (via mensagens do SO) - No Java, só através de JNI
c) Arquivos (alternativa que vc já fez);
E
eliangela
Prefiro comunicar 2 aplicações via TCP/IP (Socket).
Já fiz tbem usando HTTP POST. Mas isso só quando quero comunicar com uma aplicação PHP.
J
jmmenezes
Seguinte, seu programa Cobol provavelmente é plataforma baixa. Correto?
Você usa Windows???
Não conheço quase nada de cobol, mas é possível chamar uma DLL de Cobol???
Se for possível, da para criar uma DLL em C, utilizando o jvm.dll e se comunicando com o Java através de JNI utilizando o RegisterNatives.
Vantagens ??? Não é preciso ter um serviço “escutando” em uma determinada porta e não sei se no Cobol é mais facil falar com DLL do que com Socket.
Já fiz uma solução assim para reaproveitar alguns componentes Java em um aplicativo C++ e também em um aplicativo Visual Basic, pois no cliente não era permitido abrir portas e era uma aplicação stand alone.
Se puder optar pelo sockets… é melhor!
M
matheuslmota
jmmenezes:
Seguinte, seu programa Cobol provavelmente é plataforma baixa. Correto?
Você usa Windows???
Não conheço quase nada de cobol, mas é possível chamar uma DLL de Cobol???
Se for possível, da para criar uma DLL em C, utilizando o jvm.dll e se comunicando com o Java através de JNI utilizando o RegisterNatives.
Vantagens ??? Não é preciso ter um serviço “escutando” em uma determinada porta e não sei se no Cobol é mais facil falar com DLL do que com Socket.
Já fiz uma solução assim para reaproveitar alguns componentes Java em um aplicativo C++ e também em um aplicativo Visual Basic, pois no cliente não era permitido abrir portas e era uma aplicação stand alone.
Se puder optar pelo sockets… é melhor!
Não acho a JNI apropriada para esse tipo de situação. Além de ser extremamente trabalhosa, é extremamente sujeita a erros, uma vez que se está misturando uma linguagem com gerenciamento de memória com uma que não tem. Acredite, isso pode ocasionar erros dificeis de resolver. A solução de usar Sockets ou Web Services parece sempre ser a mais viável.
F
Filipe_Sartor
matheuslmota:
jmmenezes:
Seguinte, seu programa Cobol provavelmente é plataforma baixa. Correto?
Você usa Windows???
Não conheço quase nada de cobol, mas é possível chamar uma DLL de Cobol???
Se for possível, da para criar uma DLL em C, utilizando o jvm.dll e se comunicando com o Java através de JNI utilizando o RegisterNatives.
Vantagens ??? Não é preciso ter um serviço “escutando” em uma determinada porta e não sei se no Cobol é mais facil falar com DLL do que com Socket.
Já fiz uma solução assim para reaproveitar alguns componentes Java em um aplicativo C++ e também em um aplicativo Visual Basic, pois no cliente não era permitido abrir portas e era uma aplicação stand alone.
Se puder optar pelo sockets… é melhor!
Não acho a JNI apropriada para esse tipo de situação. Além de ser extremamente trabalhosa, é extremamente sujeita a erros, uma vez que se está misturando uma linguagem com gerenciamento de memória com uma que não tem. Acredite, isso pode ocasionar erros dificeis de resolver. A solução de usar Sockets ou Web Services parece sempre ser a mais viável.
Na verdade o COBOL está rodando no UNIX, por isso está um pouco complicado.
E
eliangela
Não fica complicado não… use socket que eu tenho certeza que funciona. O Java funciona em qualquer plataforma. Ou, se vc quiser, pode colocar o Java em outra máquina.