FileInputStream - aceso negado (permissão de usuário)

6 respostas
FernandoCartaxo

Meu problema é o seguinte:
Tem uma rotina no sistema que ai buscar uma planilha excel para importar os dados,
utilizo o POIFSFileSystem que recebe um FileInputStream como contrutor e em seguida tenho acesso a planilha.
O que acontece que o local onde vai ser procurado a planilha na rede só alguns usuários tem acesso, e no caso da máquina que roda o seriço do JBoss, o usuário que sobe o serviço tem acesso (o usuário logado no window), porém quando ou criar o FileInputStream diz que estou com acesso negado.
Tenho certeza que o usuário logado tem acesso as pastas

o que pode ser?

6 Respostas

T

Certeza é uma coisa que não existe. Pode ser, por exemplo, que:

  • Outra instância de seu programa (ou outro programa) tenha largado o arquivo aberto - nesse caso você vai tentar ler, e vai receber esse erro de “acesso negado”
  • Você tenha acesso à pasta em si, mas não às pastas intermediárias;
  • Você tenha acesso à pasta mas não ao arquivo;
  • E outras coisas mais.

Uma forma de você realmente comprovar que tem acesso é a seguinte:

  • Logue-se como o tal usuário;
  • Tente copiar o arquivo para algum lugar, usando o comando “copy” do DOS - não o Windows Explorer, que é muito mentiroso.
    Hoje mesmo eu vi uma coisa muito doida: em uma mesma janela do Windows Explorer, apareceram dois diretórios “Arquivos de Programas”.
    Quando fui listar o diretório com o “dir” do DOS, apareceu a verdade: havia um diretório “Program Files” (cujo sinônimo para o Windows XP é “Arquivos de Programas”) e outro diretório “Arquivos de Programas”.
FernandoCartaxo

isso eu testei, e tem acesso

agora uma dúvida, o usuário que o jboss tenta se conectar é o usuário que está logado quando subo o serviço?

T

Boa pergunta. Como você inicia o JBoss? Através da batch, ou então você o instalou como um serviço do Windows?

Se o JBoss tiver sido iniciado pela linha de comando por uma batch, então o usuário é quem estava logado quando você iniciou a batch.

Se for um serviço, você tem de ver a configuração do serviço.

FernandoCartaxo

Tá como serviço, e o usuário que tem pra subir o serviço é o usuário local (LocalSystem)

T

Localsystem, como o nome diz, não tem acesso a nenhum local da rede, só ao computador local. Você precisa cadastrar o serviço do JBoss como um usuário da rede que tenha acesso aos locais da rede desejados.

FernandoCartaxo

Ele tem acesso a uma pasta pública que todos tem acesso.
A solução de contorno que eu tive foi essa, de colocar a planilha nessa pasta pública

Criado 21 de julho de 2008
Ultima resposta 23 de jul. de 2008
Respostas 6
Participantes 2