Я изучаю Java RMI и имею пример кода, чтобы показать, как RMI можно использовать для передачи объектов другим виртуальным машинам по сети.
Вот классы и код, которые я использую;
//interface
import java.rmi.*;
public interface MyRemote extends Remote
{
public String sayHello() throws RemoteException;
}
//My Remote Implementation Class
import java.rmi.*;
import java.rmi.server.*;
public class MyRemoteImpl extends UnicastRemoteObject implements MyRemote
{
public String sayHello()
{
return "Server says, 'Hey' ";
}
public MyRemoteImpl() throws RemoteException
{
}
public static void main (String[] args)
{
try
{
MyRemote service = new MyRemoteImpl();
Naming.rebind("Remote Hello", service);
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}
//My Remote Client Class
import java.rmi.*;
public class MyRemoteClient
{
public static void main (String [] args)
{
new MyRemoteClient().go();
}
public void go()
{
try{
MyRemote service = (MyRemote) Naming.lookup("rmi://127.0.0.1/Remote Hello");
String s = service.sayHello();
System.out.println(s);
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}
Я продолжаю получать java.net.MalformedURLException: недопустимый URL-адрес Строка: rmi: //127.0.0.1/Remote Здравствуйте, я знаю, что это связано с 'Naming.lookup ("rmi: //127.0.0.1/ Remote Hello ") 'код в последнем классе.
Я установил tomcat и попытался поместить файлы в каталог, пытаясь заставить его работать на моем локальном компьютере, но у меня не было радости.
Я создал JAR-файл своегопроект и попытался поместить это в каталог также и до сих пор не повезло.Я слышал о военных файлах, но в настоящее время книга, которую я изучаю, еще не дошла до этого ...
Какие-нибудь советы о том, как я могу обойти это без исключения, называются?Я неправильно размещаю файлы в Tomcat?Я разместил их в своем каталоге C: \ Program Files \ Apache Software Foundation \ Tomcat 7.0 \ webapps.
Любая помощь или советы будут высоко оценены.
ОБНОВЛЕНИЕ
Спасибо за совет, исключение String, похоже, ушло, но теперь я с этим не согласен.
java.rmi.ConnectException: Соединение отказано в хосте: 127.0.0.1;Вложенное исключение: java.net.ConnectException: в соединении отказано: соединение в sun.rmi.transport.tcp.TCPEndpoint.newSocket (TCPEndpoint.java:619) в sun.rmi.transport.tcp.TCPChannel.createConnection (TCPChannel.java:216) в sun.rmi.transport.tcp.TCPChannel.newConnection (TCPChannel.java:202) в sun.rmi.server.UnicastRef.newCall (UnicastRef.java:340) в sun.rmi.registry.RegistryImpl_Stub.lookup (неизвестно)Источник) в java.rmi.Naming.lookup (Naming.java:101) в MyRemoteClient.go (MyRemoteClient.java:13) в _ SHELL57.run ( _SHELL57.java: 10) в sun.reflect.NativeMethodAccessorImpl.invoke0 (родной метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) в sun.reflect.DelegatingMethodAccessorImpl.invoke (methodava.hoke.jref.jj.java: 623) at bluej.runtime.ExecServer $ 3.run (ExecServer.java:774) Вызвано: java.net.ConnectException: соединение отклонено: подключиться на java.net.DualStackPlainSocketImpl.connect0 (Native метод) в java.net.DualStackPlainSocketImpl.socketConnect (DualStackPlainSocketImpl.java:69) в java.net.AbstractPlainSocketImpl.doConnect (AbstractPlainSocketImpl.java:316) в java.net.AbstractPlainSocketAlIcketSlcketPlayOcketSamp.net.AbstractPlainSocketImpl.connect (AbstractPlainSocketImpl.java:164) на java.net.PlainSocketImpl.connect (PlainSocketImpl.java:154) на java.net.SocksSocketImpl.connect (SocksSocketImpl.oava: java35):подключиться (Socket.java:569) на java.net.Socket.connect (Socket.java:519) на java.net.Socket. (Socket.java:416) на java.net.Socket. (Socket.java:199) в sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket (RMIDirectSocketFactory.java:40) в sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket (RMIMasterSocketFactory.java:rmi.rans..CPT.CPT.newSocket (TCPEndpoint.java:613)