Forum: JRuby Non-Java user; using Java Classes in JRuby

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
John S. (Guest)
on 2008-10-13 14:05
(Received via mailing list)
Although I'm by no means the worlds best coder I've managed to get (with
the help of several people on here!) JRuby + JDBC and JRuby-LDAP to do
almost everything I want now. However I'm looking to replace some legacy
Python code that uses the Spread messaging system to synchronise jobs on
various different systems. As the Ruby Spread client relies on a C
component I'm trying to use the java library instead.

I've built the spread jar and it's installed in my CLASSPATH, but I'm
struggling a little to figure out how to import the classes (the spread
documentation just shows an 'import spread.*' which doesn't seem to work
in JRuby; I *think* the actual path is java.spread.*) and setup a new
connection. The spread tutorial lists the following code to create a new
connection:

import spread.*
SpreadConnection connection = new SpreadConnection();
connection.connect(address, 0, "privatename", false, false);
... do stuff....
connection.disconnect

I assume I will need to do something like:

require "java"
import java.spread.*
connection = java.spread.SpreadConnection()
connection.connect(,,,,)
...
connection.disconnect

Other than JDBC, for which I was able to find some really nice examples
for, I haven't needed to touch the Java functionality so far - so it's
unexplored territory for me! Does anyone have a simple example of how I
can make the spread classes available so that I can setup a new
connection?

Cheers

John
---
 Unix & Web Infrastructure Management
 Faculty of Medical Sciences Computing
 University of Newcastle

 Email : removed_email_address@domain.invalid
 Web: http://www.ncl.ac.uk/medev


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email
John S. (Guest)
on 2008-10-14 11:56
(Received via mailing list)
A bit of looking back through the mail archive and I think I answered my
own question; the following seems to run without issue:

require "java"
import "spread.SpreadConnection"
import "spread.SpreadMessage"
begin
  sConnection = SpreadConnection.new
  sConnection.connect(nil, 4803, "conn_name", false, false)
  # actual stuff goes here
  sConnection.disconnect
rescue
  puts "sendSpread - Connection failure"
end

I've a bit of head scratching to do with regard to the actual message
construction - it's not quite as simple as the Python API where you can
just pass a block of text to send... but I'm sure I'll figure that bit
out, at least I can now actually connect to our existing spread groups
that we have running.

John
---
 Unix & Web Infrastructure Management
 Faculty of Medical Sciences Computing
 University of Newcastle
 Email : removed_email_address@domain.invalid
 Web: http://www.ncl.ac.uk/medev


>various different systems. As the Ruby Spread client relies on a C
>SpreadConnection connection = new SpreadConnection();
>...
>John
>To unsubscribe from this list, please visit:
>
>    http://xircles.codehaus.org/manage_email
>


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email
Johnny P (Guest)
on 2008-10-14 20:12
(Received via mailing list)
You may need to setup your classpath correctly.  If you want the ruby
script to be executable then I oftern do this...

["#{File.dirname __FILE__}/../build/", "#{File.dirname
__FILE__}/../lib/"].concat(Dir["#{File.dirname
__FILE__}/../lib/*.jar"]).each { |jar| $CLASSPATH << jar }

The idea is to update $CLASSPATH prior to your imports.

On Mon, Oct 13, 2008 at 7:54 AM, John S.
<removed_email_address@domain.invalid> wrote:
> rescue
>  Email : removed_email_address@domain.invalid
>>the help of several people on here!) JRuby + JDBC and JRuby-LDAP to do
>>connection:
>>import java.spread.*
>>
>>
>
>    http://xircles.codehaus.org/manage_email
>
>
>

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email
This topic is locked and can not be replied to.