2012-06-28 12 views
10

के साथ उपयोग में पता है मैं अपने आवेदन को-2.0.2 खेलने के लिए अद्यतन कर रहा हूं।2.0.2 खेलने के लिए अद्यतन - पहले से ही अक्का रिमोट अभिनेता

[error] p.c.ActionInvoker - Failed to bind to: /127.0.0.1:2552 
org.jboss.netty.channel.ChannelException: Failed to bind to: /127.0.0.1:2552 
    at org.jboss.netty.bootstrap.ServerBootstrap.bind(ServerBootstrap.java:298) ~[netty.jar:na] 
    at akka.remote.netty.NettyRemoteServer.start(Server.scala:53) ~[akka-remote-2.0.2.jar:2.0.2] 
    at akka.remote.netty.NettyRemoteTransport.start(NettyRemoteSupport.scala:73) ~[akka-remote-2.0.2.jar:2.0.2] 
    at akka.remote.RemoteActorRefProvider.init(RemoteActorRefProvider.scala:95) ~[akka-remote-2.0.2.jar:2.0.2] 
    at akka.actor.ActorSystemImpl._start(ActorSystem.scala:568) ~[akka-actor.jar:2.0.2] 
    at akka.actor.ActorSystemImpl.start(ActorSystem.scala:575) ~[akka-actor.jar:2.0.2] 
Caused by: java.net.BindException: Address already in use 
    at sun.nio.ch.Net.bind(Native Method) ~[na:1.6.0_33] 
    at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:126) ~[na:1.6.0_33] 
    at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59) ~[na:1.6.0_33] 
    at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.bind(NioServerSocketPipelineSink.java:140) ~[netty.jar:na] 
    at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.handleServerSocket(NioServerSocketPipelineSink.java:92) ~[netty.jar:na] 
    at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.eventSunk(NioServerSocketPipelineSink.java:66) ~[netty.jar:na] 
[error] a.r.RouterConfig$$anon$1 - Failed to bind to: /127.0.0.1:2552 
org.jboss.netty.channel.ChannelException: Failed to bind to: /127.0.0.1:2552 
    at org.jboss.netty.bootstrap.ServerBootstrap.bind(ServerBootstrap.java:298) ~[netty.jar:na] 
    at akka.remote.netty.NettyRemoteServer.start(Server.scala:53) ~[akka-remote-2.0.2.jar:2.0.2] 
    at akka.remote.netty.NettyRemoteTransport.start(NettyRemoteSupport.scala:73) ~[akka-remote-2.0.2.jar:2.0.2] 
    at akka.remote.RemoteActorRefProvider.init(RemoteActorRefProvider.scala:95) ~[akka-remote-2.0.2.jar:2.0.2] 
    at akka.actor.ActorSystemImpl._start(ActorSystem.scala:568) ~[akka-actor.jar:2.0.2] 
    at akka.actor.ActorSystemImpl.start(ActorSystem.scala:575) ~[akka-actor.jar:2.0.2] 
Caused by: java.net.BindException: Address already in use 
    at sun.nio.ch.Net.bind(Native Method) ~[na:1.6.0_33] 
    at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:126) ~[na:1.6.0_33] 
    at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59) ~[na:1.6.0_33] 
    at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.bind(NioServerSocketPipelineSink.java:140) ~[netty.jar:na] 
    at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.handleServerSocket(NioServerSocketPipelineSink.java:92) ~[netty.jar:na] 
    at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.eventSunk(NioServerSocketPipelineSink.java:66) ~[netty.jar:na] 
[error] play - Cannot invoke the action, eventually got an error: Thrown(akka.pattern.AskTimeoutException: Timed out) 

जब अनुप्रयोग स्टार्टअप पर निम्नलिखित कोड बुला:

मैं जब एक अक्का दूरस्थ अभिनेता की तैनाती एक समस्या है

ActorSystem system = Akka.system(); 

Address addr = new Address("akka", "application"); 
defaultInstance = system.actorOf(new Props(TheActor.class).withDeploy(new Deploy(new RemoteScope(addr))), "theActor"); 

जब application.conf में इस विन्यास:

akka { 
    actor { 
    provider = "akka.remote.RemoteActorRefProvider" 
    } 
    remote { 
    transport = "akka.remote.netty.NettyRemoteTransport" 
    netty { 
     hostname = "127.0.0.1" 
     port = 2552 
    } 
} 
} 

एक ही सेटअप play-2.0.1 पर ठीक काम करता है।

क्या play-2.0.2 पर काम करने के लिए कुछ कॉन्फ़िगरेशन परिवर्तन है?

धन्यवाद।

+0

इसी समस्या यहाँ: akka documentation से, आप एक स्वचालित रूप से एक चुना उपयोग करने के लिए 0 करने के लिए पोर्ट सेट कर सकते हैं। – schmmd

+0

प्ले 2.0.2 के साथ स्टार्टअप पर शुरुआत में 'रिमोटसेवर स्टार्टेड @ अक्का: //[email protected]: 9002' बनाया गया है। पूर्व में यह '127.0.0.1' आवेदन था। जब कोई कोड चलाया जाता है जो एक अभिनेता बनाता है, तो मुझे 'पता पहले से ही उपयोग में त्रुटि 'त्रुटि मिलती है। – schmmd

+0

मैंने एक नमूना अनुप्रयोग बनाया जो इस त्रुटि को उत्पन्न करता है। Https://gist.github.com/3063509 देखें। – schmmd

उत्तर

7

हो सकता है कि इस प्रयास करें: जब एक वादा का उपयोग कर `concurrent.Akka.future` बनाने

akka { 
    actor { 
    provider = "akka.remote.RemoteActorRefProvider" 
    } 
    remote { 
    transport = "akka.remote.netty.NettyRemoteTransport" 
    netty { 
     hostname = "127.0.0.1" 
     port = 0 
    } 
} 
} 
+0

मैं इस तरह से एप्लिकेशन को तैनात कर सकता हूं, लेकिन मुझे यह जानने की ज़रूरत है कि बंदरगाह मेरे रिमोट अभिनेता को किसी अन्य सर्वर से कॉल करने के लिए क्या है। –

+1

एक त्वरित Google खोज के बाद, ऐसा लगता है कि 'akka.remote.RemoteActorRefProvider.getExternalAddressFor' (https://groups.google.com/forum/?fromgroups#!topic/akka-user/POngjU9UpK8) का उपयोग करना संभव है। फिर आप एक http अनुरोध का उपयोग कर अपने अन्य सर्वर से यह पता प्राप्त करने के लिए नियंत्रक लिख सकते हैं। –

+0

यह मेरे लिए काम किया। – schmmd