Gostaria de saber se alguem poderia me ajudar neste sentido. Preciso que, após o término de uma procedure uma classe java (já criada) seja invocada para que envie e-mails com alguns dados gerados pela procedure.
Não seria melhor quem chamou a procedure chamar a tal classe Java? É possível em algumas versões do Oracle construir “Java Stored Procedures”, mas muitas vezes a máquina que tem o banco de dados nem pode acessar o mundo externo devido a alguma regra do firewall, para poder mandar emails.
O problema é que esta sp é executada por um job… Sabemos a hora que inicia, porém, por vários fatores, não temos a certeza a hora que finaliza…
A respeito do Java Store Procedures, eu tentei implementar mas justamente por essas regras de firewall ele não tem acesso a porta 23 (PC do banco), mas a maquina da aplicação a porta 23 é liberada… Por isso que necessito ao término do processo (procedure) que seja invocada esta classe java, que é um gerenciador de mensagens…
Essa parte de configuração que estou me batendo um pouco, de mapear a maquina do bd para chamar uma classe específica no servidor da aplicaçao…
pq vc nao cria a função Java dentro do proprio Oracle?
desconheco as versoes antigas mas a partir do 9 ( excluindo-se as distribuições XE ) existe uma VM embutida no banco e vc
pode criar classes Java dentro dele
voce está dando a idéia de criar uma Java Store Procedure? O problema que vejo nisto é o firewall da maquina do banco, que não tem acesso a porta 23… teria que rodar da maquina da aplicação mesmo…
Uma solução básica: faça com que a sua Stored Procedure faça um insert ou update em alguma tabela no final do procedimento e crie um programa que monitore esta tabela (polling).
Outras dicas:
Se você está usando o esquema de jobs do Oracle, acho que tem um jeito de saber se um job que foi agendado já terminou. Tente procurar na documentação da Oracle a respeito disto.
Se o esquema de agendamento for externo, tente verificar se não dá para incluir algum tratamento após o termino da tarefa.
Se puder fazer usar “Java Stored Procedure”, ela não deve ser a que envia o e-mail, mas que possa chamar e/ou ativar o mecanismo que envia o e-mail. Pense no pattern Observer. Use RMI.