Ajuda com estrutura de software

Gente eu desenvolvi um chatterbot, um software que trabalha com processamento de linguagem natural e tenta simular a conversação humana, o problema é que este aplicativo foi pensado a principio desktop, e leva muitas variáveis estáticas, o problema é que agora que pensamos numa interface web para ele, ele mistura as conversas de uma requisição com outra, é que o chatter utiliza recursos de memória curta que são amarzenada em variaveis estáticas, mas eu gostaria que cada conversa fosse tratada de forma independente, como se cada requisição fosse criada uma instancia do software, o problema é que não tenho tanto conhecimento em java, oque vc’s me aconselham?

Abraços.

Leia sobre MVC, Model View Control.

Ola,

Para voce entender o que esta havendo voce precisa entender o modelo de funcionamento dos Servlets, entao sugiro que voce estude MVC e JSP/Servlets (o livro da Kathy Sierra (SCWCD) eh excelente).

Basicamente o que esta ocorrendo eh que variaveis de instancia (ou no caso, static) sao compartilhadas
pelas threads que o container cria para tratar os request/response. Para cada par request/response o container
cria uma thread para seu processamento, contudo, todas as threads tem acesso as mesmas variaveis declaradas!

Uma solucao seria utilizar o escopo local para tratar o request/response e o escopo de sessao para armazenar
informacoes especificas de cada client.

[]'s

E não use variáveis estáticas.

Você pode substituir suas variáveis estáticas por ThreadLocals. Dessa forma, cada thread terá sua cópia local da variável.

Pesquise sobre ThreadLocal: http://www-128.ibm.com/developerworks/java/library/j-threads3.html