[RESOLVIDO] Applet assinada + acesso aos métodos

8 respostas
Luiz_Ot_io_S_F_Campo

Para acessar um método público de uma applet não assinada faço o seguinte:

<applet name="MinhaApplet" code="MinhaClassePrincipal.class" height=150 width=170></applet>

function acessaApplet(){
     document.MinhaApplet.meuMetodoPublico()
}

Já respondendo algumas dúvidas: meu método realmente é público e está dentro de minha classe principal, e consigo perfeitamente acessar um método de uma applet desde que esta não esteja assinada.

Consegui, depois de muito custo, assinar uma applet. Mas agora estou tentando acessar um método público dela através de um javascript e não está dando.

Alguém saberia como posso resolver esse problema?

8 Respostas

T

Verifique se o seu applet esta na mesma pasta dos arquivos.
Tente colocar o codebase com o caminho do diretorio que esta o applet

EX:

<applet codebase="\..\applet" name="MinhaApplet" code="MinhaClassePrincipal.class" height=150 width=170></applet>

Luiz_Ot_io_S_F_Campo

Antes de tudo, obrigado pela resposta rápida, tioola.

Tanto a applet assinada quanto a não assinada estão na mesma pasta e sendo chamadas da mesma forma. Claro, cada uma respeitando seus respectivos nomes de classe, método e da própria applet.

Li que pode ter a ver com java.policy. Alguma sugestão??

E

Qual é o erro que aparece no Java Console? (Não é o jconsole, e sim o Java Console que está disponível no browser - habilite-o se não estiver disponível. )

T

Tente colocar System.setSecurityManager(null); no final do init() do seu applet

Luiz_Ot_io_S_F_Campo

Tentei, tioola, mas ainda não deu certo.

Minha applet é para teste mesmo. É bem simples:

package teste;

import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import java.awt.*;
import java.security.*;
import java.net.*;
import netscape.javascript.*;

public class TesteApplet extends JApplet {

    /////////////
    // METODOS //
    /////////////

    /** inicializa a applet. */
    public void init() {
        System.setSecurityManager(null); // ainda assim nao consegui acessar
    }

    public void mensagem() {
        JOptionPane.showMessageDialog(this, "CONSEGUI ACESSAR METODO PUBLICO");
    }
}

E no HTML:

<html>
    <head>
        <title>Teste para acessar Applet </title>
        <meta http-equiv="Pragma" content="no-cache">
        <meta http-equiv="expires" content="0">
    </head>
    <body>
        <center>
        <applet name="AcessoApplet" code="teste.TesteApplet" archive="testesigned.jar" width="500" height="80" MAYSCRIPT>
            Your browser is completely ignoring the &lt;OBJECT&gt; tag!
        </applet>

        <script type="text/javascript">
            document.write("Escrevi uma funcao em javascript")
            document.AcessoApplet.mensagem()
        </script>
        </center>
    </body>
</html>

Para testar a applet não assinada apenas substituo o archive=“testesigned.jar” por archive=“teste.jar”.

Resultado: com a applet não assinada consigo acessar meu método público, o que não acontece com a applet assinada.

Alguém tem mais alguma ideia???

Ahh… e obrigado pelas respostas dadas até então.

T

Você tem certeza que o applet esta sendo assinado?
O que você esta fazendo para assinalo

T

luizcamposmc:
Tentei, tioola, mas ainda não deu certo.

Minha applet é para teste mesmo. É bem simples:

package teste;

import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import java.awt.*;
import java.security.*;
import java.net.*;
import netscape.javascript.*;

public class TesteApplet extends JApplet {

    /////////////
    // METODOS //
    /////////////

    /** inicializa a applet. */
    public void init() {
        System.setSecurityManager(null); // ainda assim nao consegui acessar
    }

    public void mensagem() {
        JOptionPane.showMessageDialog(this, "CONSEGUI ACESSAR METODO PUBLICO");
    }
}

E no HTML:

<html>
    <head>
        <title>Teste para acessar Applet </title>
        <meta http-equiv="Pragma" content="no-cache">
        <meta http-equiv="expires" content="0">
    </head>
    <body>
        <center>
        <applet name="AcessoApplet" code="teste.TesteApplet" archive="testesigned.jar" width="500" height="80" MAYSCRIPT>
            Your browser is completely ignoring the &lt;OBJECT&gt; tag!
        </applet>

        <script type="text/javascript">
            document.write("Escrevi uma funcao em javascript")
            document.AcessoApplet.mensagem()
        </script>
        </center>
    </body>
</html>

Para testar a applet não assinada apenas substituo o archive=“testesigned.jar” por archive=“teste.jar”.

Resultado: com a applet não assinada consigo acessar meu método público, o que não acontece com a applet assinada.

Alguém tem mais alguma ideia???

Ahh… e obrigado pelas respostas dadas até então.

Verique se o code="" esta com a classe main(PRINCIPAL) do jar SE o “teste” que você colocou é o pacote correto e adicione o .class

ficando assim

<applet name="AcessoApplet" code="teste.TesteApplet.class" archive="testesigned.jar" width="500" height="80" MAYSCRIPT>
Luiz_Ot_io_S_F_Campo

Problema resolvido galera.

Referências:


http://www.inf.puc-rio.br/~roberto/java/jdk1.2/docs/guide/security/doprivileged.html

Criado 21 de março de 2012
Ultima resposta 21 de mar. de 2012
Respostas 8
Participantes 3