luksfarris / MC851-Quack

Projeto final da disciplina de Projeto de Sistema de Informação da Unicamp
GNU General Public License v3.0
0 stars 0 forks source link

Comunicação Apache <--> ServerImpl #16

Closed JorgeStolfi closed 9 years ago

JorgeStolfi commented 9 years ago

Conforme discutimos em 2014-10-22, é preciso escrever uma classe {ProcessQuackHTTP.java} que vai fazer a comunicação entre o servidor Apache (um processo persistente P1 que roda numa máquina M1 do IC) e of servidor Quack (outro processo persistente P2, que roda em alguma outra máquina M2).

Cada vez que o servidor Apache P1 recebe um pedido HTTP (GET/POST) relacionado com o quack, ele vai startar e executar um novo processo P3, da classe {ProcessQuackHTTP.class}, na máquina M1. Esse processo P3 deve se comunicar com o processo {ServerImpl} P2 na máquina M2, passar para ele o GET/POST (possivelmente destrinchado), e aguardar o resultado, que é uma página HTML. O processo P3 então entrega essa página ao servidor Apache e termina.

A classe ProcessQuackHTTP substitui a classe Login.java.

Note que ProcessQuackHTTP.java não carrega banco de dados e não usa nenhuma das classes do pacote {quack}.

Por outro lado processo P2 {ServerImpl.java} carrega todo o banco de dados MySQL na memória só uma vez, quando é startado (o que vai levar alguns minutos), e atualiza o banco quando há alterações nos usuários, contatos, ou mensagens. Como explicado na interface (RTFM!) ele tem várias instâncias de {Session} na memória, que são criadas quando alguém dá login. descartadas no logout, e são perdidas quando P2 morre.

EDIT: O processo P3 não precisa nem ser em java. Poderia ser um shell script, Python, etc. Ele só precisa conseguir se comunicar com o processo P2 na máquina M2, entrgar para ele de agum jeito um string e receber de volta um string. O ServerImpl precisa ter um método que de alguma forma recebe um desses strings, destrincha, chama o método processXXXReq correspondente, pega o string que esse método devolve e manda de volta pro processo P3 na máquina M1.