Interagindo com o IIS e com componentes COM+ em Java

Olá Pessoal!

Tudo bem?

Estou com uma necessidade que é a seguinte:

Existe uma aplicação ASP que roda acessando um SQL Server e utiliza uns componentes COM+. Esta aplicação precisa ser atualizada diariamente, num processo BATCH, que fará o seguinte:

  1. Atualizará o SQL Server - isso envolve um restore total do banco de dados
  2. Criará novos usuários de base neste SQL Server (pois os usuários da base importada nao são os mesmos da aplicação original).
  3. Parará o IIS para atualizar a aplicação pelos novos arquivos
  4. Parará o componente COM+ para atualizar os componentes.
  5. Atualizará alguns outros componentes COM+ de geoprocessamento.
  6. Reiniciará o IIS.
  7. Testará se tudo está OK. :?

O problema é que eu preciso fazer isso em Java. Minhas dúvidas estão relacionadas com os pontos abaixo:

  • Conseguirei acessar o SQL Server para fazer os restores da base a partir do Java?
  • Conseguirei controlar a parada e o início do IIS sem ser via Runtime.exec() (pois eu precisarei ter total controle sobre se ele está no ar, pois a aplicação nao poderá sair do ar).
  • Conseguirei via Java parar o serviço COM+ e reiniciá-lo?
  • Como testar se a aplicação está OK?
    :shock:
    Estava pensando em dar uma pesquisada se existe alguma coisa mais controlável para eu conseguir usar, para saber se minha ações estão surtindo o efeito desejado ou se está ocorrendo alguma exceção. JNI???

Alguém já precisou fazer algo parecido? :roll:

Abraços
:smiley:
ceduardo.roque

Crie um script VBScript usando WMI, porque essa é a maneira recomendada pela Microsoft para fazer tal controle, e chame-o pelo Java. Se você não gosta de VBScript, pode usar JavaScript (da Microsoft, não o Rhino), mas de qualquer maneira é melhor fazer isso que quebrar a cabeça com JNI ou talvez com o Jacob.

Obrigado pela resposta thingol.

Mas eu nao sei se isso fará com que eu tenha o controle que eu espero da aplicação, pois eu precisarei tratar todos os pontos de falha (desde a carga do banco até a subida e parada dos componentes COM+ e do IIS). De qualquer forma, vou dar uma olhada no WMI que você sugeriu.

Você já precisou fazer algo neste sentido?

Como voce lidaria com as exceções plausíveis como problemas de rede, permissão para execução de comandos como admin e falha na tentativa de interagir com os serviços do Windows (COM+ e IIS) sendo que estamos falando de componetes nativos do SO?

Obrigado mais uma vez.

ceduardo.roque

Isso tudo dá para você fazer no seu script VBScript. Basta fazer com que ele retorne (imprima) valores decentes para você poder analisar.

Ahã.

Vou tentar fazer desta forma.

Obrigado pela ajuda. :smiley:

ceduardo.roque

Bom, eu havia falado em JScript porque ele suporta try / catch ; é mais fácil que o tal do “On Error Go To” do VBScript.

Fala aí thingol,

Tudo bem?

Então, eu comentei essa alternativa aqui no serviço, e o pessoal meio que repudiou… nao porque é ruim, mas porque já existe uma aplicação VBS que faz isso, e isso seria trocar seis por meia duzia.

De qualquer forma, parece que eles querem que seja algo mais controlado mesmo, como se fosse um processo batch.

Dai, chegamos à conclusão de que teria que ser acesso nativo mesmo (talvez usando JNI, JNA, ou o próprio Jacob).

Dei uma olhada no JNA hoje e achei a documentação meio confusa… :frowning:

De qualquer forma eu vou tentar ver qual a melhor alternativa…

Obrigado!

Abraços

ceduardo.roque