Chamar programa JAVA com COBOL passando dados por parâmetro

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 ?

Obrigado!

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);

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.

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.

Se não conhecer JNI… precisa primeiro aprender.
http://docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/intro.html

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!

[quote=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.

Se não conhecer JNI… precisa primeiro aprender.
http://docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/intro.html

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![/quote]

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.

[quote=matheuslmota][quote=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.

Se não conhecer JNI… precisa primeiro aprender.
http://docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/intro.html

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![/quote]

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.[/quote]

Na verdade o COBOL está rodando no UNIX, por isso está um pouco complicado.

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.