Gostaria que me ajudassem com um problema que estou tendo com o Websphere.
Ele não consegue 'enxergar' a rede. E minha aplicação precisa mover arquivos pela rede.
Atualmente ela já move arquivos localmente, normalmente.
Fiz o teste com o Junit obtendo a pasta da rede pelo mesmo método que é executado na aplicação web e funcionou.
Este teste junit rodou na mesma máquina onde é o servidor do websphere; portanto cheguei à conclusão que não é nenhum problema de acesso à pasta ou na própria rede; mas sim algo relativo ao websphere. Tambem desativei o firewall na execução de ambos os testes.
O método é o descrito abaixo. a 1ª linha está em uma classe de Constantes e a 2ª está em uma classe utilitária.
booleanPASTA_ENVIO_ACESSO_BOOLEAN=FileUtilsz.temAcesso("\\\\180.xxx.xx.xxx");/** * testa acesso à pasta física (presença da unidade ou disponibilidade de ip) * @param pasta pastaStr * @return true se tiver acesso e false caso contrario */publicstaticbooleantemAcesso(Stringpasta){FiletesteDe=newFile(pasta);returntesteDe.exists();}
Eaí. Alguem sabe como habilitar ou configurar isso no websphere ?
Obrigado
keywords: websphere was rede websphere network websphere segurança websphere security
Isso não é coisa do Websphere e sim coisa do Windows. Se o WebSphere rodar como serviço sob o usuário “Local System Account” ele não consegue acessar recursos de rede.
Para provar isso, podemos criar um “Prompt de Comando” que roda exatamente sob o mesmo usuário, usando o comando “at”.
Você tem de fazer o seguinte: digamos que o relógio do Windows lhe diga que são 14:02. Então você, usando o comando “at”, agenda a execução do “cmd.exe” para 14:03 (ou um pouco mais tarde, dependendo da sua velocidade de digitação). Quando chegar a esse horário, ele irá lhe mostrar uma tela do DOS onde você vai ver que qualquer acesso a um recurso de rede vai ser recusado com “Access Denied”.
at 14:03 /interactive cmd.exe
Veja se é possível registrar o WebSphere com outro usuário, que tenha acesso à rede. O problema é que isso pode abrir um buraco na sua segurança; ou se você configurar com um usuário comum (daqueles cuja senha expira todo mês), você vai ter de ficar recadastrando o WebSphere e reiniciando o WebSphere todo santo mês, justamente por causa da senha.
romuloff
Thingol, realizei o teste que você descreveu e realmente deu problema.
Porem fiz o teste da alteração do usuário no meu websphere local e a cópia ainda não funcionou.
O serviço ficou assim:
Além disso ainda criei outros métodos para fazer a cópia utilizando ‘Runtime.exec’. Estes tambem nao funcionaram no websphere e funcionaram através do teste unitário rodado na mesma máquina.
Algo que me deixou intrigado é que minha classe ‘ExecuterHelper’ de Runtime; retorna todo resultado de comandos executados por ela.
E quando executou o comando da cópia por ela dentro do websphere não me retornou nada (String vazia).
Sendo que se eu executar o mesmo comando igualzinho por fora do websphere (e utilizando o ‘Local System Account’); me retorna a mensagem:
“O sistema não pode encontrar a unidade especificada”.
Desta prova desconfio que o problema seja algo a mais além do serviço como ‘Local System Account’.
PS: T: é o mapeamento de rede e o mkdir T: foi testado sendo que o mapeamento já exista; ele consegue criar a pasta relativa do mapeamento (por ex: \180.666.64.41\C$\Testes\abcd. Caso o mapeamento E a pasta já existam tambem não há problema (pois como é Runtime mesmo que haja uma mensagem de erro; esta é ignorada e nenhuma exceção é lançada).
Sendo assim; a cópia esparada dentro do websphere rodando com runtime; é relativa à esta aqui (ou esperada a mensagem relatada acima):
Neste ultimo screen é o cmd rodado da forma normal.
romuloff
Pessoal ; realmente a solução do thingol estava correta.
Porem quando rodando o websphere em servidores com domínio; é necessária a criação de um super-usuário para o serviço do websphere rodar.
Não basta apenas um usuário admin. É necessario esse usuario-modafocar
A criação é pelo administrador do dominio; rodar o Group Policy Management; e criar um usuario com Delegation “Link GPOs”.