Lendo e criando arquivos a partir de um aplicacao no Web Start

Pessoal,

Criei uma aplicação Swing e executo ela pelo Web Start. Esta aplicação cria um arquivo XML no descktop da máquina cliente. Este arquivo deveria ser processado pela aplicação e criado um novo arquivo PDF.

O arquivo XML é gerado mas a geração do PDF não procede. Alguem sabe o que pode estar acontecendo? Como faço para ler o arquivo xml e processa ele apartir da aplicação executando no Web Start? Estou usando o seguinte:

  String outputFileName = "relatorioSilRi.fo";

  File fileOut = new File(outputFileName);
  FileOutputStream file = new FileOutputStream(fileOut);
  BufferedOutputStream fileOutput = new BufferedOutputStream(file);
  fileOutput.write(textoXML.getBytes());
  fileOutput.flush();
  fileOutput.close();

  File fofile = new File(fileOut.getAbsolutePath());
  String pdfNomeArquivo = fofile.getAbsolutePath();
  File pdfFile = new File(pdfNomeArquivo.replaceAll(".fo",".pdf"));
  convertFO2PDF(fofile,pdfFile);

Você tem que assinar a sua aplicação e o usuário tem que clicar no famigerado “yes” para poder acessar o sistema de arquivos.

Compre a Java Magazine deste mês, tem um tutorial ótimo sobre JWS que, entre outras coisas, aborda este assunto.

A minha aplicação já esta assinada e já executa. O problema é que não consigo ler o arquivo gerado pela aplicação. A aplicação quando executada no cliente gera um arquivo xml o qual deve ser lido para gerar um pdf. A aplicacao cria o .xml no descktop, mas não esta lendo ele para gerar o pdf. Portanto o pdf nem é gerado.

Quando executo a aplicação pelo JBuilder sem o Web Start funciona. O xml é gerado e o pdf também. Mas quando coloco no Web Start so é gerado o xml.

E ai?

Entendi o problema.

Ao invés de criar o arquivo no desktop, pode seguir a sugestão no link que eu te passei, sobre o System.getProperty( “user.home” )

Mudei o java.policy do Web Start para

grant {
permission java.security.AllPermission;
};

neste caso o arquivo .pdf é criado só que vazio. Portanto ele ainda não esta lendo o primeiro arquivo criado (.xml) para gerar o segundo (.pds). Apesar de agora estar criando o arquivo.

Estranho já que ele cria o primeiro arquivo sem necessitar do allpermission. Porque isso acontece?

Antes de se preocupar com o SecurityManager, você tem certeza que está encontrando o arquivo xml que criou?

E outra, você precisa realmente criar o arquivo xml fisicamente no cliente? Não pode fazer isso só em memória?

Tenho certeza que ele esta sendo criado na máquina cliente. Mas não tenho certeza se esta sendo lido.

Para ler simplesmente faço.

File fo = new File(“fo.xml”);
Source src = new StreamSource(fo);

O problema esta na seguinte linha de código:

driver.setRenderer(Driver.RENDER_PDF);

Ele não seta o drive para PDF e não msotra nenhuma menssagem de erro quando executado via Web Start.

Alguem tem alguma solução?