estou tentando usar uma aplicação rmi… onde os 2 pcs tem a mesma aplicação… o servidor possui o banco de dados que sera acessado pelo outro computador
na configuração do postgres do servidor eu fiz a configuração:
TYPE DATABASE USER CIDR-ADDRESS METHOD
IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 169.254.48.173 md5
IPv6 local connections:
#host all all ::1/128 md5
porem no servidor da esse erro:
22/11/2009 15:26:00 View.RegistrarOcorrencia$4 run
SEVERE: null
java.rmi.ConnectIOException: Exception creating connection to: 192.168.1.6; nested exception is:
java.net.SocketException: Network is unreachable: connect
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:614)
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:198)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:184)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:110)
at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:178)
at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:132)
at $Proxy0.setDomainObject(Unknown Source)
at View.RegistrarOcorrencia.<init>(RegistrarOcorrencia.java:49)
at View.RegistrarOcorrencia$4.run(RegistrarOcorrencia.java:321)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.net.SocketException: Network is unreachable: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at java.net.Socket.<init>(Socket.java:366)
at java.net.Socket.<init>(Socket.java:180)
at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:22)
at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:128)
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:595)
... 16 more
vou postar os codigos aki… são mto rsrs
meu controle:
Fachada do servidor
public class Fachada extends UnicastRemoteObject implements IFachada {
// HashMap<String, IDAO> daos;
private DomainObject domainObject;
private Map<String, IDAO> daos;
public Fachada() throws RemoteException {
// this.domainObject = domainObject;
daos = new HashMap<String, IDAO>(); // dominio = new HashMap<String,
daos.put(Ocorrencia.class.getName(), new DaoOcorrencia());
daos.put(Produto.class.getName(), new DaoProduto());
daos.put(Usuarios.class.getName(), new DaoUsuarios());
}
public boolean Login(String parametro,String parametro2) throws RemoteException, SQLException {
IDAO dao = daos.get(domainObject.getClass().getName());
if(dao.Login(parametro, parametro2)){
return true;}else
{
return false;
}
}
public boolean inserir() throws RemoteException {
IDAO dao = daos.get(domainObject.getClass().getName());
if (dao.inserir(domainObject)) {
return true;
} else {
return false;
}
}[/code]
minha view:
[code]private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try {
JOptionPane.showMessageDialog(null, "aki");
Ocorrencia ocorrencia = new Ocorrencia();
IFachada fachada = new Fachada();
Cliente cliente = new Cliente();
cliente.setCPF(Integer.parseInt(tfcpf.getText()));
cliente.setNome(tfcliente.getText());
ocorrencia.setCliente(cliente);
Servicos servicos = new Servicos();
TipoServico tiposervico = new TipoServico();
tiposervico.setDescricaoServico((String.valueOf(jComboBox1.getSelectedItem())));
tiposervico.setIdServico(Integer.parseInt(codservico.getText()));
ocorrencia.setServicos(servicos);
ocorrencia.getServicos().setTiposervico(tiposervico);
Veiculo veiculo = new Veiculo();
veiculo.setPlaca(tfplaca.getText());
veiculo.setNomeVeiculo(tfveiculo.getText());
ocorrencia.setVeiculo(veiculo);
ocorrencia.setIDOcorrencia(Integer.parseInt(tfcodigo.getText()));
ocorrencia.setDescricao(tfdescricaoocorrencia.getText());
ocorrencia.setData(tfdata.getText());
fachada.setDomainObject(ocorrencia);
fachada.inserir();
JOptionPane.showMessageDialog(null, "ok salvo");
meu servidor:
public class Servidor {
public Servidor() {
try {
IFachada fachada = new Fachada();
Naming.rebind("rmi://localhost/ServicesServer", fachada);
System.out.println("Servidor de inciado!!!");
}
catch( Exception e ) {
e.printStackTrace();
System.out.println( "Trouble: " + e );
JOptionPane.showMessageDialog(null, e.getMessage());
}
}
public static void main(String[] args) {
new Servidor();
Agora os codigo que irá acessar o servidor:
View:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try {
JOptionPane.showMessageDialog(null, "aki");
Ocorrencia ocorrencia = new Ocorrencia();
// chamei o conector remoto do lookup
IFachada fachada = ConectorRemoto.getFachada();
Cliente cliente = new Cliente();
cliente.setCPF(Integer.parseInt(tfcpf.getText()));
cliente.setNome(tfcliente.getText());
ocorrencia.setCliente(cliente);
Servicos servicos = new Servicos();
TipoServico tiposervico = new TipoServico();
tiposervico.setDescricaoServico((String.valueOf(jComboBox1.getSelectedItem())));
tiposervico.setIdServico(Integer.parseInt(codservico.getText()));
ocorrencia.setServicos(servicos);
ocorrencia.getServicos().setTiposervico(tiposervico);
Veiculo veiculo = new Veiculo();
veiculo.setPlaca(tfplaca.getText());
veiculo.setNomeVeiculo(tfveiculo.getText());
ocorrencia.setVeiculo(veiculo);
ocorrencia.setIDOcorrencia(Integer.parseInt(tfcodigo.getText()));
ocorrencia.setData(tfdata.getText());
fachada.setDomainObject(ocorrencia);
fachada.inserir();
JOptionPane.showMessageDialog(null, "ok salvo");
meu lookup
[code]
public class ConectorRemoto {public static IFachada getFachada()throws MalformedURLException, RemoteException, NotBoundException{
IFachada fachada = (IFachada) Naming.lookup( "rmi://169.254.16.157/ServicesServer" );
return fachada;}}[/code]