Obter "retorno" de um Applet e injetar na JSP

3 respostas
striker07

Olá pessoal, bom dia.

Seguinte, tenho um hardware, no qual preciso obter um valor dele para o formulário. O acesso a ele, que acredito ser o mais complicado, já consegui resolver utilizando JNA em um Applet. O lance agora é que preciso obter o valor que o Applet recolheu do hardware para injetar no formulário (possivelmente num input oculto, para ser gravado no banco de dados depois). Fiz alguns testes, e para não atrasar o projeto aqui, acabei por passar os dados do banco como parâmetro para o Applet e ele mesmo salvar. Mas isso, sem a menor dúvida, é uma falha grave de segurança, e de forma alguma pode ir para o produto final. Então, estou em busca de uma forma de obter o valor da Applet. Pesquisei na Internet, mas quase todas as informações datam de 2001 ou 2002 e utilizam JSObject, do pacote da netscape e Java 1.1. Alguém tem alguma ideia de como posso fazer isso?

3 Respostas

J

Amigo,
quando precisei fazer algo parecido usei o JSObject (esse mesmo do pacote netscape).
Inclusive tive que compilar para 1.1 pois precisava suportar Microsoft VM (urgh!) pois na época a maior parte das maquinas vinham com sistema Windows XP que tinha a Microsoft VM instalada.

Enfim… funcionar… funciona, mas se é o melhor jeito…

to curioso também para saber se tem outro jeito!

striker07

Só pra complementar o que eu tentei fazer... imaginei alguma coisa do tipo:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>..:: Testando ::..</title>
        <script type="text/javascript" src="js/jquery-1.7.2.js"></script>
        <script>
            $('#clique').click(function() {
                alert($('#meuApplet').getResultado());
            });
        </script>
    </head>
    <body>
        <h1>Teste Applet Bio</h1>
        <object type="application/x-java-applet" height="0" width="0" id="meuApplet">
            <param name="code" value="AppletTeste" />
            <param name="archive" value="applet/AppletTeste.jar" />
        </object>
        <a id="clique" href="#">Clique aqui para testar</a>
    </body>
</html>

O código do Applet que estou testando é o mais simples possível:

public class AppletTeste extends Applet {
   public String getResultado() {       
       return "Um texto qualquer";
      }
}

Mas como era de se esperar, ele não encontra a função. O console Javascript mostra:
[color=red] Failed to load resource: the server responded with a status of 404 (Not Found) [/color]

striker07

Bom, o primeiro problema foi resolvido. Consegui chamar o método público do applet, adicionando um índice a sua referência no script jQuery. Assim, minha JSP ficou assim:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>..:: Testando ::..</title>
        <script type="text/javascript" src="js/jquery-1.7.2.js"></script>
        <script>
            $(document).ready(function() {
                $('#clique').click(function() {
                    alert($('#meuApplet')[0].getResultado());                    
                });
            });
        </script>
    </head>
    <body>
        <h1>Teste Applet Bio</h1>
        <object type="application/x-java-applet" height="0" width="0" id="meuApplet">
            <param name="code" value="AppletTeste" />
            <param name="archive" value="applet/AppletTeste.jar" />
        </object>
        <a id="clique" href="#">Clique aqui para testar</a>
        <p id="receptor"></p>
    </body>
</html>

Porém, como nem tudo são flores, comecei agora a ter problemas de permissões. O meu applet baixa algumas DLLs em uma pasta temporária e as adiciona ao path do JNA (para fazer acesso ao HW). Mesmo assinado, estou tendo o problema:

[color=red]uncaught exception: java.security.AccessControlException: access denied (java.util.PropertyPermission user.home read)[/color]

Alguma sugestão do que pode ser feito nesse aspecto?

Criado 3 de julho de 2012
Ultima resposta 4 de jul. de 2012
Respostas 3
Participantes 2