<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><br></div><div><div>On Aug 11, 2008, at 5:14 PM, Dennis Byrne wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><br><font size="2" face="sans-serif">Hi Dmitrii,</font> <br> <br><font size="2" face="sans-serif">The approach taken in the article is one of two ways to go about using jinterface.  The other way is covered pretty well by these slides from this years' Erlang eXchange conference.   This approach is much more mailbox centric.</font> <br> <br><font size="2" face="sans-serif"><a href="http://people.apache.org/~dennisbyrne/erlang_exchange/erlang_exchange_jinterface.ppt">http://people.apache.org/~dennisbyrne/erlang_exchange/erlang_exchange_jinterface.ppt</a></font> <br></blockquote><br></div><div><br></div><div><div>Yup, I've seen this one as well. It's excellent in showing how you can implement erlang's features using jinterface, but I'm still a bit lost :) (yeah, yeah, I'm stupid and stupid enough to admit it :) )</div><div><br></div><div>So, I've created this java class:<br><br>import com.ericsson.otp.erlang.*;<br><br>public class ServerNode {<br><br><span class="Apple-tab-span" style="white-space: pre; ">  </span>public static void main (String[] _args) throws Exception{<br><span class="Apple-tab-span" style="white-space: pre; ">     </span><span class="Apple-tab-span" style="white-space: pre; "> </span>OtpNode self = new OtpNode("<a href="mailto:jinode@127.0.0.1">jinode@127.0.0.1</a>", "cookie");<br><span class="Apple-tab-span" style="white-space: pre; ">      </span><span class="Apple-tab-span" style="white-space: pre; "> </span>OtpMbox mbox = self.createMbox("jimbox");<br><span class="Apple-tab-span" style="white-space: pre; ">    </span><br><span class="Apple-tab-span" style="white-space: pre; ">       </span><span class="Apple-tab-span" style="white-space: pre; "> </span>OtpErlangObject o;<br><span class="Apple-tab-span" style="white-space: pre; ">     </span><span class="Apple-tab-span" style="white-space: pre; "> </span>OtpErlangTuple msg;<br><span class="Apple-tab-span" style="white-space: pre; ">    </span><span class="Apple-tab-span" style="white-space: pre; "> </span>OtpErlangPid from;<br><span class="Apple-tab-span" style="white-space: pre; ">     </span><span class="Apple-tab-span" style="white-space: pre; "> </span><br><span class="Apple-tab-span" style="white-space: pre; ">       </span><span class="Apple-tab-span" style="white-space: pre; "> </span>while (true) {<br><span class="Apple-tab-span" style="white-space: pre; "> </span><span class="Apple-tab-span" style="white-space: pre; "> </span><span class="Apple-tab-span" style="white-space: pre; "> </span>try {<br><span class="Apple-tab-span" style="white-space: pre; ">  </span><span class="Apple-tab-span" style="white-space: pre; "> </span><span class="Apple-tab-span" style="white-space: pre; "> </span><span class="Apple-tab-span" style="white-space: pre; "> </span>o = mbox.receive();<br><span class="Apple-tab-span" style="white-space: pre; ">    </span><span class="Apple-tab-span" style="white-space: pre; "> </span><span class="Apple-tab-span" style="white-space: pre; "> </span><span class="Apple-tab-span" style="white-space: pre; "> </span>if (o instanceof OtpErlangTuple) {<br><span class="Apple-tab-span" style="white-space: pre; ">     </span><span class="Apple-tab-span" style="white-space: pre; "> </span><span class="Apple-tab-span" style="white-space: pre; "> </span><span class="Apple-tab-span" style="white-space: pre; "> </span><span class="Apple-tab-span" style="white-space: pre; "> </span>msg = (OtpErlangTuple)o;<br><span class="Apple-tab-span" style="white-space: pre; ">       </span><span class="Apple-tab-span" style="white-space: pre; "> </span><span class="Apple-tab-span" style="white-space: pre; "> </span><span class="Apple-tab-span" style="white-space: pre; "> </span><span class="Apple-tab-span" style="white-space: pre; "> </span>from = (OtpErlangPid)(msg.elementAt(0));<br><span class="Apple-tab-span" style="white-space: pre; ">       </span><span class="Apple-tab-span" style="white-space: pre; "> </span><span class="Apple-tab-span" style="white-space: pre; "> </span><span class="Apple-tab-span" style="white-space: pre; "> </span><span class="Apple-tab-span" style="white-space: pre; "> </span>mbox.send(from,msg.elementAt(1));<br><span class="Apple-tab-span" style="white-space: pre; ">      </span><span class="Apple-tab-span" style="white-space: pre; "> </span><span class="Apple-tab-span" style="white-space: pre; "> </span><span class="Apple-tab-span" style="white-space: pre; "> </span>}<br><span class="Apple-tab-span" style="white-space: pre; ">      </span><span class="Apple-tab-span" style="white-space: pre; "> </span><span class="Apple-tab-span" style="white-space: pre; "> </span>}catch (Exception e) {<br><span class="Apple-tab-span" style="white-space: pre; "> </span><span class="Apple-tab-span" style="white-space: pre; "> </span><span class="Apple-tab-span" style="white-space: pre; "> </span><span class="Apple-tab-span" style="white-space: pre; "> </span>System.out.println("" + e);<br><span class="Apple-tab-span" style="white-space: pre; ">  </span><span class="Apple-tab-span" style="white-space: pre; "> </span><span class="Apple-tab-span" style="white-space: pre; "> </span>}<br><span class="Apple-tab-span" style="white-space: pre; ">      </span><span class="Apple-tab-span" style="white-space: pre; "> </span>}<br><span class="Apple-tab-span" style="white-space: pre; ">      </span>}<br><br>}<br><br><br><br>Now it is my understanding that if I start erl with:<br>erl -name client<a href="mailto:servernode@127.0.0.1">node@127.0.0.1</a> -setcookie cookie<br><br>I can send messages to the Java node like this:<br>{echo, <a href="mailto:'jinode@127.0.0.1">'jinode@127.0.0.1</a>'} ! {self(), msg}<br><br>However, this message never reaches the java node :( Even though net_adm:ping(<a href="mailto:'jinode@127.0.0.1">'jinode@127.0.0.1</a>') returns pong<br></div></div><br></body></html>