pessoal,
to tentando carregar um metodo via rmi e da dando esse pau
java.rmi.MarshalException: error marshalling arguments; nested exception is:
java.io.NotSerializableException: Mensagem
m = this.getNaming("rmi://"+servidorstring+":1099/Service");
int TTL=4;
int Tipo=1;
int Tamanho=8;
Mensagem Men = new Mensagem(localipString,servidorstring,ident,TTL,Tipo,Tamanho,Telefone);
try {
// aqui ocorre a excessao
Mensagem aux = m.mandaMensagem(Men);
Faltou implementar a interface java.io.Serializable
[code]public class Mensagem implements Serializable{
}[/code]
so precisa fazer isso?
[code]/*
- Mensagem.java
-
- Created on 5 de Maio de 2006, 21:11
-
- To change this template, choose Tools | Template Manager
- and open the template in the editor.
/
import java.io.Serializable;
/*
-
-
@author Alexandre
*/
public class Mensagem implements Serializable{
public String EndIpOrigem;
public String EndIpDestino;
public int Ident;
public int TTL;
public int Tipo ;
public int Tamanho;
public String Dados;
/** Creates a new instance of Mensagem */
public Mensagem(String EO, String ED, int ID, int TL, int T, int Tam, String Dad) {
this.EndIpOrigem=EO;
this.EndIpDestino=ED;
this.Ident=ID;
this.TTL=TL;
this.Tipo=T;
this.Tamanho=Tam;
this.Dados=Dad;
}
public Mensagem() {}
public String getEndIpOrigem() {
return EndIpOrigem;
}
public String getEndIpDestino() {
return EndIpDestino;
}
public int getIdent() {
return Ident;
}
public int getTTL() {
return TTL;
}
public int getTipo() {
return Tipo;
}
public int getTamanho() {
return Tamanho;
}
public String getDados() {
return Dados;
}
public void setEndIpOrigem(String End) {
EndIpOrigem=End;;
}
public void setEndIpDestino(String End) {
EndIpDestino=End;
}
public void setIdent(int Id) {
Ident=Id;
}
public void setTTL(int TL) {
TTL=TL;
}
public void setTipo(int T) {
Tipo=T;
}
public void setTamanho(int Tam) {
Tamanho=Tam;
}
public void setDados(String D) {
Dados=D;
}
}[/code]
[size=“11”][color=“red”]* Editado: Lembre-se de utilizar BBCode em seus códigos - Ratinho[/color][/size] :joia:
Sim!
É bom que você declare um atributo na classe tambem, assim:
private static final long serialVersionUID = 1L;
cara,
quando eu acesso um metodo
via
[code] String ale = "ale";
String r = m.retorna(ale);
System.out.println(r);
public String retorna(String r) {
return("Retornei: "+r);
} [/code]
funciona bem… mas quando eu mando o objeto mensagem
[code] Mensagem Men = new Mensagem(localipString,servidorstring,ident,TTL,Tipo,Tamanho,Telefone);
m.mandaMensagem(Men)[/code]
da nullpointerexception … o que pode ser?
[size=“11”][color=“red”]* Editado: Lembre-se de utilizar BBCode em seus códigos - Ratinho[/color][/size] :joia:
Você está tentando acessar uma referencia nula em algum lugar aí, veja a linha onde lança a exceção e o que tem lá, deve ser null