Tenho 2 sistemas, e meu problema é o seguinte, um sistema vai ficar aberto 24 horas por dia, e o outro é o de produção(onde ira ser feito as inserções de informações no banco de dados), e quero fazer o seguinte, quando uma informação for salva em tal tela do sistema eu quero que a segunda aplicação atualize com o novo resistro ja inserido.
Basicamente é assim a aplicação 2(Produção) insere um novo registro e então a aplicação 1 atualiza a tela trazendo o novo registro na tela.
Alguem tem sabe como poço fazer isso? Obrigado pela atenção.
Tenho 2 sistemas, e meu problema é o seguinte, um sistema vai ficar aberto 24 horas por dia, e o outro é o de produção(onde ira ser feito as inserções de informações no banco de dados), e quero fazer o seguinte, quando uma informação for salva em tal tela do sistema eu quero que a segunda aplicação atualize com o novo resistro ja inserido.
Basicamente é assim a aplicação 2(Produção) insere um novo registro e então a aplicação 1 atualiza a tela trazendo o novo registro na tela.
Alguem tem sabe como poço fazer isso? Obrigado pela atenção.[/quote]
Olá tudo bem, então, eu tenho um sistema semelhante ao seu que já esta em e estou estudando uma nova forma de fazer esta atualização, por enquanto a solução que encontrei foi a seguinte, na tela que precisa ser avisada de novos registros eu fiz uma Thread que se atualiza a cada X tempo de acordo com a configuração desejava e esta refaz a pesquisa no banco, só que isso ocasiona um outro problema, caso o volume de dados seja muito grande, o sistema que monitora pode ficar lento e o servidor tbm por conta de muitas pesquisas!! estou estudando uma nova forma de fazer isso, to pensando em usar o setFetchSize(int rows) com mais algumas configurações juntas para poder tirar um pouco do peso do banco!! vou acompanhar o topico para ver o que podemos fazer.
Usualmente, em vez de socket (que é sempre difícil de controlar), pode-se usar uma solução de mensageria (como o Apache ActiveMQ, o MQSeries se você for cliente da IBM, etc) para enviar as tais mensagens de um sistema para o outro.
Assim o outro sistema pode ser avisado das alterações efetuadas pelo sistema principal.
Dependendo do que você quer, se o sistema quer é fazer monitoração (é um caso de uso um pouco diferente do que você citou), pode-se usar JMX no sistema principal, e fazer o sistema secundário (o que quer monitorar o principal) atender a traps SNMP ou coisas parecidas.
public void send() {
PushContext pushContext = PushContextFactory.getDefault().getPushContext();
pushContext.push("/mapa", new FacesMessage("NOVO", "Novo Link"));
}
porem se eu abrir o mesmo sistema 2 vezes, a mensagem é exibida, porem quando abro os dois sistemas a mensagem não é atribuida.
Pelo que eu entendi o socket faz comunicação pelo glassfish tornando possivel essa comunicação, mais esta complicado.
Respondendo o nosso amigo: GodZilla_XF
Achei otimo essa solução pois eu irei buscar no banco de dados poucas informações para atualizar, irei estudar esse metodo.
Já tentou simplesmente, usar XMLHttpRequest? Eu uso, porém com PHP, mas o efeito seria o mesmo.
Caso não saiba, XMLHttpRequest é uma função em Javascript que vai acessar a página e retornar em tempo real (definido por você) o que o script retornou, sem atualização da página. Com este, você envia requisições POST ou GET pra qualquer script, e consegue obter o retorno em algum elemento da página.
Tipo:
Dentro da
acima, o script vai atualizando de x em x segundos, o que o script vai retornar.