Problemas com XMLHttpRequest [Resolvido]

4 respostas
Wanderley2k

Aes,

Estou fazendo uma aplicação onde preciso inserir alguns itens dinamicamente. Estou usando XMLHttpRequest, enviando uma requisição para o servidor onde é gerado um html apartir de um Template do Velocity. E com isso eu dou um innerHTML na tabela.

Este é meu código de requisição:

function getXMLHTTP(){
  var A=null;
  try{
    A=new ActiveXObject("Msxml2.XMLHTTP")
  }catch(e){
    try{
      A=new ActiveXObject("Microsoft.XMLHTTP")
    } catch(oc){
      A=null
    }
  }
  if(!A && typeof XMLHttpRequest != "undefined") {
    A=new XMLHttpRequest()
  }
  return A
}

var contadorDeItens = 0;
var reqAdicionaItem = null;

function adicionaItem( cod, serv, chvproserv, nom, vlu ) {

	if (reqAdicionaItem && reqAdicionaItem.readyState != 0){
		reqAdicionaItem.abort();
	}
	reqAdicionaItem = getXMLHTTP();
	
	if (reqAdicionaItem) {
		contadorDeItens++;
		
		// Campos necessário para aplicar no template
		var url = 'empresario.osi.osiItem.chain';
		url += '?';
		url += 'velocityCount=' + escape(contadorDeItens);
		url += '&itemOsi.serv=' + escape(serv);
		url += '&itemOsi.chvproserv=' + escape(chvproserv);
		url += '&itemOsi.qtd='  + escape(1);
		url += '&itemOsi.vlu='  + escape(vlu);
		url += '&itemOsi.vtot=' + escape(vlu);
		
		reqAdicionaItem.open("GET", url, true);
		reqAdicionaItem.onreadystatechange = function() {
			if (reqAdicionaItem.readyState == 4 && reqAdicionaItem.responseText && reqAdicionaItem.status == 200) {
				document.getElementById("tabelaDados").innerHTML += reqAdicionaItem.responseText;
			}
		}
		reqAdicionaItem.send(null);
	}
}

Problema: Após 10 requisições meu servidor Apache TomCat não responde. Todas as páginas não respondem. Para voltar a funcionar tenho que reiniciar o Apache.

Eu coloquei uns println() para ver o momento que a requisição chega e depois das ~10 requisições acredito que nem chega entrar na classe.

Estou usando Apache Tomcat 5.5.7, Java 1.5, VRaptor e Firefox 1.4.

Obrigado pela atenção.

4 Respostas

Z

Se você simular esses 10 acessos simultâneos diretamente no browser (sem ser pelo httprequest), funciona direitinho?

Wanderley2k

** Valeu ZehOliveira

Encontrei o problema: A modelagem do banco de dados está um lixo então tive que fazer umas gambis no hibernate e tive que colocar um pouco de DAO no Model. Quando eu requisitava o template por idiotisse minha ele não usava minha session atual e por algum motivo demora muito tempo para estabelecer a conexão e criar uma outra session.

Para resolver o problema, eu comecei a passar a session atual (que estou usando no VRaptor, declarada em uma das interceptions) para o bean.

No final das contas o problema nem é com XMLHttpRequest ou Apache. Problema de BIOS - Bicho idiota operando o sistema! :slight_smile:

Rafael_Steil

De uma olhada no DWR - http://dwr.dev.java.net

Vai te ajudar horrores.

Rafael

Wanderley2k

Muito obrigado, isto pode me ajudar bastante.

Criado 25 de julho de 2005
Ultima resposta 25 de jul. de 2005
Respostas 4
Participantes 3