Se tiver um objeto próprio, implemente Serializable. Agora se tiver uma classe específica que baixou de algum lugar, como por exemplo org.jdom.Document ( jdom são classes para manipular xml´s), podemos criar uma classe qualquer implementando Serializable somente para receber esse objeto.
Por exemplo:
import org.jdom.Document; public class SerializeiDocument implements Serializable{ private static final long serialVersionUID = 1L; private Document doc; public Document getDoc() { return doc; } public void setDoc( Document doc ){ this.doc = doc; } }Fazendo isso você já possui uma classe serializada que guarda uma instância do objeto que deseja enviar.
SerializeiDocument doc = ( SerializeiDocument ) objInputStream.readObject() ;
A classe criada deve conter a mesma estrutura de package tanto no servidor, como no cliente.
Por fim, vamos enviar o objeto de um Cliente para um Servidor...
Classe jars.client.Cliente
import util.SerializeiDocument; //outros imports... public class Cliente { Socket client = null; ObjectOutputStream oos = null; SerializeiDocument serialDoc; public Client(){ try{ client = new Socket ( HOST, PORTA ); oos = new ObjectOutputStream( client.getOutputStream() ); //Supondo que serialDoc já esteja setado... oos.writeObject( serialDoc ); oos.flush(); }catch( Exception e ){ } finally{ oos.close(); client.close(); } }Classe jars.server.Servidor
import utils.SerializeiDocument; //outros imports... public class Servidor { ServerSocket server; Socket client; public void go(){ try{ server = new SocketServer( PORTA ); client = server.accept(); ObjectInputStream ois = new ObjectInputStream( client.getInputStream() ); SerializeiDocumet sdoc = (SerializeiDocument) ois.readObject(); //Pronto... sdoc está pronto para ser usado no servidor... }catch( Exception e ){} finally{ ois.close(); client.close(); } } }
Muito bom o exemplo ! Me ajudou bastante.
ResponderExcluirAbraços
Supondo que eu tenha mais de uma classe serializável. Como faço para testar qual classe o objeto é no recebimento?
ResponderExcluirVocê pode utilizar o instanceof do java.
Excluirif ( objectDesesado instanceof objetoVerificarInstancia) {
.......
}