Erro no JWS

4 respostas
M

olá pessoal
meu programa chama relatórios feitos no ireport
quando eu rodo o programa localmente funciona os relatórios
quando eu rodo o programa poelo jws - java web start - os relatórios não funcionam
já assinei o meu jar e criei o arquivo .policy
como eu faço para chamar esse meu policy, ou seja, como eu sei que o java está usando esse policy ?
o relatorio (.jasper) esta dentro do meu jar
o que pode ser ?

  • erro ao chamar relatorio
    access denied (java.io.filepermission jar:http:\www.informaticajm.com.br\escola\escola.jar!\servico_diario.jasper read)

  • meu arquivo .policy
    
    keystore "file:/c:/jars/escola/escola.keystore", "jks";
    
    grant signedBy "key",  codeBase "<a href="http://www.informaticajm.com.br/escola/">http://www.informaticajm.com.br/escola/</a><em>" {
    
    permission java.security.AllPermission;
    
    permission java.io.FilePermission "<<ALL FILES>>", "read, write, delete, execute";
    
    permission java.net.SocketPermission "</em>", "accept, connect, listen, resolve";
    
    };
    
  • chamada do relatorio (.java)

URL teste = getClass().getResource("/reporte/Servico_Diario.jasper") ;
   String aki = teste.toString() ;
   System.out.println( aki );
   
   JasperPrint impressao = null;
   try {
    impressao = JasperFillManager.fillReport( aki , map1 , jrRS1 );
   } catch (JRException e1) {
    JOptionPane.showMessageDialog(null, "Erro 1 ao gerar relatório !\n" + e1.getMessage(), "Operador", JOptionPane.ERROR_MESSAGE);
   } catch (Exception e2) {
    JOptionPane.showMessageDialog(null, "Erro 2 ao gerar relatório !\n" + e2.getMessage(), "Operador", JOptionPane.ERROR_MESSAGE);
   }
   JasperViewer viewer = new JasperViewer(impressao, false);
   viewer.setVisible(true);

obrigado
marcos fabricio

4 Respostas

M

se eu coloco

InputStream is = this.getClass().getClassLoader().getResourceAsStream("relatorio/Zonas.jasper");  
			   
			//JOptionPane.showMessageDialog(null, is , "Operador", JOptionPane.ERROR_MESSAGE);
			System.out.println( is );
			
			JasperPrint impressao = null;
			try {
				impressao = JasperFillManager.fillReport( is , map1 , jrRS1 );
			} catch (JRException e1) {
				JOptionPane.showMessageDialog(null, "Erro 1 ao gerar relatório !\n"	+ e1.getMessage(), "Operador", JOptionPane.ERROR_MESSAGE);
				System.out.println(e1);
			} catch (Exception e2) {
				JOptionPane.showMessageDialog(null, "Erro 2 ao gerar relatório !\n" + e2.getMessage(), "Operador", JOptionPane.ERROR_MESSAGE);
				System.out.println(e2);
			}

da o seguinte erro

net.sf.jasperreports.engine.JRException: Error loading expression class

D

Com java web start, as permissões que você coloca no arquivo policy, na verdade, devem ficar no arquivo *.jnlp.

Por exemplo:

<security>
<all-permissions/>
</security>

M
olá pessoal

depois de muito tentar consegui rodar meu relatorio .jasper no java web start

meu jnlp está com <allpermision>

tive que mexer no arquivo java.policy

para funcionar adicionei a linha : permission java.security.AllPermission;

dae funcionou 100%

mas agora, quais os problemas que poderei ter em colocar permission java.security.AllPermission; ???

tentei colocar algo do tipo, permission java.io.FilePermission "<<ALL FILES>>", "read, write, delete, execute"; ou permission java.io.FilePermission .jasper", "read"; mas dae não funcionou

como restringir para que rode apenas meu relatório, pois vejo desta maneira que todas as trava do java web start (sandboxing) agora cairam fora fico no aguardo

obrigado

marcos fabricio
D

Veja se a ferramenta policytool.exe que vem com o JDK pode lhe dar uma luz!

Criado 23 de março de 2009
Ultima resposta 25 de mar. de 2009
Respostas 4
Participantes 2