[erlang-questions] Erlang-Java interface through ordinary ports
Tue Jul 12 01:39:33 CEST 2011
It is easiest to use the jinterface library for this task, since it is included within OTP/Erlang. The version value is included within the jinterface code that is needed for port communication. Most people use system out/in for ports, but then you are unable to get any print statements, which can be annoying... and often stderr is lost. If you look at CloudI (http://cloudi.org/), it makes sure to open a port (using C++ loader code to exec the JVM) which starts a bunch of sockets with deterministic file descriptor numbers (starting at 3), then uses the jinterface library to encode/decode Erlang data used in the Java CloudI API. So, the example is more complex, but it avoids stdout/stderr (1/2) and handles those separately within the C++ loader code (sending it back as port communication). The higher-level usage of jinterface is similar to what you want, if you ignore some of the magic to make the integer file descriptors work within the java source code
On 07/11/2011 03:14 PM, Daniel Dormont wrote:
> Hello Erlangers,
> I would like to have an Erlang application (specifically the auth_external module in Ejabberd) communicate with a Java program I am writing. Not as a node, but rather using the port driver API, since that is what Ejabberd already supports. From the information I've seen, it shouldn't be too terribly hard - just listen for data in System.in, look for a two-byte chunk that when read as a short specifies the number of additional bytes to read, and repeat. I'm just wondering if this is something that's considered normal and reasonable to do, any gotchas I should be aware of, etc.
> The only reason I'm picking Java is the rest of my application is Java and I'd like to reuse some libraries and such.
> erlang-questions mailing list
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the erlang-questions