[Date Index] [Thread Index] [Author Index]
Re: JLink to remote kernel not possible?
At 01:21 AM 12/2/2004, Zeno Crivelli wrote: >I have a little java app that does some operations connecting to the >kernel via JLink. > >I use the following lines to get a link to the kernel (locally, on my >PowerBook): >-------- >String argsOSX = "-linkmode launch -linkname >'\"/Applications/Mathematica 5.0.app/Contents/MacOS/MathKernel\" >-mathlink'"; >KernelLink ml = MathLinkFactory.createKernelLink(argsOSX); >-------- > >Now, here is what I would like to do (probably a newbie question): > >I have access (via ssh) to a remote kernel ('math' command) on my Unix >machine (let's call it host1.mydomain.edu) which is running >Mathematica 5.0 for Sun Solaris. >I would like my java app to use the remote kernel (on the unix host) >instead of the one installed on my PowerBook (so that I can use the >java app from other computers where there's not Mathematica >installed). Is there a way to do that? I was dreaming it was something >trivial like make the remote kernel listen to a specific port (let's >say 60000) and then, on the java client, use something like >"createKernelLink(...name:pass at host1.mydomain.edu:60000)"...but of >course createKernelLink doesn't seem to accept a remote host as >parameter. > >Please, can anybody help? Zeno, The argument to createKernelLink() is a string or array of the same arguments that all MathLink programs use, so you can find discussion of how to setup a remote Mathematica kernel in various places, including threads in this group. The J/Link User Guide, in fact, has an example of how to do exactly what you want. Find the J/Link docs in the AddOns & Links tab of the Help Browser and look at the section Part 2: Writing Java Programs That Use Mathematica/Creating Links with MathLinkFactory. The example uses rsh instead of ssh and it is based on a Windows client, but it will be easy to modify for your needs. The example is a bit outdated though, in that it uses the TCP protocol. Make sure you use the newer TCPIP protocol, so where you see "-linkprotocol tcp" replace it with "-linkprotocol tcpip". Todd Gayley Wolfram Research