XStream em Applet

5 respostas
M

oi, estou recebendo uma msg de erro de um applet, qdo uso xstrem, eh problema de acesso, mas nao consegui solucionar:

java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.misc)

at java.security.AccessControlContext.checkPermission(Unknown Source)

at java.security.AccessController.checkPermission(Unknown Source)

at java.lang.SecurityManager.checkPermission(Unknown Source)

at java.lang.SecurityManager.checkPackageAccess(Unknown Source)

at sun.applet.AppletSecurity.checkPackageAccess(Unknown Source)

at sun.applet.AppletClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClassInternal(Unknown Source)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Unknown Source)

at com.thoughtworks.xstream.core.JVM.loadClass(Unknown Source)

at com.thoughtworks.xstream.core.JVM.bestReflectionProvider(Unknown Source)

at com.thoughtworks.xstream.XStream.<init>(Unknown Source)

at Applet1.paint(Applet1.java:14)

at sun.awt.RepaintArea.paintComponent(Unknown Source)

at sun.awt.RepaintArea.paint(Unknown Source)

at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)

at java.awt.Component.dispatchEventImpl(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.run(Unknown Source)

alguem ja teve algum problema parecido?

[]´s

5 Respostas

G

Já tive esse problema usando o Tomcat. Tive que alterar o arquivo catalina.policy e adicionar essa permissão:

java.lang.RuntimePermission accessClassInPackage.sun.misc
I

Isso é erro de segurança do Applet, ou seja, alguma operação fora do “sandbox”. Tu precisa pedir permissão para o usuário para executar esta operação via SerurityManager. Sugiro que dê uma olhada no site da Sun na parte de applets, mas especificamente o sandbox. T+

M

seria fazer a assinatura do applet?

I

Não necessariamente assinar, significa que quando tu for usar algum recurso de fora do Sandbox o applet irá perguntar ao usuário se ele permite a operação. Logicamente que ele terá de concordar. Se tu usa eMule, procure por livros de segurança em Java, eles sempre abordam estes tópicos de forma mais aprofundada. T+

M

bom, a solução encontrada para meu problema foi usar DOM
o q eu queria era passar um xml para um applet, e este fizesse um parse, para essa aplicação o xml sempre seria pequeno, então passei como parametro uma String, dessa forma:

public void insere(String xml) throws Exception {
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
    InputSource inStream = new InputSource(); 
    inStream.setCharacterStream(new StringReader(xml)); 
    Document doc = db.parse(inStream);
    .
    .
    .
}

vlw

Criado 11 de dezembro de 2006
Ultima resposta 12 de dez. de 2006
Respostas 5
Participantes 3