Java RMI에 대해 배우고 있으며 RMI를 사용하여 네트워크를 통해 다른 가상 머신에 객체를 전달하는 방법을 보여주는 예제 코드가 있습니다.Java RMI, Tomcat 문제!
다음은 현재 사용중인 클래스 및 코드입니다.
//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 디렉토리에이 파일들을 넣었습니다.
도움이나 조언을 주시면 감사하겠습니다.
UPDATE 조언을
덕분에, 문자열 예외가 사라진 것 같습니다하지만 지금이 짐으로하고 있습니다.
java.rmi.ConnectException : 연결 거부 : 127.0.0.1; 중첩 예외 : java.net.ConnectException : 연결이 거부되었습니다. 을 sun.rmi.transport.tcp.TCPEndpoint.newSocket (TCPEndpoint.java:619)에 연결하십시오. at sun.rmi.transport.tcp.TCPChannel.createConnection (TCPChannel .java : 216) at sun.rmi.transport.tcp.TCPChannel.newConnection (TCPChannel.java:202) at sun.rmi.server.UnicastRef.newCall (UnicastRef.java:340) at sun.rmi.registry MyRemoteClient.go (MyRemoteClient.java:13)에서 java.rmi.Naming.lookup (Naming.java:101) 에서 .RegistryImpl_Stub.lookup (알 소스) 에서 _ SHELL57.run ( _SHELL57.java:10) at sun.reflect.NativeMethodAccessorImpl.invoke0 (네이티브 메서드)java.lang.reflect.Method.invoke에서 sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) 에서 sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) 에서 1,515,(Method.java:623) java.net.ConnectException :에 의한 bluej.runtime.ExecServer $ 3.run (ExecServer.java:774) 에서 연결이 거부 됨 : java.net에서 java.net.DualStackPlainSocketImpl.connect0 (기본 방법) 에서 을 연결합니다. java.net.AbstractPlainSocke에서 java.net.AbstractPlainSocketImpl.connectToAddress (AbstractPlainSocketImpl.java:177) 에서 java.net.AbstractPlainSocketImpl.doConnect (AbstractPlainSocketImpl.java:316) 에서 DualStackPlainSocketImpl.socketConnect (DualStackPlainSocketImpl.java:69) tImpl.connect (AbstractPlainSocketImpl.java:164) java.net.PlainSocketImpl.connect (PlainSocketImpl.java:154)에서 java.net.SocksSocketImpl.connect (SocksSocketImpl.java:352)에서 에서 java.net.Socket의 . connect (Socket.java:569) at java.net.Socket.connect (Socket.java:519) at java.net.Socket (Socket.java:416) at java.net.Socket (소켓.자바 :이 sun.rmi에서 sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket (RMIMasterSocketFactory.java:146) 에서 sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket (RMIDirectSocketFactory.java:40) 199) . transport.tcp.TCPEndpoint.newSocket (TCPEndpoint.java:613)
'원격 Hello'에 공간을 넣지 않고 사용해 볼 수 있습니까? –