Ajuda com estrutura de software  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
Algebra
Java Ninja
[Avatar]

Membro desde: 10/06/2008 08:37:36
Mensagens: 284
Offline

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.

Artificial Inteligence - Knowledge Engineering
Ravnus
JavaBaby
[Avatar]

Membro desde: 22/10/2010 10:55:56
Mensagens: 83
Localização: Brasília, DF
Offline

Leia sobre MVC, Model View Control.

Domício Medeiros

Usuário Linux
[Email] [MSN]
schranko
JavaTeenager
[Avatar]

Membro desde: 05/09/2010 17:58:40
Mensagens: 156
Localização: Moscow, Russia
Offline

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

"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." (Brian W. Kernighan)
[WWW]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

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

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
esmiralha
JavaEvangelist

Membro desde: 19/07/2006 09:04:42
Mensagens: 402
Offline

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
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team