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.Servidorimport 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) {
.......
}