Programa Desktop com acesso pela web

22 respostas
bland

Olá pessoal!

Minha dúvida é bastante simples. Quero desenvolver uma aplicação desktop, mas quero, também, que eu possa acessar as informações via web.
Como fazer isso da melhor forma possível? Tem alguma forma especial de fazer isso? Li algo sobre ter que implementar EJBs, mas não compreendi direito.
Se alguém puder me ajudar, eu agradeço.

Fabiano Almeida.

22 Respostas

kina

Vc pode usar EJB. Web Service (Se for usar em outras aplicações não java).
Não sei se tem outro jeito.
Entre neste site aqui para saber mais
http://www.j2eebrasil.com.br/jsp/tutoriais/tutorial.jsp?idTutorial=010_001

keller

De uma procurada sobre:
Java Web Start

Acho que é isso que você está procurando…
até… :thumbup:

keller

:arrow: http://www.guj.com.br/java.artigo.160.1.guj

:smiley:

bland

Eu dei uma lida rápida, nada aprofundado, e percebi que o exemplo utiliza um session stateless…seria a mesma coisa para statefull?

Luca

Olá

Sei que é possível fazer isto (argh…) mas lhe garanto que você não precisa usar EJBs neste tipo de aplicação. Faça sua aplicação desktop apenas como se fosse sua camada de apresentação. Acesse o servidor com URLConnection (+jakarta-comons-HttpClient).

Nas camadas do servidor você pode ou não usar EJBs. Não usar é mais fácil e provavelmente com muito melhor performance.

Mas pode ser que seja um daqueles raros casos em que REALMENTE é interessante usá-los. Então precisa compreendê-los MUITO bem e mesmo assim pensar 352 vezes antes de decidir usa-los. E pensar 6.487.924.356 vezes antes de usar sessions statefull que são terríveis. Não use a menos que seu cliente realmente exija uma aplicação distribuída com esta característica.

Ah, web services? São úteis, mas na maioria das vezes complicam demais as mensagens que na sua essência são simples. Use se souber exatamente o que está fazendo e nunca pelo modismo.

[]s
Luca

Thiago_Senna

Faça das palavras do Luca as minhas!

Que tal ao invés de WebServices ou EJB vc não usa Servlet mesmo ou RMI?

A aplicação Swing pode enviar uma requisição http para sua servlet, que processa e manda um resposta para sua aplicação cliente!

Ou, objetos distribuídos usando RMI, que é mais interessante!

Java Web Start pode ser a solução do seu problema, dê uma olhada com cuidado nesta opção que foi citado pelo gui!

Abraços!
Thiago

Thiago_Senna

Há… esqueci!

Vc pode usar Sockets também! :lol: :lol: :lol:

bland

Olá pessoal!

Queria agradecer a ajuda de todos vocês e explicar melhor o meu problema. Não sei se vocês entenderam, porém não custa nada explicar melhor. Lá vai.

Irei criar uma aplicação para consultar todas os meus gastos, minhas notas da faculdade, meus compromissos, etc. Porém, eu queria poder estar acessando essas informações a partir da internet, seja ela da faculdade, da casa de um amigo, etc. Ou seja, minha máquina, além de possuir minha aplicação desktop teria de estar servindo toda essa informação e sempre atualizada.

Li algo sobre Java Web Start, mas teria de ter essa aplicação nas máquinas que eu pretendesse acessar as minhas informações. E li sobre EJB, que foi o que me pareceu mais viável, mesmo não compreendendo direito o funcionamento do mesmo (para a solução do meu problema).

Compreendido melhor o problema, espero que me ajudem de uma melhor forma.

Abraços!

Thiago_Senna

Então Bland!

Agora q vc explicou o problema, temos certeza que vc não precisa de EJB!

Todas as outras soluções que demos até agora, inclusive java web start são mais interessantes que EJB!
Quanto ao EJB, dê uma lida nisso:
http://www.guj.com.br/posts/list/22965.java

Dê uma olhada em RMI, Socket e Http! Vc pode criar sua aplicação usando um destes trÊs! Tem outras opções… é só ler os posts acima!

Pessoalmente, eu escolheria RMI! Afinal, EJB usa RMI (ou RMI-IIOP, que é a mema merda).

O tempo que você levará para aprender EJB é muito grande, enquanto qualquer uma dessas outras opções não! Um Servidor para rodar EJB não é leve! Testar sua aplicação é uma verdadeira aventura quando se usa EJB!

No pior dos casos, use Excel! Ele também resolveria o seu problema! :wink:

Thiago

cv1

Pq nao criar um front-end web com uns bons e velhos servlets, com funcionalidade reduzida, suficiente pra fazer o que precisar quando vc estiver longe de casa, onde vc usaria o front-end desktop, ao inves de se preocupar em manter objetos distribuidos e o escambau? :slight_smile:

Luca

Olá

CV, isto foi exatamente o que eu falei isto na mensagem anterior, mas os caras insistem em EJBs, web services, RMI, sockets. Eu insisto aqui há anos para usar http com porta 80 porque passa em todos os FWs. Imagine a cara do administrador da rede da faculdade quando ele for solicitar abrir uma porta para RMI ou socket com protocolo proprietário.

[]s
Luca

chaos

E se ele fizer só web e usar o poderoso http://localhost ???

Pra que 2 aplicações se uma resolve?

Luca

Olá

Porque um dia ele pode querer acessar dados fora do seu localhost. Separando a aplicação em uma camada de apresentação e outras camadas no servidor, ele pode rodar tudo localmente ou rodar a camada de apresentação a partir de uma cyber cafe e o resto em um servidor qualquer de cara para web.

Se ele quiser fazer uma única aplicação isolada daquele jeito que a gente fazia no milênio passado acho melhor fazer logo em Cobol, VB ou Clipper.

[]s
Luca

Rafael_Nunes

Luca:

Porque um dia ele pode querer acessar dados fora do seu localhost. Separando a aplicação em uma camada de apresentação e outras camadas no servidor, ele pode rodar tudo localmente ou rodar a camada de apresentação a partir de uma cyber cafe e o resto em um servidor qualquer de cara para web.

Acho que foi isso que ele quis dizer. Por que ao invés de fazer uma stand-alone que atenda também web, se ele pode fazer uma só web. Da própria máquina ele acessaria pelo localhost, de fora ele acessaria pela web.

Thiago_Senna

Luca, me lembro que uma vez vc respondeu algo assim em um tópico que eu abri, e à partir de então eu aprendi que Http também poderia me ajudar a conectar uma aplicação stand alone com um servidor usando servlets por exemplo!

Nunca fiz isso na prática (ainda), mas por exemplo, como vc faz para que a aplicação seja flexível para alterações caso mude o host? Se hoje o host do servidor é por exemplo:

http://meuservidor:8080/MinhaApp, e derrepete isso muda p/
http://meuservidor2:8085/MinhaNovaApp!

Como vc consegue garantir que um usuário leigo (burro) consiga tranquilamente atualizar esta informação? Existe alguma maneira automática de se fazer isso, ou tem que editar um textbox???

Abraços!
Thiago

Luca

Thiago Senna:
… por exemplo, como vc faz para que a aplicação seja flexível para alterações caso mude o host? Se hoje o host do servidor é por exemplo:

http://meuservidor:8080/MinhaApp, e derrepete isso muda p/
http://meuservidor2:8085/MinhaNovaApp!

Como vc consegue garantir que um usuário leigo (burro) consiga tranquilamente atualizar esta informação? Existe alguma maneira automática de se fazer isso, ou tem que editar um textbox???

  1. Na aplicação que roda em servidor separado do cliente sempre use porta 80 para não ter que brigar com o depto de administração de redes.

  2. Sempre use o mesmo nome (mesmo contexto) para a aplicação que roda com servidor local e a outra que roda em servidor separado. Use nomes (contextos) diferentes para Debug, Demo, Casos Expeciais, etc.

  3. Faça uma página html simples com todos os endereços que precisa como por exemplo os seguintes:
    Tudo local
    http://localhost:8080/sua_aplic
    http://localhost:8080/sua_aplicDebug
    http://localhost:8080/sua_aplicDemo
    http://localhost:8080/sua_aplicCasoExpecial

Servidor remoto
http://seu_servidor_remoto/sua_aplic
http://seu_servidor_remoto/sua_aplicDebug
http://seu_servidor_remoto/sua_aplicDemo
http://seu_servidor_remoto/sua_aplicCasoExpecial

Caso mude o IP do seu servidor, edite a página html

  1. Coloque esta página html em seus favoritos

[]s
Luca

Thiago_Senna

Luca!

Mas afinal, o que eu faço com essa página html com os hosts? Ele serve para que o usuário do cliente possa ler ele e atualizar a aplicação ou a própria aplicação consegue capturar estes links??

Achei interessante suas dicas, principalmente as duas primeiras (já to colocando nos favoritos daqui do guj). Mas infelizmente naum entendi o arquivo html. Como que eu uso esse arquivo html?

(Talvez essa pergunta seja muito idiota, mas vamos lá!)

Abraços!
Thiago Senna

Luca

Olá²

(Olá² para compensar o esquecimento anterior)

Dei um exemplo para o caso de aplicações web com cara de browser ou com cara de applet. Se usar JWS você pode colocar os endereços como parâmetro na linha de comando que chama a aplicação e criar vários arquivos .bat. Há meios também de colocar um menu no arquivo .bat. E há muitas outras opções de fazer isto.

O problema que você está levantando não existe. Se for uma aplicação para rodar na máquina de um usuário com limitada capacidade de raciocínio a gente arranja um jeito de fazer tudo. Na minha máquina sempre tinha um monte de demos que precisava rodar de várias formas diferentes (com ou sem periféricos, com autorizador ou com emulador, com ou sem debug, etc.). Já tive aqui aplicações que rodavam em 4 hosts diferentes: localhost, host desenvolvimento, host homologação, host produção. E com várias opções diferentes de execução.

[]s
Luca

Thiago_Senna

Há tá!

Agora ficou mais claro! Então existem n maneiras de se criar uma solução para este problema. Eu imaginei o cara editando alguma configuração, seja no próprio programa, ou um properties!

Mas a realidade é que isso é inevitável né. Concordo com vc, é um problema q não existe!

Desculpe ai pelo incomodo e obrigado pela paciência!
Agora acho que consigo dormir mais tranquilo!

Abraços!
Thiago

chaos

Opa, um pouco atrasado, mas…

Rafael Nunes:
Luca:

Porque um dia ele pode querer acessar dados fora do seu localhost. Separando a aplicação em uma camada de apresentação e outras camadas no servidor, ele pode rodar tudo localmente ou rodar a camada de apresentação a partir de uma cyber cafe e o resto em um servidor qualquer de cara para web.

Acho que foi isso que ele quis dizer. Por que ao invés de fazer uma stand-alone que atenda também web, se ele pode fazer uma só web. Da própria máquina ele acessaria pelo localhost, de fora ele acessaria pela web.

Era isso mesmo Rafael…

Luca, o pior que dessa vez eu estava com o mesmo pensamento seu de fazer 1 aplicação Web, se o cara tá na máquina que é servidor de aplicação, localhost nele! Se está em outra máquina http://www.cadastratudomesmoestandolonge.com.br nele!

Sacou?

Luca

Olá

Manta, como não haveria de sacar se só aqui no GUJ já mandei pelo menos umas 500 mensagens preconizando esta arquitetura e na minha primeira mensagem neste tópico falei exatamente isto.

O que tenho falado SEMPRE é que fazer uma aplicação web não é fazer uma aplicação com cara de browser. A cara pode ser qualquer. O que preconizo sempre e dei a dica no primeiro post, é fazer a arquitetura usando http que é o protocolo web.

[]s
Luca

D

Ola alguem saberia me dizer se eu consigo estar trabalhando numa estaçao e qualquer pessoa possa visualizar meu desktop trabalhando via web em qualquer lugar?

Criado 17 de maio de 2005
Ultima resposta 20 de set. de 2007
Respostas 22
Participantes 9