Boa noite pessoal, minha situação é a seguinte:
Tenho uma aplicação J2ME que usa o httpconection para enviar os dados a uma página em PHP. Só que depois de alguma tempo enviando e recebendo dados é gerada a seguinte excessão:
Essa classe é usada para enviar dados no formato json para o PHP que as persiste em um banco.
java.io.IOException: Resource limit exceeded for TCP client sockets
at com.sun.midp.io.j2me.socket.Protocol.open0(), bci=0
at com.sun.midp.io.j2me.socket.Protocol.connect(), bci=124
at com.sun.midp.io.j2me.socket.Protocol.open(), bci=125
at com.sun.midp.io.j2me.socket.Protocol.openPrim(), bci=4
at com.sun.midp.io.j2me.http.Protocol.createConnection(), bci=13
at com.sun.midp.io.j2me.http.Protocol.connect(), bci=115
at com.sun.midp.io.j2me.http.Protocol.streamConnect(), bci=20
at com.sun.midp.io.j2me.http.Protocol.startRequest(), bci=9
at com.sun.midp.io.j2me.http.Protocol.sendRequest(), bci=35
at com.sun.midp.io.j2me.http.Protocol.sendRequest(), bci=3
at com.sun.midp.io.j2me.http.Protocol.closeOutputStream(), bci=1
at com.sun.midp.io.BaseOutputStream.close(), bci=11
at java.io.DataOutputStream.close(), bci=12
Segue abaixo a classe que efetua a conexão e envia os dados:
[code]
package DAO;
import com.sun.lwuit.Dialog;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.rmi.ServerException;
import java.util.Vector;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
public class RemoteConnection {
private HttpConnection httpconn;
private String URL;
public RemoteConnection(String Url){
//seto o valor da propriedade
URL = Url;
}
public void setURL(String URL) {
this.URL = URL;
}
public String postdata(Vector dados) throws IOException{
String result = "";//string que guardara o resultado
DataOutputStream out = null;
try {
//cria uma nova conexao baseada no na url passada
httpconn = (HttpConnection) Connector.open(URL,Connector.READ_WRITE);
//seta o cabeçalho
httpconn.setRequestProperty("IF-Modified-Since","20 Jan 2001 16:19:14 GMT");
httpconn.setRequestProperty("User-Agent","Profile/MIDP-2.0 Confirguration/CLDC-1.0");
httpconn.setRequestProperty("Content-Language", "en-CA");
httpconn.setRequestProperty("Content-Type", "text/plain; charset=UTF-8");
httpconn.setRequestProperty("Connection", "close");
//altera o método de requisição para POST
httpconn.setRequestMethod(HttpConnection.POST);
//abre o canal de comunicaçao com o servidor
out = httpconn.openDataOutputStream();
//escreve todos os elementos do parâmetro vetor na conexão
for(int lncont=0;lncont<dados.size();lncont++){
out.writeUTF(dados.elementAt(lncont).toString().trim());
}
//informa o final da escrita dos dados na conexão
try{
out.flush();
}catch(IOException ex){
ex.printStackTrace();
httpconn.close();
out.close();
throw new ServerException("Erro na comunicacao com o Servidor");
}
//solicito o status da conexão
int status = httpconn.getResponseCode();
//caso a conexão esteja aberta
if (status==HttpConnection.HTTP_OK) {
DataInputStream in = httpconn.openDataInputStream();
//crio um buffer para receber o retorno da conexão
StringBuffer buffer = new StringBuffer();
//leio o retorno do servidor
int ch;
while( ( ch = in.read() ) != -1 ) {
buffer.append( (char)ch );
}//end while( ( ch = dis.read() ) != -1 ) {
//converto o retorno d buffer em string
result = buffer.toString();
//se o retorno contiver a palavra erro lanço uma excessão
if (result.indexOf("erro")!=-1){
//copio o conteúdo após o delimitador, pois as mensagens são recebidas no formato:
//"erro|mensagem a ser mostrada"
String exMessage = result.substring(result.indexOf('|')+1, result.length());
//fecho a conexão
httpconn.close();
throw new ServerException("Erro:\n"+exMessage);
}
}else{
httpconn.close();
throw new ServerException("Erro no servidor: "+status);
}
} catch (IOException ex) {
ex.printStackTrace();
try {
httpconn.close();
} catch (IOException ex1) {
ex1.printStackTrace();
}
Dialog.show("Erro",ex.getMessage(),"OK",null);
}
try {
httpconn.close();
} catch (IOException ex) {
ex.printStackTrace();
}
return result;
}
}[/code]
Alguém teria alguma idéia do que poderia ser?
Só para constar, todas as requisições feitas ao PHP são retornados resultados.