Ola Pessoal.
Ja li vários posts mas ainda nao consegui ver realmente uma solução…
ja vi como transformar um objeto em xml e talz…
mas ainda nao sei o que fazer.
CHAT !
Um servidor e varios clientes.
No cliente eu tenho um servidor xml-rpc tambem!.
meu cliente (através de uma interface) chama meu servidor para se conectar…
e por este método envia como parametro o ip e a porta do servidor instanciado no cliente.
A implementação da interface no servidor, armazena meu cliente, instancia um xml-rpc client referenciando o servidor xml que esta no meu cliente…
desta forma o meu servidor… chama os clientes por meio de uma interface implementada no cliente.
quando um cliente se conectar ao chat… quero enviar atravez do método da interface um objeto do tipo VJogador
que contem alguns dados.
Como se fosse em RMI que meu VJogador implementaria serializable… e eu so passaria o objeto na chamada do método.
Como escrevo o codigo… para fazer com que o meu VJogador seja um tipo serializavel em xml… e eu apenas chamar ?
OBS: estou usando a implementação do xml-rpc da apache.
classes:
[code]package negocio.estrutura;
import java.io.Serializable;
public class VJogador implements Serializable{
/**
*
*/
private static final long serialVersionUID = -1967302606662877177L;
private String nickName;
private Integer pontos;
private String insignia;
private Integer ranking;
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public Integer getPontos() {
return pontos;
}
public void setPontos(Integer pontos) {
this.pontos = pontos;
}
public Integer getRanking() {
return ranking;
}
public void setRanking(Integer ranking) {
this.ranking = ranking;
}
public String getInsignia() {
return insignia;
}
public void setInsignia(String insignia) {
this.insignia = insignia;
}
}
[/code]
o VJogador ja está implementando serializable… pq uso o mesmo objeto para comunicação RMI.
public interface IChatGUIXml extends IChatGUI{
/** Atualizar a lista de Chat */
public String alguemFalou(String quem, String fala);
/** Atualizar os jogadores conectados */
public String alguemEntrou(VJogador jogador);
public class ChatGUIXml implements IChatGUIXml{
@Override
public String alguemEntrou(VJogador jogador) {
FrameChat fc = (FrameChat) RepositorioFrames.getRepositorio().getFrame("Chat");
fc.alguemEntrou(jogador);
return "";
}
@Override
public String alguemFalou(String quem, String fala) {
FrameChat fc = (FrameChat) RepositorioFrames.getRepositorio().getFrame("Chat");
fc.alguemFalou(quem, fala);
return "";
}
FrameChat implementa IChatGUIXml
entao… quando o servidor chama o listener…
a minha tela de chat é atualizada…
aki em baixo é onde o servidor chama a interface listener de cada cliente
as interfaces sao obtidas a partir do xmlClientServer…
a baixo a implementaçao da chamada que o cliente faz para se conectar ao chat.
[code]
public String connect(String servidor, String jogador, String ip, int porta) throws MalformedURLException {
Servidor s = (Servidor) ObjectProxy.getObjectProxy().resgataObjeto(servidor);
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
config.setEnabledForExceptions(true);
config.setEnabledForExtensions(true);
config.setServerURL(new URL("http://"+ip+":"+porta+"/"));
XmlRpcClient servidorCliente = new XmlRpcClient();
servidorCliente.setConfig(config);
ClientFactory cf = new ClientFactory(servidorCliente);
IChatGUIXml chatListenerXml = (IChatGUIXml) cf.newInstance(IChatGUIXml.class);
String chat = s.connectXML(jogador, chatListenerXml);
return chat;
}[/code]
IChatGUIXml listenerXml = (IChatGUIXml) listener;
for(Jogador j:jogadoresConectados) {
System.out.println("um cara conectado" +j.getNickname());
VJogador vjogador = new VJogador();
//TODO
vjogador.setInsignia("SOLDADO");
vjogador.setNickName(j.getNickname());
vjogador.setPontos(j.getPontos());
listenerXml.alguemEntrou(vjogador);
}
listenerXml.alguemEntrou(vjogador);
resumindo… preciso que essa chamada via xmlrpc
aceite o meu vjogador como se fosse serializavel
help plz