Estou acessando um hardware no cliente através de um Applet Java, e até agora tudo bem, salvo que, preciso de alguma forma ligar estes dados a um túnel SSL entre o browser e o servidor WEB, e por isto um socket entre o applet e o servidor web parece não ser uma boa idéia.
Alguém tem alguma sugestão de como contornar este problema ?
Esta próxima pergunta é especulativa: Seria viável gambiarras para estabelecer comunicação entre JavaScript com o Applet, seja através de arquivos ou outra forma de trocar informações entre eles no cliente ?
Web é hypertexto, ou seja, texto puro prá lá e pra cá… Se você tem que fazer alguma coisa com os dados que pegou do dispositivo via applet, sugiro um servlet.
Não precisa de gambiarra para comunicação entre applet e javascript. Utilize o LiveConnect.
mvsouza, não conheço o HttpClient profundamente, mas acredito que não resolva.
O problema não é abrir uma conexão SSL, mas interceptar ou se envolver numa conexão já estabelecida entre o Browser e o Servidor. Ainda não olhei direito o JSObject, o GUJ estava fora do ar, mas como ele resolveria o meu problema de integrar JScript com o Applet no cliente ?
bobmoe, não entendi sua sugestão sobre o Servlet ? Como um servlet irá me ajudar no cliente ?
Já viu commons httpclient? Tem uma seção sobre uso com SSL.
Não é bem uma gambiarra, mas existe: Dentro de JAVA_HOME\jre\lib tem um plugin.jar. Coloca ele no classpath do seu applet e você vai ver que existirá agora uma classe chamada JSObject (no eclipse CTRL + SHIFT + T e escreve JSObject). Ele é uma referência para um javascript no browser. Dá uma googlada que tem exemplo de código.
Cara, mas como mandar os dados pro Servlet que vai estar num servidor com SSL? Não tem que estabelecer conexão de qualquer jeito? Acho que o commons httpClient é uma solução pra comunicar. Me diz se eu falando besteira.
Está lá na distribuição 5 do Java. Já vem por padrão. Está em JAVA_HOME\jre\lib\plugin.jar. Esta é a lib do LiveConnect para java -> javascript.
[quote=lucianomx]mvsouza, não conheço o HttpClient profundamente, mas acredito que não resolva.
[/quote]
Resolver, resolve. Não sei se seria a melhor maneira. Até onde sei, o applet é uma aplicação cliente, apesar de executar em um browser. Creio que você só consegue estabelecer conexão com o servidor, abrindo uma diretamente do applet. Como lidar com sockets e URLConnection para estabelecer conexões http não faz mais sentido, recomendo o uso do commons httpclient, que vai abstrair um monte de coisa do protocolo http e https.
Pois é… Aí o buraco é mais embaixo. Na teoria é impossível interceptar uma conexão SSL, senão ela deixa de ser segura…
Só esclarecendo. JSObject e LiveConnect são a mesma coisa. JSObject é uma classe que faz parte desta API. Para começar, veja em: http://en.wikipedia.org/wiki/LiveConnect Dá pra fazer os dois caminhos (Java<->Javascript).