Dúvida Streams J2ME + HTTP + Servlets

Bom dia a todos. Tenho um conjunto de classes e servlets que manipulam o bancos de dados em um projeto, até ai ocorre tudo bem. No outro projeto possuo a aplicação cliente com conexão http aos servlets.

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.Displayable;


public class Conexao extends Thread
{
    HttpConnection http=null;
    DataOutputStream os=null;
    DataInputStream is=null;
    String url;

    public Conexao()
    {

    }
    public HttpConnection run(String url)
    {
               this.url=url;
               System.out.println(url);
                //Cria conexão http na url informada
                try
                {
                    http = (HttpConnection) Connector.open(url);
                    http.setRequestMethod(HttpConnection.POST);//envia método do pedido : POST ou GET
                    http.setRequestProperty("User-Agent","Profile/MIDP-1.0, Configuration/CLDC-1.0");//Informação de cabeçalho a ser enviado
                    http.setRequestProperty("Content-Language","en-US");

                }
                catch (IOException ex)
                {
                    ex.printStackTrace();
                }
                return http;     
     }
     public DataOutputStream Output() throws IOException
     {
       os =(DataOutputStream)http.openDataOutputStream();
       return os;
     }
     public DataInputStream Intput() throws IOException
     {
       is =(DataInputStream)http.openDataInputStream();
       return is;
     }  
}

Aqui o midlet implementado

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import javax.microedition.io.HttpConnection;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.TextField;
import javax.microedition.lcdui.Ticker;
import javax.microedition.midlet.MIDlet;


public class Inicio extends MIDlet implements CommandListener
{
    public Display display;
    public Form frmLogin;
    public TextField tf_login,tf_senha;
    public Command cm_entrar, cm_sair,cm_pesquisar;
    public Ticker ticker;
    private Alert alError;
    String url = "http://localhost:8084/MlearningServ/Servlet";// url na qual o cel se conectará
    HttpConnection http=null;
    DataOutputStream os=null;
    DataInputStream is=null;
    Conexao conn = new Conexao();


    
    public void startApp()
    {
        http=conn.run(url);
       
        display=Display.getDisplay(this);

        frmLogin= new Form("Cadastro");

        frmLogin=new Form("M-Learning");
        tf_login=new TextField("Usuário:","",10,TextField.ANY);
        tf_senha=new TextField("Senha:","",10,TextField.ANY);
        ticker=new Ticker("Bem Vindo");

        cm_sair=new Command("Sair",Command.BACK,1);
        cm_entrar=new Command("Cadastrar",Command.ITEM,1);
        cm_pesquisar= new Command("Pesquisar",Command.ITEM,2);


        frmLogin.append(tf_login);
        frmLogin.append(tf_senha);
        frmLogin.addCommand(cm_sair);
        frmLogin.addCommand(cm_entrar);
        frmLogin.addCommand(cm_pesquisar);


        frmLogin.setCommandListener(this);

        display.setCurrent(frmLogin);
     
       
    }
    public void pauseApp()
    {
    }

    public void destroyApp(boolean unconditional)
    {
    }

    public void commandAction(Command c, Displayable d)
    {
        
        if(c==cm_entrar)
        {
            try
            {
                Gravar(http);
            }
            catch (IOException ex)
            {
                ex.printStackTrace();
            }
        }
        else if(c==cm_pesquisar)
        {
            try
            {
                Pesquisar(http);
            }
            catch (IOException ex)
            {
                ex.printStackTrace();
            }
        }
        else if(c==cm_sair)
        {
            destroyApp(true);
            notifyDestroyed();
        }
     }
    
  
    public void Gravar(HttpConnection http) throws IOException
    {
            os=conn.Output();//Declaração do objeto que permite enviar dados
            os.writeUTF("Gravar");
            os.writeUTF(tf_login.getString().trim());//grava os valores para serem enviados ao servidor
            os.writeUTF(tf_senha.getString().trim());
            os.close();

             if(http.getResponseCode()== HttpConnection.HTTP_OK)
             {
               showAlert(http.getResponseMessage());
             }
             else
               showAlert(http.getResponseMessage());
    } 
    public void Pesquisar(HttpConnection http) throws IOException
    {
         //envio para pesquisa
         os=conn.Output();
         os.writeUTF("Pesquisar");
         os.writeUTF(tf_login.getString());
         os.close();

         is=conn.Intput();
         //Resposta do servidor

         tf_login.setString(is.readUTF());
         tf_senha.setString(is.readUTF());
         is.close();

    }
   
    public void showAlert(String err)
    {
            Alert a = new Alert("");
            a.setString(err);
            a.setTimeout(Alert.FOREVER);
            display.setCurrent(a);
    }

 }

O problema é o seguinte, quando abro e fecho os stream ocorre tudo bem, porém se quero utilizá-los novamente(cadastrei algo e agora vou pesquisar) ele emite o erro:

java.io.IOException: no more output streams available

Sou novato, como trato os streams para abrí-los e fechá-los quando eu quiser ?

até mais !!!

Simples, quando vai trabalhar com os streams tens certeza que foram devidamente abertos??

Achei amigo, valew!

Eu chamava o meu método run (http=conn.run(url)) da classe conexao apenas no construtor do meu midlet, porém eu tenho que chamar todas vezes que eu abrir os streams, na verdade ele tem que ficar no mesmo método que abre os streams.