Pessoal, é o seguinte.
Tenho uma página JSP e preciso que esta envie uma string para um sistema Desktop, que é o seu parametro de entrada. Alguma ideia de como fazer isso?
Como fazer para o JSP enviar dados para uma aplicação desktop?
22 Respostas
Em se tratando de Java, vc vai precisar de uma Applet pra poder acessar a maquina e rodar a aplicacao.
Crie uma applet, assine ela digitalmente e chame o programa com Runtime.getRuntime
nunca criei um applet na minha vida…
Tem algum tutorial?
P/ quê applet???
Uma alternativa seria você pode obter os dados do JSP, ainda mais se ele estivem bem organizados, através das classes URL e URLConnection.
Você faz o parse do html que vem no JSP para pegar o dado que precisa.
[]´s
P/ quê applet???
Uma alternativa seria você pode obter os dados do JSP, ainda mais se ele estivem bem organizados, através das classes URL e URLConnection.
Você faz o parse do html que vem no JSP para pegar o dado que precisa.[]´s
Vc conhece outra alternativa para um sistema web chamar um sistema DESKTOP que nao seja applet (em se tratando de Java)?
Deixe eu explicar a ideia um pouco melhor
Eu precisode uma pagina web
Quando eu apertarum botao nessa pagina, ese disparara uma ação, que ira fazer com que um sistema desktop realize alguns procedimentos.
O sistema desktop pode estar em ume stado que esteja esperando essa conexao(pensei em algo do tipo: clicar num botao no sistema desktop que o coloca em um estado “escutando requisições”, depois enviar a requisição pelo sistema web). Mas se é possivel fazer isto ai eu ja. não sei…
Qual é a solução mais simples?
Um exemplo bem simples do que quero fazer é:
uma pagina web com um campo texto e um botao
ao clicar no botao, o texto do textfield é enviado para a aplicação desktop e exibido la.
Mais simples é vc fazer um programa que instala no comp do cara e acessar a WEB com uma API adequada (não conheço em Java, só em Flex), sem JSP sem nada. Ex: Revelação Virtual.
[]s
o problema é que o acesso ao site deve ser atras de um browser…
Deve ser pq? Sistema legado? Se o cara já vai ter que instalar um programa, não vejo pq se prender ao browser. Talvez se vc detalhasse melhor o que pretende fazer, ficava mais fácil te ajudar.
[]s
Aliás, se vc reparar no link que mandei do Revelação virtual, verá a página de login do google sendo acessada de dentro do programa desktop. Feito isso, vc poderia manipular a página da forma que quisesse, inclusive lendo todo seu conteudo.
[]s
a pagina do revelação virtual não esta abrindo aqui
E quanto a acessar via browser, é uma das exigencias do projeto.
Arrumei o link: www.revelacaovirtual.com.br.
Se é requisito do projeto aí e não é negociável, então realmente não sei. O programa LogMeIn faz coisa parecida, de fazer acesso remoto via browser, mas mesmo ele pede para instalar um plugin, se não, não tem jeito.
Mas vamos ver, de repente alguém resolve seu problema por aki.
[]s
JSP1 = formulário
JSP2 = retorno
Desktop = Usa uma thread que fica consultando o JSP2 via URLConnection
Quando usar o formulário no JSP 1, grava os dados relevantes via atributos de contexto.
O JSP 2 vai apenas escrever os atributos de contexto relevantes em algum formato, seja xml ou json.
Na hora que vier algum dado pelo JSP 2, o desktop pega os dados, deserializa eles p/ serem usados e para a thread.
Na consulta do desktop, vc pode até enviar alguma variável indicando a limpesa dos atributos usados e também, ao invés de um JSP, vc pode usar um servlet.
Pronto. P/ que Applet?
davidbuzatto como seria utilizando um servlet?
Vou fazer um exemplo aqui p/ vc. Me dá uns 15 minutos, já posto os projetos.
Demorei um pouco mais que 15 minutos hehe
Rode o projeto DadosParaConsulta.
No index, tem um formulário. Ao submetê-lo, os dados dos campos vão ser armazenados no contexto, como atributos no Servlet GravaDadosServlet
O Servlet ObtemDadosServlet é responsável por obter os dados escritos no contexto e escrever um objeto json. Caso o objeto seja obtido, ele reseta os atributos do contexto.
Na aplicação desktop (DesktopConsultaServlet), tem um Runnable chamado MonitorDados. Esse Runnable, quando numa Thread, vai ficar tentando obter os dados do ObtemDadosServlet e vai ficar tentando criar um objeto do tipo Dados. Quando esse objeto é criado e populado (!= null) uma segunda thread que monitora o monitor, seta o valor dos campos do formulário swing e religa o botão do monitor, que pode ser iniciado novamente. Para o parse do JSON estou usando o Jettison.
Dê uma olhada e veja se funciona. Os dois projetos do NetBeans estão nos arquivos .rar em anexo nos próximos dois posts (não está indo de uma vez só os anexos).
[]´s
Anexo 1
Anexo 2
JSP1 = formulário
JSP2 = retorno
Desktop = Usa uma thread que fica consultando o JSP2 via URLConnectionQuando usar o formulário no JSP 1, grava os dados relevantes via atributos de contexto.
O JSP 2 vai apenas escrever os atributos de contexto relevantes em algum formato, seja xml ou json.
Na hora que vier algum dado pelo JSP 2, o desktop pega os dados, deserializa eles p/ serem usados e para a thread.
Na consulta do desktop, vc pode até enviar alguma variável indicando a limpesa dos atributos usados e também, ao invés de um JSP, vc pode usar um servlet.Pronto. P/ que Applet?
Pq Applet é a unica solucao Java que conheco para cenarios do tipo “Out Of Sandbox”.
Na solucao que vc bolou, vc nao chama uma aplicacao desktop atraves de um JSP (que foi a duvida do autor), e sim fez um tipo de “observer” desktop.
E qdo eu tiver que interagir com um scanner ou uma camera?
Uma solucao sem applet para o caso que eu citei acima seria bem interessante. Vamos debater mais sobre isso.
Pq Applet é a unica solucao Java que conheco para cenarios do tipo “Out Of Sandbox”.
Na solucao que vc bolou, vc nao chama uma aplicacao desktop atraves de um JSP (que foi a duvida do autor), e sim fez um tipo de “observer” desktop.
E qdo eu tiver que interagir com um scanner ou uma camera?Uma solucao sem applet para o caso que eu citei acima seria bem interessante. Vamos debater mais sobre isso.
Fábio, eu sei que não chamo o dektop a partir do Web, mas o ponto é: precisa fazer assim ou outra solução resolve o problema? Entende onde quero chegar? Applet pode ser uma solução, mas pq não resolver de outra forma? Se é algo tão simples como pegar valores em texto, pq não criar esse “tipo de observer”? Tah, fazer algo mais complexo, realmente pode ser mais complicado e sua solução pode ser a mais adequada, mas ainda acho que para o caso do nosso colega, uma solução da forma que postei resolveria o problema. Enfim, posta ai sua solução, ai o Trypa pode testar as duas e ver qual é a mais adequada p/ ele 
[]´s
Valeu pela ajuda! Era exatamente isto que eu procurava!
Pq Applet é a unica solucao Java que conheco para cenarios do tipo “Out Of Sandbox”.
Na solucao que vc bolou, vc nao chama uma aplicacao desktop atraves de um JSP (que foi a duvida do autor), e sim fez um tipo de “observer” desktop.
E qdo eu tiver que interagir com um scanner ou uma camera?Uma solucao sem applet para o caso que eu citei acima seria bem interessante. Vamos debater mais sobre isso.
Fábio, eu sei que não chamo o dektop a partir do Web, mas o ponto é: precisa fazer assim ou outra solução resolve o problema? Entende onde quero chegar? Applet pode ser uma solução, mas pq não resolver de outra forma? Se é algo tão simples como pegar valores em texto, pq não criar esse “tipo de observer”? Tah, fazer algo mais complexo, realmente pode ser mais complicado e sua solução pode ser a mais adequada, mas ainda acho que para o caso do nosso colega, uma solução da forma que postei resolveria o problema. Enfim, posta ai sua solução, ai o Trypa pode testar as duas e ver qual é a mais adequada p/ ele
[]´s
Eu perguntei justamente pq gostei da ideia de nunca mais utilizar applet na vida.
Pessoal, uma duvida simples. Caso eu quere colocar um botao que cancele o monitoramento na aplicação desktop(que mate a thread), o que devo fazer?