Erro no JME: java.io.EOFException.. alguma idéia?

bom dia a todos
primeiro quero agradecer a todos que estão me ajudando aqui neste fórum
segundo estou tendo o seguinte problema que retorna um erro no meu aplicativo móvel:

run:
Copying 1 file to C:\Documents and Settings\Administrador\Teste\dist\nbrun#11013
Copying 1 file to C:\Documents and Settings\Administrador\Teste\dist\nbrun#11013
Starting emulator in execution mode
Running with storage root DefaultColorPhone
conectando com o servidor
conectando com o servidor
java.io.EOFException
        at java.io.DataInputStream.readUnsignedShort(DataInputStream.java:309)
        at java.io.DataInputStream.readUTF(DataInputStream.java:545)
        at java.io.DataInputStream.readUTF(DataInputStream.java:522)
        at Teste$ThreadPlaca.run(Teste.java:595)
Execution completed.
1142059 bytecodes executed
259 thread switches
744 classes in the system (including system classes)
5997 dynamic objects allocated (223928 bytes)
8 garbage collections (128620 bytes collected)
BUILD SUCCESSFUL (total time: 41 seconds)

a midlet é a seguinte:

private class ThreadHttpConnection extends Thread{
        public String url = "http://localhost:8080/Http/HttpServer?command=fazerlogin";
        public void run(){
            HttpConnection http = null;
            try {
                http = (HttpConnection)Connector.open(url, Connector.READ_WRITE);
                http.setRequestProperty("User-Agent", "Profile/MIDP-2.0 , Configuration/CLDC-1.0");
                http.setRequestProperty("Content-Language", "en-US");
                http.setRequestMethod(HttpConnection.POST);
                os = http.openDataOutputStream();
                os.writeUTF(login.trim());
                System.out.println("conectando com o servidor");
            } catch (IOException ex) {
                showAlert(ex.getMessage());
                ex.printStackTrace();
            }
            try {
                is = http.openDataInputStream();
                loginResult = is.readUTF();
                senhaResult = is.readUTF();
                alertResult = new Alert("Seja Bem Vindo(a):","Bem Vindo(a):"+loginResult, null, AlertType.CONFIRMATION);
                alertResult.setTimeout(Alert.FOREVER);
                getDisplay().setCurrent(alertResult, get_formEscolha());
                getDisplay().vibrate(3000);
                os.close();
                is.close();
                http.close();
            } catch (IOException ex) {
                showAlert(ex.getMessage());
                ex.printStackTrace();
            }
        }
    }
    
    private class ThreadPlaca extends Thread{
        public String url = "http://localhost:8080/Http/HttpServer?command=consultarplaca";
        public void run(){
            HttpConnection http = null;
            try {
                http = (HttpConnection)Connector.open(url, Connector.READ_WRITE);
                http.setRequestProperty("User-Agent", "Profile/MIDP-2.0 , Configuration/CLDC-1.0");
                http.setRequestProperty("Content-Language", "en-US");
                http.setRequestMethod(HttpConnection.POST);
                os = http.openDataOutputStream();
                os.writeUTF(placa.trim());
                System.out.println("conectando com o servidor");
            } catch (IOException ex) {
                showAlert(ex.getMessage());
                ex.printStackTrace();
            }
            try {
                is = http.openDataInputStream();
                placaResult = is.readUTF();
                chassiResult = is.readUTF();
                mmResult = is.readUTF();
                alertResult = new Alert("Resultado da Busca:","Placa:"+placa+"Chassi:"+chassi+"MarcaModelo:"+marcaModelo, null, AlertType.CONFIRMATION);
                alertResult.setTimeout(Alert.FOREVER);
                getDisplay().setCurrent(alertResult, get_formEscolha());
                getDisplay().vibrate(3000);
                os.close();
                is.close();
                http.close();
            } catch (IOException ex) {
                showAlert(ex.getMessage());
                ex.printStackTrace();
            }
        }
    }

a servlet é a seguinte:

[code]package br.com.web;

import java.io.;
import java.net.
;
import java.sql.*;

import javax.servlet.;
import javax.servlet.http.
;
import br.com.web.FabricaConex;

public class HttpServer extends HttpServlet {

private String sqla = "select * from usuario where login =?";
private String sqlb = "select * from veiculo where placa =?";
private String sqlc = "select * from veiculo where chassi =?";

private ResultSet rs;

private PreparedStatement ps;

private Connection con;

private String loginResult;
private String senhaResult;
private String placaResult;
private String chassiResult;
private String mmResult;

private DataInputStream in = null;

private DataOutputStream os = null;

public void init() {

}

public HttpServer() throws SQLException {
	con = Conexao.getConnection();
}

protected void doPost(HttpServletRequest request,
		HttpServletResponse response) throws ServletException, IOException {
	
	in = new DataInputStream((InputStream) request.getInputStream());
	os = new DataOutputStream((OutputStream) response.getOutputStream());

	String command = request.getParameter("command");

	if (command.equals("fazerlogin")) {
		String login = in.readUTF();
		System.out.println("String recebida: " + login);
		try {
			ps = this.con.prepareStatement(sqla);
			ps.setString(1, login);
			rs = ps.executeQuery();
			while (rs.next()) {
				System.out.println("Login:" + rs.getString("login")
						+ "| Senha:" + rs.getString("senha"));
				loginResult = "" + rs.getString("login");
				senhaResult = rs.getString("senha");
			}
		} catch (Exception ex) {
			System.out.println(ex.getMessage());
			ex.printStackTrace();
		}
		response.setContentType("text/plain");
		os.writeUTF(loginResult.trim());
		os.writeUTF(senhaResult.trim());
		in.close();
		os.close();
		os.flush();
	} else if (command.equals("consultarplaca")) {
		String placa = in.readUTF();
		System.out.println("String recebida: " + placa);
		try {
			ps = this.con.prepareStatement(sqlb);
			ps.setString(1, placa);
			rs = ps.executeQuery();
			while (rs.next()) {
				System.out.println("Placa:" + rs.getString("placa")
						+ "| Chassi:" + rs.getString("chassi")
						+ "| MarcaModelo:" + rs.getString("marcaModelo"));
				chassiResult = "" + rs.getString("chassi");
				placaResult = rs.getString("placa");
				mmResult = rs.getString("marcaModelo");
			}
		} catch (Exception ex) {
			System.out.println(ex.getMessage());
			ex.printStackTrace();
		}
		response.setContentType("text/plain");
		os.writeUTF(placaResult.trim());
		os.writeUTF(chassiResult.trim());
		os.writeUTF(mmResult.trim());
		in.close();
		os.close();
		os.flush();
	}

public String getServletInfo() {
	return "Short description";
}

}[/code]

alguém sabe o q é ?
obrigada

readUTF supõe que os dados são enviados em formato binário como:
2 bytes para o comprimento da string (byte mais significativo primeiro) (daí que veio o tal de “readUnsignedShort” que apareceu no seu stacktrace);
a string, representada em UTF-8 modificado.

Acho que sua aplicação Web muito provavelmente não manda os dados assim, a menos que você a tenha codificado para que ela mande os dados dessa maneira (usando um DataOutputStream), portanto você vai ter problemas usando essa função. Em vez de um DataInputStream, use um BufferedReader mesmo.

já deu certo
foi um pequeno erro de digitação
mas ñ m lembro o q era mais
corrigi já há alguns dias
mas veja o código como está agora

[code]protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {

	in = new DataInputStream((InputStream) request.getInputStream());
	os = new DataOutputStream((OutputStream) response.getOutputStream());

	String command = request.getParameter("command");
	System.out.println("String command:" + command);

	try {
		// obtém informações da sessão
		HttpSession session = request.getSession(true);

		// se for uma sessão nova, precisamos reescrever o URL do
		// cliente
		if (session.isNew()) {

			// obtém o URL que nos trouxe aqui
			String incomingURL = request.getRequestURL().toString();

			// escreve no console o nome da string URL que chegou
			System.out.println("String incomingURL:" + incomingURL);

			// Codifica, adicionando o ID de sessão no URL
			String URLwithID = response.encodeURL(incomingURL);

			// Devolve um cabeçalho para o cliente, com o novo URL
			// reescrito
			response.setHeader("Custom-newURL", URLwithID);

			// escreve no console a string q será retornada para o
			// cliente
			System.out.println("String URL:" + URLwithID);
		}
	} catch (Exception ex) {
		System.out.println(ex.getMessage());			
		ex.printStackTrace();
		System.out.println("Passei no bloco try/catch do URL");
	}

	if (command.equals("fazerlogin")) {

		String login = in.readUTF();
		System.out.println("String login: " + login);

		try {
			ps = this.con.prepareStatement(sqla);
			ps.setString(1, login);
			rs = ps.executeQuery();
			while (rs.next()) {
				System.out.println("Login:" + rs.getString("login")
						+ "| Senha:" + rs.getString("senha"));
				loginResult = "" + rs.getString("login");
				senhaResult = rs.getString("senha");
			}
		} catch (Exception ex) {
			System.out.println(ex.getMessage());
			ex.printStackTrace();
			System.out.println("Passei no bloco try/catch da busca do login");
		}

		try {
			response.setContentType("text/plain");
			os.writeUTF(loginResult);
			os.writeUTF(senhaResult);
			os.flush();
			in.close();
			os.close();
		} catch (Exception ex) {
			System.out.println(ex.getMessage());
			ex.printStackTrace();
			System.out.println("Passei no bloco try/catch do retorno do login");
		}[/code]

colei só uma parte do código ok
agora estou tendo outros problemas
qdo gerencio a sessão, a servlet está retornando para a midlet o último resultado da pesquisa qdo eu digito um registro que não existe no banco de dados… enquanto estou digitando registros que existem no banco, tudo vai bem …

o q pode ser?

obrigada