
require 'drb'

include Java
$global_java = java

class JProxy
  include DRb::DRbUndumped

  def initialize(java_object)
    @implementation = java_object
  end

  def __getobj__
    @implementation
  end

  def to_s
    @implementation.to_s
  end

  def method_missing(sel, *args)
    result = @implementation.__send__(sel, *args)
    if result.kind_of?(::Java)
      result = ::JProxy.new(result)
    end
    result
  end

end

class TestServer
  def java
    ::JProxy.new($global_java)
  end
end

server = TestServer.new
DRb.start_service('druby://localhost:9000', server)
DRb.thread.join # Don't exit just yet!


