Try changing: Java.ruby_to_java(Java::custom.ServicesHome.class)
to: Java::custom.ServicesHome.java_class ...though it strikes me that we should really work if we do: Java::custom.ServicesHome Hmmm, may need to look into that, -Tom On Thu, Jul 30, 2009 at 2:36 AM, Mikael Lammentausta<[email protected]> wrote: > I am using JRuby to act as EJB client. > > The attached test case describes the problem I have: > http://pastie.org/563934 > > In essence, after opening the context, I have a problem getting the proper > type cast on the object I receive by RMI. For that, to my understanding, I > would need to call PortableRemoteObject.narrow(). The connection uses the > RMI network layer with its limitations. > For reference, same test case inline: > > > require 'test/unit' > > ### load Java > require 'java' > > import java.util.Hashtable > import javax.naming.InitialContext > import javax.rmi.PortableRemoteObject > > > # load Java libraries > $CLASSPATH << File.join('lib') # custom.ServicesHome > $CLASSPATH << File.join('lib','jboss-javaee.jar') > $CLASSPATH << File.join('lib','oc4jclient.jar') > $CLASSPATH << File.join('lib','ojdl.jar') > > > class PortableRemoteObjectTest < Test::Unit::TestCase > > def setup > env = { > 'java.naming.factory.initial' => > 'com.evermind.server.rmi.RMIInitialContextFactory', > 'java.naming.security.principal' => 'xxx', > 'java.naming.security.credentials' => 'yyy', > 'java.naming.provider.url' => 'rmi://localhost:8888/Services' > } > > # you need to have a proper RMI server set up to test > ctx = InitialContext.new(Hashtable.new(env)) > assert_not_nil ctx > > connection = ctx.lookup("Services") > assert_not_nil connection > > # type cast the correct object. > # this is where the problem is. > home = PortableRemoteObject.narrow( > # java.lang.Object, > Java.ruby_to_java(connection.java_object), > # java.lang.Class > Java.ruby_to_java(Java::custom.ServicesHome.class) > ) > assert_not_nil home > > # Idea here is to do equivalent to this: > #ServicesHome home = (ServicesHome) > PortableRemoteObject.narrow(ctx.lookup("Services"), ServicesHome.class); > > end > > end > > > > -- > -- mikael > -- blog: http://blog.enebo.com twitter: tom_enebo mail: [email protected] --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email
