2017-12-03 12 views
2

CArtAgO 인프라를 통해 JaCaMo 응용 프로그램에 원격으로 연결하려고합니다.CArtAgO java.rmi.ConnectException 분산 환경에서 연결이 거부되었습니다.

나는 서버가 수신하여 실행 한
mas testclient { 
    agent alice 
    platform: cartago() 
    node n1 running @ 10.0.0.14 
    class-path: lib      // java class path 
    asl-path: src/agt, src/agt/inc  // agent source path 
} 

나는 다음과 같은 결과를 얻었다 :

mas testsvr { 
    agent bob 
    workspace world 
    platform: cartago(infrastructure) 
    class-path: lib      // java class path 
    asl-path: src/agt, src/agt/inc  // agent source path 
} 

그리고 클라이언트 응용 프로그램은 다음과 같이이다 : 서버에서

내 JCM 파일은 다음과 같다 :

CArtAgO Http Server running on http://127.0.1.1:3273 
Jason Http Server running on http://127.0.1.1:3272 
Looking for rmi://10.0.0.11/cartago_node 
java.rmi.ConnectException: Connection refused to host: 127.0.1.1; nested exception is: 
    java.net.ConnectException: Connection refused 
    at 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.invoke(UnicastRef.java:130) 
    at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:227) 
    at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:179) 
    at com.sun.proxy.$Proxy6.join(Unknown Source) 
    at cartago.infrastructure.rmi.CartagoInfrastructureLayer.joinRemoteWorkspace(CartagoInfrastructureLayer.java:62) 
    at cartago.CartagoService.joinRemoteWorkspace(CartagoService.java:372) 
    at cartago.NodeArtifact.joinRemoteWorkspace(NodeArtifact.java:99) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at cartago.ArtifactOpMethod.exec(ArtifactOpMethod.java:39) 
    at cartago.Artifact.doOperation(Artifact.java:407) 
    at cartago.Artifact.access$200(Artifact.java:32) 
    at cartago.Artifact$ArtifactAdapter.doOperation(Artifact.java:1275) 
    at cartago.WorkspaceKernel.serveOperation(WorkspaceKernel.java:1136) 
    at cartago.WorkspaceKernel.access$000(WorkspaceKernel.java:48) 
    at cartago.WorkspaceKernel$EnvironmentController.run(WorkspaceKernel.java:1477) 

I 출력을 듣고 서버없이 실행 한 경우였다 :

CArtAgO Http Server running on http://127.0.1.1:3273 
Jason Http Server running on http://127.0.1.1:3272 
java.rmi.ConnectException: Connection refused to host: 10.0.0.11; nested exception is: 
    java.net.ConnectException: Connection refused 
    at 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:342) 
    at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source) 
    at java.rmi.Naming.lookup(Naming.java:101) 
    at cartago.infrastructure.rmi.CartagoInfrastructureLayer.joinRemoteWorkspace(CartagoInfrastructureLayer.java:58) 
    at cartago.CartagoService.joinRemoteWorkspace(CartagoService.java:372) 
    at cartago.NodeArtifact.joinRemoteWorkspace(NodeArtifact.java:99) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at cartago.ArtifactOpMethod.exec(ArtifactOpMethod.java:39) 
    at cartago.Artifact.doOperation(Artifact.java:407) 
    at cartago.Artifact.access$200(Artifact.java:32) 
    at cartago.Artifact$ArtifactAdapter.doOperation(Artifact.java:1275) 
    at cartago.WorkspaceKernel.serveOperation(WorkspaceKernel.java:1136) 
    at cartago.WorkspaceKernel.access$000(WorkspaceKernel.java:48) 
    at cartago.WorkspaceKernel$EnvironmentController.run(WorkspaceKernel.java:1477) 

따라서 클라이언트가 서버를 발견했지만 잘못된 결과가 발생하고 연결이 거부되었음을 나타냅니다. 무슨 일 이니? 기본 CArtAgO의 연결 포트는 무엇입니까?

답변

1

카르타고는 자바 RMI, 기본 포트 아무런 제한 여부를 확인하지으로 서버와 클라이언트를 떠나 제안되는 기본 포트는 20101. 다른 상수 http://www.emse.fr/~boissier/enseignement/maop17-spring/doc/api/cartago-api/index.html?constant-values.html

에서 확인할 수있다 LipeRMI 연결의 경우 20100.이다 사용의 iptables INPUT , FORWARD 및 OUTPUT은 모든 경우에 대해 ACCEPT를 표시합니다. 당신은 포트 20100이 응용 프로그램에 의해 열린 경우 (당신이 SS 또는 NETSTAT를 사용할 수 있습니다) 볼 수 있습니다 실행 JaCaMo 응용 프로그램과 리눅스에

$ iptables -L -v 

다음과 같은 명령을 사용할 수 있습니다. 응답은 할 수 연결이 이름을 사용하기 때문에 DNS가 기계 위해 일해야 할 필요가있다 20100 포트

$ ss -tnl | grep 20100 

또는

$ netstat -tuplen | grep 20100 

"수신"한다. 컴퓨터 이름을 사용하여 명령 ping을 통해 테스트 할 수 있습니다.

서버에서
$ ping name_server 

(핑 클라이언트)

$ ping name_client1 
: 클라이언트에서