JRuby 1.4.0RC3 java integration problem?

View: New views
6 Messages — Rating Filter:   Alert me  

JRuby 1.4.0RC3 java integration problem?

by Lenny Marks :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I just gave 1.4RC3 a quick wirl but I'm seeing some issues. We are  
running Jruby/Rails apps that integrate with older Spring/Hibernate  
service/models. We're basically using a  
SingleHibernateSessionPerRequest strategy using ThreadLocal bound  
hibernate sessions. These apps have been around for quite a while and  
are working with Jruby-1.3.1. When I drop in 1.4RC3 I start getting  
LazyInitializationExceptions from Hibernate. Tracking down a bit, it  
seems to stem from calling 'sort' on a Hibernate collection. Below is  
some output from Rails console.

-lenny

m = Manuscript.find_by_accode('CNR802')
=> #<Java::OrgApsEopModelManuscript::Manuscript:0x465652da>

 >> m.lengthChecks
=> #<Java::OrgHibernateCollection::PersistentBag:0x1b7163cc>

 >> m.lengthChecks.sort_by {|a| a.enteredDate }
=> [#<Java::OrgApsEopModelManuscript::LengthCheck:0x40d699ad>]
 >>

?> m.lengthChecks.sort {|a, b| 0 }
ERROR org.hibernate.LazyInitializationException (<init>) - failed to  
lazily initialize a collection, no session or session was closed
org.hibernate.LazyInitializationException: failed to lazily initialize  
a collection, no session or session was closed
        at  
org
.hibernate
.collection
.AbstractPersistentCollection
.throwLazyInitializationException(AbstractPersistentCollection.java:358)
        at  
org
.hibernate
.collection
.AbstractPersistentCollection
.throwLazyInitializationExceptionIfNotConnected
(AbstractPersistentCollection.java:350)
        at  
org
.hibernate
.collection
.AbstractPersistentCollection
.initialize(AbstractPersistentCollection.java:343)
        at  
org
.hibernate
.collection
.AbstractPersistentCollection.write(AbstractPersistentCollection.java:
183)
        at org.hibernate.collection.PersistentBag.addAll(PersistentBag.java:
311)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at  
sun
.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
39)
        at  
sun
.reflect
.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at  
org
.jruby
.javasupport
.JavaMethod.invokeDirectWithExceptionHandling(JavaMethod.java:450)
        at org.jruby.javasupport.JavaMethod.invokeDirect(JavaMethod.java:308)
        at  
org
.jruby
.java.invokers.InstanceMethodInvoker.call(InstanceMethodInvoker.java:50)
        at  
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:
147)
        at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
        at  
org
.jruby
.internal
.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:155)
        at  
org
.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:
161)
        at  
org
.jruby
.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:300)
        at  
org
.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:
118)
        at  
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:
123)
        at org.jruby.ast.CallNoArgBlockNode.interpret(CallNoArgBlockNode.java:
64)
        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
        at org.jruby.ast.RootNode.interpret(RootNode.java:129)
        at  
org.jruby.evaluator.ASTInterpreter.evalWithBinding(ASTInterpreter.java:
98)
        at org.jruby.RubyKernel.eval(RubyKernel.java:966)
        at org.jruby.RubyKernel$s_method_0_3$RUBYFRAMEDINVOKER$eval.call(org/
jruby/RubyKernel$s_method_0_3$RUBYFRAMEDINVOKER$eval.gen)
        at  
org
.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:
150)
        at  
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:67)
        at org.jruby.ast.FCallManyArgsNode.interpret(FCallManyArgsNode.java:60)
        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
        at  
org
.jruby
.internal
.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:112)
        at  
org
.jruby
.internal
.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:124)
        at  
org
.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:
144)
        at  
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:67)
        at org.jruby.ast.CallManyArgsNode.interpret(CallManyArgsNode.java:59)
        at org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
        at  
org
.jruby
.internal
.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:210)
        at  
org
.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:
185)
        at  
org
.jruby
.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:330)
        at  
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:
189)
        at org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59)
        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
        at org.jruby.ast.RescueNode.executeBody(RescueNode.java:225)
        at  
org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:
147)
        at org.jruby.ast.RescueNode.interpret(RescueNode.java:110)
        at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
        at  
org.jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:
317)
        at org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:251)
        at  
org.jruby.runtime.InterpretedBlock.yieldSpecific(InterpretedBlock.java:
185)
        at org.jruby.runtime.Block.yieldSpecific(Block.java:99)
        at org.jruby.ast.ZYieldNode.interpret(ZYieldNode.java:25)
        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
        at org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
        at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
        at  
org
.jruby
.internal
.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:192)
        at  
org
.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:
177)
        at  
org
.jruby
.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:320)
        at  
org
.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:
158)
        at  
org
.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:
173)
        at  
org.jruby.ast.FCallOneArgBlockNode.interpret(FCallOneArgBlockNode.java:
34)
        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
        at  
org.jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:
317)
        at  
org.jruby.runtime.InterpretedBlock.yieldSpecific(InterpretedBlock.java:
216)
        at org.jruby.runtime.Block.yieldSpecific(Block.java:117)
        at org.jruby.ast.YieldTwoNode.interpret(YieldTwoNode.java:31)
        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
        at org.jruby.ast.IfNode.interpret(IfNode.java:117)
        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
        at org.jruby.ast.RescueNode.executeBody(RescueNode.java:225)
        at  
org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:
147)
        at org.jruby.ast.RescueNode.interpret(RescueNode.java:110)
        at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
        at  
org.jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:
317)
        at org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:268)
        at org.jruby.runtime.Block.yield(Block.java:194)
        at org.jruby.RubyKernel.loop_1_9(RubyKernel.java:1182)
        at org.jruby.RubyKernel$s_method_0_0$RUBYFRAMEDINVOKER
$loop_1_9.call(org/jruby/RubyKernel$s_method_0_0$RUBYFRAMEDINVOKER
$loop_1_9.gen)
        at  
org
.jruby
.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:300)
        at  
org
.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:
118)
        at  
org
.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:
133)
        at  
org.jruby.ast.FCallNoArgBlockNode.interpret(FCallNoArgBlockNode.java:32)
        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
        at  
org.jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:
317)
        at org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:268)
        at org.jruby.runtime.Block.yield(Block.java:194)
        at org.jruby.RubyKernel.rbCatch(RubyKernel.java:1014)
        at org.jruby.RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER
$rbCatch.call(org/jruby/RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER
$rbCatch.gen)
        at  
org
.jruby
.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:320)
        at  
org
.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:
158)
        at  
org
.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:
173)
        at  
org.jruby.ast.FCallOneArgBlockNode.interpret(FCallOneArgBlockNode.java:
34)
        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
        at  
org
.jruby
.internal
.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:155)
        at  
org
.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:
161)
        at  
org
.jruby
.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:300)
        at  
org
.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:
118)
        at  
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:
123)
        at org.jruby.ast.CallNoArgBlockNode.interpret(CallNoArgBlockNode.java:
64)
        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
        at  
org
.jruby
.internal
.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:136)
        at  
org
.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:
153)
        at  
org
.jruby
.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:290)
        at  
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:
109)
        at org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:61)
        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
        at  
org.jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:
317)
        at org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:268)
        at org.jruby.runtime.Block.yield(Block.java:194)
        at org.jruby.RubyKernel.rbCatch(RubyKernel.java:1014)
        at org.jruby.RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER
$rbCatch.call(org/jruby/RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER
$rbCatch.gen)
        at  
org
.jruby
.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:320)
        at  
org
.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:
158)
        at  
org
.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:
173)
        at  
org.jruby.ast.FCallOneArgBlockNode.interpret(FCallOneArgBlockNode.java:
34)
        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
        at  
org
.jruby
.internal
.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:173)
        at  
org
.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:
169)
        at  
org
.jruby
.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:310)
        at  
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:
149)
        at Users.Shared.jruby.bin.jirb.__file__(jirb:19)
        at Users.Shared.jruby.bin.jirb.load(jirb)
        at org.jruby.Ruby.runScript(Ruby.java:628)
        at org.jruby.Ruby.runNormally(Ruby.java:550)
        at org.jruby.Ruby.runFromMain(Ruby.java:396)
        at org.jruby.Main.run(Main.java:272)
        at org.jruby.Main.run(Main.java:117)
        at org.jruby.util.ShellLauncher
$ScriptThreadProcess.run(ShellLauncher.java:105)
        at java.lang.Thread.run(Thread.java:637)
NativeException: org.hibernate.LazyInitializationException: failed to  
lazily initialize a collection, no session or session was closed
        from org/hibernate/collection/AbstractPersistentCollection.java:
358:in `throwLazyInitializationException'
        from org/hibernate/collection/AbstractPersistentCollection.java:
350:in `throwLazyInitializationExceptionIfNotConnected'
        from org/hibernate/collection/AbstractPersistentCollection.java:
343:in `initialize'
        from org/hibernate/collection/AbstractPersistentCollection.java:
183:in `write'
        from org/hibernate/collection/PersistentBag.java:311:in `addAll'
        from /Users/Shared/jruby/lib/ruby/site_ruby/shared/builtin/java/
java.util.rb:105:in `sort'
        from (irb):22


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

    http://xircles.codehaus.org/manage_email



Re: JRuby 1.4.0RC3 java integration problem?

by Charles Oliver Nutter-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

This is very peculiar. First things first...toss this into a bug report.

There's only one thing I can think of that might interfere with
thread-local stuff, and that's the Enumerator#next logic we had to
introduce for JRuby's 1.8.7 support. That doesn't appear to be in play
here, since from jirb on down it's all one thread's stack trace. I'm
stumped at the moment.

I wonder if the session is getting GCed or weakly referenced
somewhere? Where does Hibernate keep that thread-local session?

This feels like something we want to fix, if we can find it. It's
coming a little late in the game, however, and I don't have any ideas
right now. If it's not something we can pin down right away, it may
force a 1.4.1 to come along a bit later.

Help us help you :) We're standing by.

On Fri, Oct 30, 2009 at 1:30 PM, Lenny Marks <lenny@...> wrote:

> I just gave 1.4RC3 a quick wirl but I'm seeing some issues. We are running
> Jruby/Rails apps that integrate with older Spring/Hibernate service/models.
> We're basically using a SingleHibernateSessionPerRequest strategy using
> ThreadLocal bound hibernate sessions. These apps have been around for quite
> a while and are working with Jruby-1.3.1. When I drop in 1.4RC3 I start
> getting LazyInitializationExceptions from Hibernate. Tracking down a bit, it
> seems to stem from calling 'sort' on a Hibernate collection. Below is some
> output from Rails console.
>
> -lenny
>
> m = Manuscript.find_by_accode('CNR802')
> => #<Java::OrgApsEopModelManuscript::Manuscript:0x465652da>
>
>>> m.lengthChecks
> => #<Java::OrgHibernateCollection::PersistentBag:0x1b7163cc>
>
>>> m.lengthChecks.sort_by {|a| a.enteredDate }
> => [#<Java::OrgApsEopModelManuscript::LengthCheck:0x40d699ad>]
>>>
>
> ?> m.lengthChecks.sort {|a, b| 0 }
> ERROR org.hibernate.LazyInitializationException (<init>) - failed to lazily
> initialize a collection, no session or session was closed
> org.hibernate.LazyInitializationException: failed to lazily initialize a
> collection, no session or session was closed
>        at
> org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
>        at
> org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)
>        at
> org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:343)
>        at
> org.hibernate.collection.AbstractPersistentCollection.write(AbstractPersistentCollection.java:183)
>        at
> org.hibernate.collection.PersistentBag.addAll(PersistentBag.java:311)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:597)
>        at
> org.jruby.javasupport.JavaMethod.invokeDirectWithExceptionHandling(JavaMethod.java:450)
>        at org.jruby.javasupport.JavaMethod.invokeDirect(JavaMethod.java:308)
>        at
> org.jruby.java.invokers.InstanceMethodInvoker.call(InstanceMethodInvoker.java:50)
>        at
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:147)
>        at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>        at
> org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:155)
>        at
> org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:161)
>        at
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:300)
>        at
> org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:118)
>        at
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:123)
>        at
> org.jruby.ast.CallNoArgBlockNode.interpret(CallNoArgBlockNode.java:64)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at org.jruby.ast.RootNode.interpret(RootNode.java:129)
>        at
> org.jruby.evaluator.ASTInterpreter.evalWithBinding(ASTInterpreter.java:98)
>        at org.jruby.RubyKernel.eval(RubyKernel.java:966)
>        at
> org.jruby.RubyKernel$s_method_0_3$RUBYFRAMEDINVOKER$eval.call(org/jruby/RubyKernel$s_method_0_3$RUBYFRAMEDINVOKER$eval.gen)
>        at
> org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:150)
>        at
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:67)
>        at
> org.jruby.ast.FCallManyArgsNode.interpret(FCallManyArgsNode.java:60)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at
> org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:112)
>        at
> org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:124)
>        at
> org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:144)
>        at
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:67)
>        at org.jruby.ast.CallManyArgsNode.interpret(CallManyArgsNode.java:59)
>        at org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>        at
> org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:210)
>        at
> org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:185)
>        at
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:330)
>        at
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:189)
>        at org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>        at org.jruby.ast.RescueNode.executeBody(RescueNode.java:225)
>        at
> org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:147)
>        at org.jruby.ast.RescueNode.interpret(RescueNode.java:110)
>        at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>        at
> org.jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:317)
>        at
> org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:251)
>        at
> org.jruby.runtime.InterpretedBlock.yieldSpecific(InterpretedBlock.java:185)
>        at org.jruby.runtime.Block.yieldSpecific(Block.java:99)
>        at org.jruby.ast.ZYieldNode.interpret(ZYieldNode.java:25)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
>        at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>        at
> org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:192)
>        at
> org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:177)
>        at
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:320)
>        at
> org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:158)
>        at
> org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:173)
>        at
> org.jruby.ast.FCallOneArgBlockNode.interpret(FCallOneArgBlockNode.java:34)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at
> org.jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:317)
>        at
> org.jruby.runtime.InterpretedBlock.yieldSpecific(InterpretedBlock.java:216)
>        at org.jruby.runtime.Block.yieldSpecific(Block.java:117)
>        at org.jruby.ast.YieldTwoNode.interpret(YieldTwoNode.java:31)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at org.jruby.ast.IfNode.interpret(IfNode.java:117)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>        at org.jruby.ast.RescueNode.executeBody(RescueNode.java:225)
>        at
> org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:147)
>        at org.jruby.ast.RescueNode.interpret(RescueNode.java:110)
>        at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at
> org.jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:317)
>        at
> org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:268)
>        at org.jruby.runtime.Block.yield(Block.java:194)
>        at org.jruby.RubyKernel.loop_1_9(RubyKernel.java:1182)
>        at
> org.jruby.RubyKernel$s_method_0_0$RUBYFRAMEDINVOKER$loop_1_9.call(org/jruby/RubyKernel$s_method_0_0$RUBYFRAMEDINVOKER$loop_1_9.gen)
>        at
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:300)
>        at
> org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:118)
>        at
> org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:133)
>        at
> org.jruby.ast.FCallNoArgBlockNode.interpret(FCallNoArgBlockNode.java:32)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at
> org.jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:317)
>        at
> org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:268)
>        at org.jruby.runtime.Block.yield(Block.java:194)
>        at org.jruby.RubyKernel.rbCatch(RubyKernel.java:1014)
>        at
> org.jruby.RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER$rbCatch.call(org/jruby/RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER$rbCatch.gen)
>        at
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:320)
>        at
> org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:158)
>        at
> org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:173)
>        at
> org.jruby.ast.FCallOneArgBlockNode.interpret(FCallOneArgBlockNode.java:34)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>        at
> org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:155)
>        at
> org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:161)
>        at
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:300)
>        at
> org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:118)
>        at
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:123)
>        at
> org.jruby.ast.CallNoArgBlockNode.interpret(CallNoArgBlockNode.java:64)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>        at
> org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:136)
>        at
> org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:153)
>        at
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:290)
>        at
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:109)
>        at org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:61)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at
> org.jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:317)
>        at
> org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:268)
>        at org.jruby.runtime.Block.yield(Block.java:194)
>        at org.jruby.RubyKernel.rbCatch(RubyKernel.java:1014)
>        at
> org.jruby.RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER$rbCatch.call(org/jruby/RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER$rbCatch.gen)
>        at
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:320)
>        at
> org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:158)
>        at
> org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:173)
>        at
> org.jruby.ast.FCallOneArgBlockNode.interpret(FCallOneArgBlockNode.java:34)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>        at
> org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:173)
>        at
> org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:169)
>        at
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:310)
>        at
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:149)
>        at Users.Shared.jruby.bin.jirb.__file__(jirb:19)
>        at Users.Shared.jruby.bin.jirb.load(jirb)
>        at org.jruby.Ruby.runScript(Ruby.java:628)
>        at org.jruby.Ruby.runNormally(Ruby.java:550)
>        at org.jruby.Ruby.runFromMain(Ruby.java:396)
>        at org.jruby.Main.run(Main.java:272)
>        at org.jruby.Main.run(Main.java:117)
>        at
> org.jruby.util.ShellLauncher$ScriptThreadProcess.run(ShellLauncher.java:105)
>        at java.lang.Thread.run(Thread.java:637)
> NativeException: org.hibernate.LazyInitializationException: failed to lazily
> initialize a collection, no session or session was closed
>        from
> org/hibernate/collection/AbstractPersistentCollection.java:358:in
> `throwLazyInitializationException'
>        from
> org/hibernate/collection/AbstractPersistentCollection.java:350:in
> `throwLazyInitializationExceptionIfNotConnected'
>        from
> org/hibernate/collection/AbstractPersistentCollection.java:343:in
> `initialize'
>        from
> org/hibernate/collection/AbstractPersistentCollection.java:183:in `write'
>        from org/hibernate/collection/PersistentBag.java:311:in `addAll'
>        from
> /Users/Shared/jruby/lib/ruby/site_ruby/shared/builtin/java/java.util.rb:105:in
> `sort'
>        from (irb):22
>
>
> ---------------------------------------------------------------------
> 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



Re: JRuby 1.4.0RC3 java integration problem?

by Thomas E Enebo :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

We figured this problem out:
http://jira.codehaus.org/browse/JRUBY-4190

It will be in 1.4.0 final and committed very soon.  Thanks for
bringing this to our attention.

-Tom

On Fri, Oct 30, 2009 at 1:30 PM, Lenny Marks <lenny@...> wrote:

> I just gave 1.4RC3 a quick wirl but I'm seeing some issues. We are running
> Jruby/Rails apps that integrate with older Spring/Hibernate service/models.
> We're basically using a SingleHibernateSessionPerRequest strategy using
> ThreadLocal bound hibernate sessions. These apps have been around for quite
> a while and are working with Jruby-1.3.1. When I drop in 1.4RC3 I start
> getting LazyInitializationExceptions from Hibernate. Tracking down a bit, it
> seems to stem from calling 'sort' on a Hibernate collection. Below is some
> output from Rails console.
>
> -lenny
>
> m = Manuscript.find_by_accode('CNR802')
> => #<Java::OrgApsEopModelManuscript::Manuscript:0x465652da>
>
>>> m.lengthChecks
> => #<Java::OrgHibernateCollection::PersistentBag:0x1b7163cc>
>
>>> m.lengthChecks.sort_by {|a| a.enteredDate }
> => [#<Java::OrgApsEopModelManuscript::LengthCheck:0x40d699ad>]
>>>
>
> ?> m.lengthChecks.sort {|a, b| 0 }
> ERROR org.hibernate.LazyInitializationException (<init>) - failed to lazily
> initialize a collection, no session or session was closed
> org.hibernate.LazyInitializationException: failed to lazily initialize a
> collection, no session or session was closed
>        at
> org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
>        at
> org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)
>        at
> org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:343)
>        at
> org.hibernate.collection.AbstractPersistentCollection.write(AbstractPersistentCollection.java:183)
>        at
> org.hibernate.collection.PersistentBag.addAll(PersistentBag.java:311)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:597)
>        at
> org.jruby.javasupport.JavaMethod.invokeDirectWithExceptionHandling(JavaMethod.java:450)
>        at org.jruby.javasupport.JavaMethod.invokeDirect(JavaMethod.java:308)
>        at
> org.jruby.java.invokers.InstanceMethodInvoker.call(InstanceMethodInvoker.java:50)
>        at
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:147)
>        at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>        at
> org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:155)
>        at
> org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:161)
>        at
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:300)
>        at
> org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:118)
>        at
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:123)
>        at
> org.jruby.ast.CallNoArgBlockNode.interpret(CallNoArgBlockNode.java:64)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at org.jruby.ast.RootNode.interpret(RootNode.java:129)
>        at
> org.jruby.evaluator.ASTInterpreter.evalWithBinding(ASTInterpreter.java:98)
>        at org.jruby.RubyKernel.eval(RubyKernel.java:966)
>        at
> org.jruby.RubyKernel$s_method_0_3$RUBYFRAMEDINVOKER$eval.call(org/jruby/RubyKernel$s_method_0_3$RUBYFRAMEDINVOKER$eval.gen)
>        at
> org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:150)
>        at
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:67)
>        at
> org.jruby.ast.FCallManyArgsNode.interpret(FCallManyArgsNode.java:60)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at
> org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:112)
>        at
> org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:124)
>        at
> org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:144)
>        at
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:67)
>        at org.jruby.ast.CallManyArgsNode.interpret(CallManyArgsNode.java:59)
>        at org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>        at
> org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:210)
>        at
> org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:185)
>        at
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:330)
>        at
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:189)
>        at org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>        at org.jruby.ast.RescueNode.executeBody(RescueNode.java:225)
>        at
> org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:147)
>        at org.jruby.ast.RescueNode.interpret(RescueNode.java:110)
>        at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>        at
> org.jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:317)
>        at
> org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:251)
>        at
> org.jruby.runtime.InterpretedBlock.yieldSpecific(InterpretedBlock.java:185)
>        at org.jruby.runtime.Block.yieldSpecific(Block.java:99)
>        at org.jruby.ast.ZYieldNode.interpret(ZYieldNode.java:25)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
>        at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>        at
> org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:192)
>        at
> org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:177)
>        at
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:320)
>        at
> org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:158)
>        at
> org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:173)
>        at
> org.jruby.ast.FCallOneArgBlockNode.interpret(FCallOneArgBlockNode.java:34)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at
> org.jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:317)
>        at
> org.jruby.runtime.InterpretedBlock.yieldSpecific(InterpretedBlock.java:216)
>        at org.jruby.runtime.Block.yieldSpecific(Block.java:117)
>        at org.jruby.ast.YieldTwoNode.interpret(YieldTwoNode.java:31)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at org.jruby.ast.IfNode.interpret(IfNode.java:117)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>        at org.jruby.ast.RescueNode.executeBody(RescueNode.java:225)
>        at
> org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:147)
>        at org.jruby.ast.RescueNode.interpret(RescueNode.java:110)
>        at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at
> org.jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:317)
>        at
> org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:268)
>        at org.jruby.runtime.Block.yield(Block.java:194)
>        at org.jruby.RubyKernel.loop_1_9(RubyKernel.java:1182)
>        at
> org.jruby.RubyKernel$s_method_0_0$RUBYFRAMEDINVOKER$loop_1_9.call(org/jruby/RubyKernel$s_method_0_0$RUBYFRAMEDINVOKER$loop_1_9.gen)
>        at
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:300)
>        at
> org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:118)
>        at
> org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:133)
>        at
> org.jruby.ast.FCallNoArgBlockNode.interpret(FCallNoArgBlockNode.java:32)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at
> org.jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:317)
>        at
> org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:268)
>        at org.jruby.runtime.Block.yield(Block.java:194)
>        at org.jruby.RubyKernel.rbCatch(RubyKernel.java:1014)
>        at
> org.jruby.RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER$rbCatch.call(org/jruby/RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER$rbCatch.gen)
>        at
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:320)
>        at
> org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:158)
>        at
> org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:173)
>        at
> org.jruby.ast.FCallOneArgBlockNode.interpret(FCallOneArgBlockNode.java:34)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>        at
> org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:155)
>        at
> org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:161)
>        at
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:300)
>        at
> org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:118)
>        at
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:123)
>        at
> org.jruby.ast.CallNoArgBlockNode.interpret(CallNoArgBlockNode.java:64)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>        at
> org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:136)
>        at
> org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:153)
>        at
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:290)
>        at
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:109)
>        at org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:61)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at
> org.jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:317)
>        at
> org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:268)
>        at org.jruby.runtime.Block.yield(Block.java:194)
>        at org.jruby.RubyKernel.rbCatch(RubyKernel.java:1014)
>        at
> org.jruby.RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER$rbCatch.call(org/jruby/RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER$rbCatch.gen)
>        at
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:320)
>        at
> org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:158)
>        at
> org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:173)
>        at
> org.jruby.ast.FCallOneArgBlockNode.interpret(FCallOneArgBlockNode.java:34)
>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>        at
> org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:173)
>        at
> org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:169)
>        at
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:310)
>        at
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:149)
>        at Users.Shared.jruby.bin.jirb.__file__(jirb:19)
>        at Users.Shared.jruby.bin.jirb.load(jirb)
>        at org.jruby.Ruby.runScript(Ruby.java:628)
>        at org.jruby.Ruby.runNormally(Ruby.java:550)
>        at org.jruby.Ruby.runFromMain(Ruby.java:396)
>        at org.jruby.Main.run(Main.java:272)
>        at org.jruby.Main.run(Main.java:117)
>        at
> org.jruby.util.ShellLauncher$ScriptThreadProcess.run(ShellLauncher.java:105)
>        at java.lang.Thread.run(Thread.java:637)
> NativeException: org.hibernate.LazyInitializationException: failed to lazily
> initialize a collection, no session or session was closed
>        from
> org/hibernate/collection/AbstractPersistentCollection.java:358:in
> `throwLazyInitializationException'
>        from
> org/hibernate/collection/AbstractPersistentCollection.java:350:in
> `throwLazyInitializationExceptionIfNotConnected'
>        from
> org/hibernate/collection/AbstractPersistentCollection.java:343:in
> `initialize'
>        from
> org/hibernate/collection/AbstractPersistentCollection.java:183:in `write'
>        from org/hibernate/collection/PersistentBag.java:311:in `addAll'
>        from
> /Users/Shared/jruby/lib/ruby/site_ruby/shared/builtin/java/java.util.rb:105:in
> `sort'
>        from (irb):22
>
>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
>   http://xircles.codehaus.org/manage_email
>
>
>



--
blog: http://blog.enebo.com       twitter: tom_enebo
mail: tom.enebo@...

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

    http://xircles.codehaus.org/manage_email



Re: JRuby 1.4.0RC3 java integration problem?

by Lenny Marks :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Great! I was hoping a lightbulb would go off in someone's head. That  
was going to be hard one to reproduce outside of my env. given the  
dependency on Hibernate and all that.

Thanks!
-lenny

On Oct 30, 2009, at 3:55 PM, Thomas E Enebo wrote:

> We figured this problem out:
> http://jira.codehaus.org/browse/JRUBY-4190
>
> It will be in 1.4.0 final and committed very soon.  Thanks for
> bringing this to our attention.
>
> -Tom
>
> On Fri, Oct 30, 2009 at 1:30 PM, Lenny Marks <lenny@...> wrote:
>> I just gave 1.4RC3 a quick wirl but I'm seeing some issues. We are  
>> running
>> Jruby/Rails apps that integrate with older Spring/Hibernate service/
>> models.
>> We're basically using a SingleHibernateSessionPerRequest strategy  
>> using
>> ThreadLocal bound hibernate sessions. These apps have been around  
>> for quite
>> a while and are working with Jruby-1.3.1. When I drop in 1.4RC3 I  
>> start
>> getting LazyInitializationExceptions from Hibernate. Tracking down  
>> a bit, it
>> seems to stem from calling 'sort' on a Hibernate collection. Below  
>> is some
>> output from Rails console.
>>
>> -lenny
>>
>> m = Manuscript.find_by_accode('CNR802')
>> => #<Java::OrgApsEopModelManuscript::Manuscript:0x465652da>
>>
>>>> m.lengthChecks
>> => #<Java::OrgHibernateCollection::PersistentBag:0x1b7163cc>
>>
>>>> m.lengthChecks.sort_by {|a| a.enteredDate }
>> => [#<Java::OrgApsEopModelManuscript::LengthCheck:0x40d699ad>]
>>>>
>>
>> ?> m.lengthChecks.sort {|a, b| 0 }
>> ERROR org.hibernate.LazyInitializationException (<init>) - failed  
>> to lazily
>> initialize a collection, no session or session was closed
>> org.hibernate.LazyInitializationException: failed to lazily  
>> initialize a
>> collection, no session or session was closed
>>        at
>> org
>> .hibernate
>> .collection
>> .AbstractPersistentCollection
>> .throwLazyInitializationException(AbstractPersistentCollection.java:
>> 358)
>>        at
>> org
>> .hibernate
>> .collection
>> .AbstractPersistentCollection
>> .throwLazyInitializationExceptionIfNotConnected
>> (AbstractPersistentCollection.java:350)
>>        at
>> org
>> .hibernate
>> .collection
>> .AbstractPersistentCollection
>> .initialize(AbstractPersistentCollection.java:343)
>>        at
>> org
>> .hibernate
>> .collection
>> .AbstractPersistentCollection
>> .write(AbstractPersistentCollection.java:183)
>>        at
>> org.hibernate.collection.PersistentBag.addAll(PersistentBag.java:311)
>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>        at
>> sun
>> .reflect
>> .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>        at
>> sun
>> .reflect
>> .DelegatingMethodAccessorImpl
>> .invoke(DelegatingMethodAccessorImpl.java:25)
>>        at java.lang.reflect.Method.invoke(Method.java:597)
>>        at
>> org
>> .jruby
>> .javasupport
>> .JavaMethod.invokeDirectWithExceptionHandling(JavaMethod.java:450)
>>        at  
>> org.jruby.javasupport.JavaMethod.invokeDirect(JavaMethod.java:308)
>>        at
>> org
>> .jruby
>> .java
>> .invokers.InstanceMethodInvoker.call(InstanceMethodInvoker.java:50)
>>        at
>> org
>> .jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:
>> 147)
>>        at  
>> org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
>>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>>        at
>> org
>> .jruby
>> .internal
>> .runtime.methods.InterpretedMethod.call(InterpretedMethod.java:155)
>>        at
>> org
>> .jruby
>> .internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:161)
>>        at
>> org
>> .jruby
>> .runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:
>> 300)
>>        at
>> org
>> .jruby
>> .runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:118)
>>        at
>> org
>> .jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:
>> 123)
>>        at
>> org.jruby.ast.CallNoArgBlockNode.interpret(CallNoArgBlockNode.java:
>> 64)
>>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>        at org.jruby.ast.RootNode.interpret(RootNode.java:129)
>>        at
>> org
>> .jruby.evaluator.ASTInterpreter.evalWithBinding(ASTInterpreter.java:
>> 98)
>>        at org.jruby.RubyKernel.eval(RubyKernel.java:966)
>>        at
>> org.jruby.RubyKernel$s_method_0_3$RUBYFRAMEDINVOKER$eval.call(org/
>> jruby/RubyKernel$s_method_0_3$RUBYFRAMEDINVOKER$eval.gen)
>>        at
>> org
>> .jruby
>> .internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:150)
>>        at
>> org
>> .jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:67)
>>        at
>> org.jruby.ast.FCallManyArgsNode.interpret(FCallManyArgsNode.java:60)
>>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>        at
>> org
>> .jruby
>> .internal
>> .runtime.methods.InterpretedMethod.call(InterpretedMethod.java:112)
>>        at
>> org
>> .jruby
>> .internal
>> .runtime.methods.InterpretedMethod.call(InterpretedMethod.java:124)
>>        at
>> org
>> .jruby
>> .internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:144)
>>        at
>> org
>> .jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:67)
>>        at  
>> org.jruby.ast.CallManyArgsNode.interpret(CallManyArgsNode.java:59)
>>        at  
>> org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
>>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>>        at
>> org
>> .jruby
>> .internal
>> .runtime.methods.InterpretedMethod.call(InterpretedMethod.java:210)
>>        at
>> org
>> .jruby
>> .internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:185)
>>        at
>> org
>> .jruby
>> .runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:
>> 330)
>>        at
>> org
>> .jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:
>> 189)
>>        at  
>> org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59)
>>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>>        at org.jruby.ast.RescueNode.executeBody(RescueNode.java:225)
>>        at
>> org
>> .jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:
>> 147)
>>        at org.jruby.ast.RescueNode.interpret(RescueNode.java:110)
>>        at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
>>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>>        at
>> org
>> .jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:
>> 317)
>>        at
>> org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:251)
>>        at
>> org
>> .jruby.runtime.InterpretedBlock.yieldSpecific(InterpretedBlock.java:
>> 185)
>>        at org.jruby.runtime.Block.yieldSpecific(Block.java:99)
>>        at org.jruby.ast.ZYieldNode.interpret(ZYieldNode.java:25)
>>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>        at org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
>>        at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
>>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>>        at
>> org
>> .jruby
>> .internal
>> .runtime.methods.InterpretedMethod.call(InterpretedMethod.java:192)
>>        at
>> org
>> .jruby
>> .internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:177)
>>        at
>> org
>> .jruby
>> .runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:
>> 320)
>>        at
>> org
>> .jruby
>> .runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:158)
>>        at
>> org
>> .jruby
>> .runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:173)
>>        at
>> org
>> .jruby.ast.FCallOneArgBlockNode.interpret(FCallOneArgBlockNode.java:
>> 34)
>>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>        at
>> org
>> .jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:
>> 317)
>>        at
>> org
>> .jruby.runtime.InterpretedBlock.yieldSpecific(InterpretedBlock.java:
>> 216)
>>        at org.jruby.runtime.Block.yieldSpecific(Block.java:117)
>>        at org.jruby.ast.YieldTwoNode.interpret(YieldTwoNode.java:31)
>>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>        at org.jruby.ast.IfNode.interpret(IfNode.java:117)
>>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>>        at org.jruby.ast.RescueNode.executeBody(RescueNode.java:225)
>>        at
>> org
>> .jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:
>> 147)
>>        at org.jruby.ast.RescueNode.interpret(RescueNode.java:110)
>>        at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
>>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>        at
>> org
>> .jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:
>> 317)
>>        at
>> org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:268)
>>        at org.jruby.runtime.Block.yield(Block.java:194)
>>        at org.jruby.RubyKernel.loop_1_9(RubyKernel.java:1182)
>>        at
>> org.jruby.RubyKernel$s_method_0_0$RUBYFRAMEDINVOKER
>> $loop_1_9.call(org/jruby/RubyKernel$s_method_0_0$RUBYFRAMEDINVOKER
>> $loop_1_9.gen)
>>        at
>> org
>> .jruby
>> .runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:
>> 300)
>>        at
>> org
>> .jruby
>> .runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:118)
>>        at
>> org
>> .jruby
>> .runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:133)
>>        at
>> org
>> .jruby.ast.FCallNoArgBlockNode.interpret(FCallNoArgBlockNode.java:32)
>>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>        at
>> org
>> .jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:
>> 317)
>>        at
>> org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:268)
>>        at org.jruby.runtime.Block.yield(Block.java:194)
>>        at org.jruby.RubyKernel.rbCatch(RubyKernel.java:1014)
>>        at
>> org.jruby.RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER
>> $rbCatch.call(org/jruby/RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER
>> $rbCatch.gen)
>>        at
>> org
>> .jruby
>> .runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:
>> 320)
>>        at
>> org
>> .jruby
>> .runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:158)
>>        at
>> org
>> .jruby
>> .runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:173)
>>        at
>> org
>> .jruby.ast.FCallOneArgBlockNode.interpret(FCallOneArgBlockNode.java:
>> 34)
>>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>>        at
>> org
>> .jruby
>> .internal
>> .runtime.methods.InterpretedMethod.call(InterpretedMethod.java:155)
>>        at
>> org
>> .jruby
>> .internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:161)
>>        at
>> org
>> .jruby
>> .runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:
>> 300)
>>        at
>> org
>> .jruby
>> .runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:118)
>>        at
>> org
>> .jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:
>> 123)
>>        at
>> org.jruby.ast.CallNoArgBlockNode.interpret(CallNoArgBlockNode.java:
>> 64)
>>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>>        at
>> org
>> .jruby
>> .internal
>> .runtime.methods.InterpretedMethod.call(InterpretedMethod.java:136)
>>        at
>> org
>> .jruby
>> .internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:153)
>>        at
>> org
>> .jruby
>> .runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:
>> 290)
>>        at
>> org
>> .jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:
>> 109)
>>        at org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:
>> 61)
>>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>        at
>> org
>> .jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:
>> 317)
>>        at
>> org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:268)
>>        at org.jruby.runtime.Block.yield(Block.java:194)
>>        at org.jruby.RubyKernel.rbCatch(RubyKernel.java:1014)
>>        at
>> org.jruby.RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER
>> $rbCatch.call(org/jruby/RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER
>> $rbCatch.gen)
>>        at
>> org
>> .jruby
>> .runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:
>> 320)
>>        at
>> org
>> .jruby
>> .runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:158)
>>        at
>> org
>> .jruby
>> .runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:173)
>>        at
>> org
>> .jruby.ast.FCallOneArgBlockNode.interpret(FCallOneArgBlockNode.java:
>> 34)
>>        at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>        at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>>        at
>> org
>> .jruby
>> .internal
>> .runtime.methods.InterpretedMethod.call(InterpretedMethod.java:173)
>>        at
>> org
>> .jruby
>> .internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:169)
>>        at
>> org
>> .jruby
>> .runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:
>> 310)
>>        at
>> org
>> .jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:
>> 149)
>>        at Users.Shared.jruby.bin.jirb.__file__(jirb:19)
>>        at Users.Shared.jruby.bin.jirb.load(jirb)
>>        at org.jruby.Ruby.runScript(Ruby.java:628)
>>        at org.jruby.Ruby.runNormally(Ruby.java:550)
>>        at org.jruby.Ruby.runFromMain(Ruby.java:396)
>>        at org.jruby.Main.run(Main.java:272)
>>        at org.jruby.Main.run(Main.java:117)
>>        at
>> org.jruby.util.ShellLauncher
>> $ScriptThreadProcess.run(ShellLauncher.java:105)
>>        at java.lang.Thread.run(Thread.java:637)
>> NativeException: org.hibernate.LazyInitializationException: failed  
>> to lazily
>> initialize a collection, no session or session was closed
>>        from
>> org/hibernate/collection/AbstractPersistentCollection.java:358:in
>> `throwLazyInitializationException'
>>        from
>> org/hibernate/collection/AbstractPersistentCollection.java:350:in
>> `throwLazyInitializationExceptionIfNotConnected'
>>        from
>> org/hibernate/collection/AbstractPersistentCollection.java:343:in
>> `initialize'
>>        from
>> org/hibernate/collection/AbstractPersistentCollection.java:183:in  
>> `write'
>>        from org/hibernate/collection/PersistentBag.java:311:in  
>> `addAll'
>>        from
>> /Users/Shared/jruby/lib/ruby/site_ruby/shared/builtin/java/
>> java.util.rb:105:in
>> `sort'
>>        from (irb):22
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe from this list, please visit:
>>
>>   http://xircles.codehaus.org/manage_email
>>
>>
>>
>
>
>
> --
> blog: http://blog.enebo.com       twitter: tom_enebo
> mail: tom.enebo@...
>
> ---------------------------------------------------------------------
> 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



Re: JRuby 1.4.0RC3 java integration problem?

by Charles Oliver Nutter-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

If you're able, *please* try to confirm against jruby-1_4 branch or
master. We're still on schedule for a final release monday, since the
only two issues that have come in were softballs with hacks or
workarounds (though they're both fixed for 1.4).

On Fri, Oct 30, 2009 at 3:35 PM, Lenny Marks <lenny@...> wrote:

> Great! I was hoping a lightbulb would go off in someone's head. That was
> going to be hard one to reproduce outside of my env. given the dependency on
> Hibernate and all that.
>
> Thanks!
> -lenny
>
> On Oct 30, 2009, at 3:55 PM, Thomas E Enebo wrote:
>
>> We figured this problem out:
>> http://jira.codehaus.org/browse/JRUBY-4190
>>
>> It will be in 1.4.0 final and committed very soon.  Thanks for
>> bringing this to our attention.
>>
>> -Tom
>>
>> On Fri, Oct 30, 2009 at 1:30 PM, Lenny Marks <lenny@...> wrote:
>>>
>>> I just gave 1.4RC3 a quick wirl but I'm seeing some issues. We are
>>> running
>>> Jruby/Rails apps that integrate with older Spring/Hibernate
>>> service/models.
>>> We're basically using a SingleHibernateSessionPerRequest strategy using
>>> ThreadLocal bound hibernate sessions. These apps have been around for
>>> quite
>>> a while and are working with Jruby-1.3.1. When I drop in 1.4RC3 I start
>>> getting LazyInitializationExceptions from Hibernate. Tracking down a bit,
>>> it
>>> seems to stem from calling 'sort' on a Hibernate collection. Below is
>>> some
>>> output from Rails console.
>>>
>>> -lenny
>>>
>>> m = Manuscript.find_by_accode('CNR802')
>>> => #<Java::OrgApsEopModelManuscript::Manuscript:0x465652da>
>>>
>>>>> m.lengthChecks
>>>
>>> => #<Java::OrgHibernateCollection::PersistentBag:0x1b7163cc>
>>>
>>>>> m.lengthChecks.sort_by {|a| a.enteredDate }
>>>
>>> => [#<Java::OrgApsEopModelManuscript::LengthCheck:0x40d699ad>]
>>>>>
>>>
>>> ?> m.lengthChecks.sort {|a, b| 0 }
>>> ERROR org.hibernate.LazyInitializationException (<init>) - failed to
>>> lazily
>>> initialize a collection, no session or session was closed
>>> org.hibernate.LazyInitializationException: failed to lazily initialize a
>>> collection, no session or session was closed
>>>       at
>>>
>>> org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
>>>       at
>>>
>>> org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)
>>>       at
>>>
>>> org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:343)
>>>       at
>>>
>>> org.hibernate.collection.AbstractPersistentCollection.write(AbstractPersistentCollection.java:183)
>>>       at
>>> org.hibernate.collection.PersistentBag.addAll(PersistentBag.java:311)
>>>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>       at
>>>
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>       at
>>>
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>       at java.lang.reflect.Method.invoke(Method.java:597)
>>>       at
>>>
>>> org.jruby.javasupport.JavaMethod.invokeDirectWithExceptionHandling(JavaMethod.java:450)
>>>       at
>>> org.jruby.javasupport.JavaMethod.invokeDirect(JavaMethod.java:308)
>>>       at
>>>
>>> org.jruby.java.invokers.InstanceMethodInvoker.call(InstanceMethodInvoker.java:50)
>>>       at
>>> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:147)
>>>       at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>       at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>>>       at
>>>
>>> org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:155)
>>>       at
>>>
>>> org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:161)
>>>       at
>>>
>>> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:300)
>>>       at
>>>
>>> org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:118)
>>>       at
>>> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:123)
>>>       at
>>> org.jruby.ast.CallNoArgBlockNode.interpret(CallNoArgBlockNode.java:64)
>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>       at org.jruby.ast.RootNode.interpret(RootNode.java:129)
>>>       at
>>>
>>> org.jruby.evaluator.ASTInterpreter.evalWithBinding(ASTInterpreter.java:98)
>>>       at org.jruby.RubyKernel.eval(RubyKernel.java:966)
>>>       at
>>>
>>> org.jruby.RubyKernel$s_method_0_3$RUBYFRAMEDINVOKER$eval.call(org/jruby/RubyKernel$s_method_0_3$RUBYFRAMEDINVOKER$eval.gen)
>>>       at
>>>
>>> org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:150)
>>>       at
>>> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:67)
>>>       at
>>> org.jruby.ast.FCallManyArgsNode.interpret(FCallManyArgsNode.java:60)
>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>       at
>>>
>>> org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:112)
>>>       at
>>>
>>> org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:124)
>>>       at
>>>
>>> org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:144)
>>>       at
>>> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:67)
>>>       at
>>> org.jruby.ast.CallManyArgsNode.interpret(CallManyArgsNode.java:59)
>>>       at org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>       at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>>>       at
>>>
>>> org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:210)
>>>       at
>>>
>>> org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:185)
>>>       at
>>>
>>> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:330)
>>>       at
>>> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:189)
>>>       at org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59)
>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>       at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>>>       at org.jruby.ast.RescueNode.executeBody(RescueNode.java:225)
>>>       at
>>> org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:147)
>>>       at org.jruby.ast.RescueNode.interpret(RescueNode.java:110)
>>>       at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>       at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>>>       at
>>>
>>> org.jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:317)
>>>       at
>>> org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:251)
>>>       at
>>>
>>> org.jruby.runtime.InterpretedBlock.yieldSpecific(InterpretedBlock.java:185)
>>>       at org.jruby.runtime.Block.yieldSpecific(Block.java:99)
>>>       at org.jruby.ast.ZYieldNode.interpret(ZYieldNode.java:25)
>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>       at org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
>>>       at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>       at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>>>       at
>>>
>>> org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:192)
>>>       at
>>>
>>> org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:177)
>>>       at
>>>
>>> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:320)
>>>       at
>>>
>>> org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:158)
>>>       at
>>>
>>> org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:173)
>>>       at
>>>
>>> org.jruby.ast.FCallOneArgBlockNode.interpret(FCallOneArgBlockNode.java:34)
>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>       at
>>>
>>> org.jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:317)
>>>       at
>>>
>>> org.jruby.runtime.InterpretedBlock.yieldSpecific(InterpretedBlock.java:216)
>>>       at org.jruby.runtime.Block.yieldSpecific(Block.java:117)
>>>       at org.jruby.ast.YieldTwoNode.interpret(YieldTwoNode.java:31)
>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>       at org.jruby.ast.IfNode.interpret(IfNode.java:117)
>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>       at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>>>       at org.jruby.ast.RescueNode.executeBody(RescueNode.java:225)
>>>       at
>>> org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:147)
>>>       at org.jruby.ast.RescueNode.interpret(RescueNode.java:110)
>>>       at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>       at
>>>
>>> org.jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:317)
>>>       at
>>> org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:268)
>>>       at org.jruby.runtime.Block.yield(Block.java:194)
>>>       at org.jruby.RubyKernel.loop_1_9(RubyKernel.java:1182)
>>>       at
>>>
>>> org.jruby.RubyKernel$s_method_0_0$RUBYFRAMEDINVOKER$loop_1_9.call(org/jruby/RubyKernel$s_method_0_0$RUBYFRAMEDINVOKER$loop_1_9.gen)
>>>       at
>>>
>>> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:300)
>>>       at
>>>
>>> org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:118)
>>>       at
>>>
>>> org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:133)
>>>       at
>>> org.jruby.ast.FCallNoArgBlockNode.interpret(FCallNoArgBlockNode.java:32)
>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>       at
>>>
>>> org.jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:317)
>>>       at
>>> org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:268)
>>>       at org.jruby.runtime.Block.yield(Block.java:194)
>>>       at org.jruby.RubyKernel.rbCatch(RubyKernel.java:1014)
>>>       at
>>>
>>> org.jruby.RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER$rbCatch.call(org/jruby/RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER$rbCatch.gen)
>>>       at
>>>
>>> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:320)
>>>       at
>>>
>>> org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:158)
>>>       at
>>>
>>> org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:173)
>>>       at
>>>
>>> org.jruby.ast.FCallOneArgBlockNode.interpret(FCallOneArgBlockNode.java:34)
>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>       at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>>>       at
>>>
>>> org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:155)
>>>       at
>>>
>>> org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:161)
>>>       at
>>>
>>> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:300)
>>>       at
>>>
>>> org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:118)
>>>       at
>>> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:123)
>>>       at
>>> org.jruby.ast.CallNoArgBlockNode.interpret(CallNoArgBlockNode.java:64)
>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>       at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>>>       at
>>>
>>> org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:136)
>>>       at
>>>
>>> org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:153)
>>>       at
>>>
>>> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:290)
>>>       at
>>> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:109)
>>>       at org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:61)
>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>       at
>>>
>>> org.jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:317)
>>>       at
>>> org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:268)
>>>       at org.jruby.runtime.Block.yield(Block.java:194)
>>>       at org.jruby.RubyKernel.rbCatch(RubyKernel.java:1014)
>>>       at
>>>
>>> org.jruby.RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER$rbCatch.call(org/jruby/RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER$rbCatch.gen)
>>>       at
>>>
>>> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:320)
>>>       at
>>>
>>> org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:158)
>>>       at
>>>
>>> org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:173)
>>>       at
>>>
>>> org.jruby.ast.FCallOneArgBlockNode.interpret(FCallOneArgBlockNode.java:34)
>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>       at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>>>       at
>>>
>>> org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:173)
>>>       at
>>>
>>> org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:169)
>>>       at
>>>
>>> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:310)
>>>       at
>>> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:149)
>>>       at Users.Shared.jruby.bin.jirb.__file__(jirb:19)
>>>       at Users.Shared.jruby.bin.jirb.load(jirb)
>>>       at org.jruby.Ruby.runScript(Ruby.java:628)
>>>       at org.jruby.Ruby.runNormally(Ruby.java:550)
>>>       at org.jruby.Ruby.runFromMain(Ruby.java:396)
>>>       at org.jruby.Main.run(Main.java:272)
>>>       at org.jruby.Main.run(Main.java:117)
>>>       at
>>>
>>> org.jruby.util.ShellLauncher$ScriptThreadProcess.run(ShellLauncher.java:105)
>>>       at java.lang.Thread.run(Thread.java:637)
>>> NativeException: org.hibernate.LazyInitializationException: failed to
>>> lazily
>>> initialize a collection, no session or session was closed
>>>       from
>>> org/hibernate/collection/AbstractPersistentCollection.java:358:in
>>> `throwLazyInitializationException'
>>>       from
>>> org/hibernate/collection/AbstractPersistentCollection.java:350:in
>>> `throwLazyInitializationExceptionIfNotConnected'
>>>       from
>>> org/hibernate/collection/AbstractPersistentCollection.java:343:in
>>> `initialize'
>>>       from
>>> org/hibernate/collection/AbstractPersistentCollection.java:183:in `write'
>>>       from org/hibernate/collection/PersistentBag.java:311:in `addAll'
>>>       from
>>>
>>> /Users/Shared/jruby/lib/ruby/site_ruby/shared/builtin/java/java.util.rb:105:in
>>> `sort'
>>>       from (irb):22
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe from this list, please visit:
>>>
>>>  http://xircles.codehaus.org/manage_email
>>>
>>>
>>>
>>
>>
>>
>> --
>> blog: http://blog.enebo.com       twitter: tom_enebo
>> mail: tom.enebo@...
>>
>> ---------------------------------------------------------------------
>> 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
>
>
>

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

    http://xircles.codehaus.org/manage_email



Re: JRuby 1.4.0RC3 java integration problem?

by Lenny Marks :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


On Oct 30, 2009, at 4:45 PM, Charles Oliver Nutter wrote:

> If you're able, *please* try to confirm against jruby-1_4 branch or
> master. We're still on schedule for a final release monday, since the
> only two issues that have come in were softballs with hacks or
> workarounds (though they're both fixed for 1.4).

Gave it a try against master and it looked good, at least the case  
that failed below. I'll try it out more on Monday.

-lenny

 > jruby -v
jruby 1.5.0.dev (ruby 1.8.7 patchlevel 174) (2009-10-31 6586) (Java  
HotSpot(TM) 64-Bit Server VM 1.6.0_13) [x86_64-java]

>
> On Fri, Oct 30, 2009 at 3:35 PM, Lenny Marks <lenny@...> wrote:
>> Great! I was hoping a lightbulb would go off in someone's head.  
>> That was
>> going to be hard one to reproduce outside of my env. given the  
>> dependency on
>> Hibernate and all that.
>>
>> Thanks!
>> -lenny
>>
>> On Oct 30, 2009, at 3:55 PM, Thomas E Enebo wrote:
>>
>>> We figured this problem out:
>>> http://jira.codehaus.org/browse/JRUBY-4190
>>>
>>> It will be in 1.4.0 final and committed very soon.  Thanks for
>>> bringing this to our attention.
>>>
>>> -Tom
>>>
>>> On Fri, Oct 30, 2009 at 1:30 PM, Lenny Marks <lenny@...> wrote:
>>>>
>>>> I just gave 1.4RC3 a quick wirl but I'm seeing some issues. We are
>>>> running
>>>> Jruby/Rails apps that integrate with older Spring/Hibernate
>>>> service/models.
>>>> We're basically using a SingleHibernateSessionPerRequest strategy  
>>>> using
>>>> ThreadLocal bound hibernate sessions. These apps have been around  
>>>> for
>>>> quite
>>>> a while and are working with Jruby-1.3.1. When I drop in 1.4RC3 I  
>>>> start
>>>> getting LazyInitializationExceptions from Hibernate. Tracking  
>>>> down a bit,
>>>> it
>>>> seems to stem from calling 'sort' on a Hibernate collection.  
>>>> Below is
>>>> some
>>>> output from Rails console.
>>>>
>>>> -lenny
>>>>
>>>> m = Manuscript.find_by_accode('CNR802')
>>>> => #<Java::OrgApsEopModelManuscript::Manuscript:0x465652da>
>>>>
>>>>>> m.lengthChecks
>>>>
>>>> => #<Java::OrgHibernateCollection::PersistentBag:0x1b7163cc>
>>>>
>>>>>> m.lengthChecks.sort_by {|a| a.enteredDate }
>>>>
>>>> => [#<Java::OrgApsEopModelManuscript::LengthCheck:0x40d699ad>]
>>>>>>
>>>>
>>>> ?> m.lengthChecks.sort {|a, b| 0 }
>>>> ERROR org.hibernate.LazyInitializationException (<init>) - failed  
>>>> to
>>>> lazily
>>>> initialize a collection, no session or session was closed
>>>> org.hibernate.LazyInitializationException: failed to lazily  
>>>> initialize a
>>>> collection, no session or session was closed
>>>>       at
>>>>
>>>> org
>>>> .hibernate
>>>> .collection
>>>> .AbstractPersistentCollection
>>>> .throwLazyInitializationException
>>>> (AbstractPersistentCollection.java:358)
>>>>       at
>>>>
>>>> org
>>>> .hibernate
>>>> .collection
>>>> .AbstractPersistentCollection
>>>> .throwLazyInitializationExceptionIfNotConnected
>>>> (AbstractPersistentCollection.java:350)
>>>>       at
>>>>
>>>> org
>>>> .hibernate
>>>> .collection
>>>> .AbstractPersistentCollection
>>>> .initialize(AbstractPersistentCollection.java:343)
>>>>       at
>>>>
>>>> org
>>>> .hibernate
>>>> .collection
>>>> .AbstractPersistentCollection
>>>> .write(AbstractPersistentCollection.java:183)
>>>>       at
>>>> org.hibernate.collection.PersistentBag.addAll(PersistentBag.java:
>>>> 311)
>>>>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native  
>>>> Method)
>>>>       at
>>>>
>>>> sun
>>>> .reflect
>>>> .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>>       at
>>>>
>>>> sun
>>>> .reflect
>>>> .DelegatingMethodAccessorImpl
>>>> .invoke(DelegatingMethodAccessorImpl.java:25)
>>>>       at java.lang.reflect.Method.invoke(Method.java:597)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .javasupport
>>>> .JavaMethod.invokeDirectWithExceptionHandling(JavaMethod.java:450)
>>>>       at
>>>> org.jruby.javasupport.JavaMethod.invokeDirect(JavaMethod.java:308)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .java
>>>> .invokers.InstanceMethodInvoker.call(InstanceMethodInvoker.java:50)
>>>>       at
>>>> org
>>>> .jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:
>>>> 147)
>>>>       at  
>>>> org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
>>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>>       at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .internal
>>>> .runtime.methods.InterpretedMethod.call(InterpretedMethod.java:155)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:
>>>> 161)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .runtime
>>>> .callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:300)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:
>>>> 118)
>>>>       at
>>>> org
>>>> .jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:
>>>> 123)
>>>>       at
>>>> org
>>>> .jruby.ast.CallNoArgBlockNode.interpret(CallNoArgBlockNode.java:64)
>>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>>       at org.jruby.ast.RootNode.interpret(RootNode.java:129)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .evaluator.ASTInterpreter.evalWithBinding(ASTInterpreter.java:98)
>>>>       at org.jruby.RubyKernel.eval(RubyKernel.java:966)
>>>>       at
>>>>
>>>> org.jruby.RubyKernel$s_method_0_3$RUBYFRAMEDINVOKER$eval.call(org/
>>>> jruby/RubyKernel$s_method_0_3$RUBYFRAMEDINVOKER$eval.gen)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:
>>>> 150)
>>>>       at
>>>> org
>>>> .jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:
>>>> 67)
>>>>       at
>>>> org.jruby.ast.FCallManyArgsNode.interpret(FCallManyArgsNode.java:
>>>> 60)
>>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .internal
>>>> .runtime.methods.InterpretedMethod.call(InterpretedMethod.java:112)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .internal
>>>> .runtime.methods.InterpretedMethod.call(InterpretedMethod.java:124)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:
>>>> 144)
>>>>       at
>>>> org
>>>> .jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:
>>>> 67)
>>>>       at
>>>> org.jruby.ast.CallManyArgsNode.interpret(CallManyArgsNode.java:59)
>>>>       at  
>>>> org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
>>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>>       at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .internal
>>>> .runtime.methods.InterpretedMethod.call(InterpretedMethod.java:210)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:
>>>> 185)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .runtime
>>>> .callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:330)
>>>>       at
>>>> org
>>>> .jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:
>>>> 189)
>>>>       at  
>>>> org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59)
>>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>>       at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>>>>       at org.jruby.ast.RescueNode.executeBody(RescueNode.java:225)
>>>>       at
>>>> org
>>>> .jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:
>>>> 147)
>>>>       at org.jruby.ast.RescueNode.interpret(RescueNode.java:110)
>>>>       at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
>>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>>       at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:317)
>>>>       at
>>>> org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:251)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .runtime.InterpretedBlock.yieldSpecific(InterpretedBlock.java:185)
>>>>       at org.jruby.runtime.Block.yieldSpecific(Block.java:99)
>>>>       at org.jruby.ast.ZYieldNode.interpret(ZYieldNode.java:25)
>>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>>       at org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
>>>>       at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
>>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>>       at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .internal
>>>> .runtime.methods.InterpretedMethod.call(InterpretedMethod.java:192)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:
>>>> 177)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .runtime
>>>> .callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:320)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:
>>>> 158)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:
>>>> 173)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .ast.FCallOneArgBlockNode.interpret(FCallOneArgBlockNode.java:34)
>>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:317)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .runtime.InterpretedBlock.yieldSpecific(InterpretedBlock.java:216)
>>>>       at org.jruby.runtime.Block.yieldSpecific(Block.java:117)
>>>>       at org.jruby.ast.YieldTwoNode.interpret(YieldTwoNode.java:31)
>>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>>       at org.jruby.ast.IfNode.interpret(IfNode.java:117)
>>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>>       at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>>>>       at org.jruby.ast.RescueNode.executeBody(RescueNode.java:225)
>>>>       at
>>>> org
>>>> .jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:
>>>> 147)
>>>>       at org.jruby.ast.RescueNode.interpret(RescueNode.java:110)
>>>>       at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
>>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:317)
>>>>       at
>>>> org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:268)
>>>>       at org.jruby.runtime.Block.yield(Block.java:194)
>>>>       at org.jruby.RubyKernel.loop_1_9(RubyKernel.java:1182)
>>>>       at
>>>>
>>>> org.jruby.RubyKernel$s_method_0_0$RUBYFRAMEDINVOKER
>>>> $loop_1_9.call(org/jruby/RubyKernel$s_method_0_0$RUBYFRAMEDINVOKER
>>>> $loop_1_9.gen)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .runtime
>>>> .callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:300)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:
>>>> 118)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:
>>>> 133)
>>>>       at
>>>> org
>>>> .jruby.ast.FCallNoArgBlockNode.interpret(FCallNoArgBlockNode.java:
>>>> 32)
>>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:317)
>>>>       at
>>>> org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:268)
>>>>       at org.jruby.runtime.Block.yield(Block.java:194)
>>>>       at org.jruby.RubyKernel.rbCatch(RubyKernel.java:1014)
>>>>       at
>>>>
>>>> org.jruby.RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER
>>>> $rbCatch.call(org/jruby/RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER
>>>> $rbCatch.gen)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .runtime
>>>> .callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:320)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:
>>>> 158)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:
>>>> 173)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .ast.FCallOneArgBlockNode.interpret(FCallOneArgBlockNode.java:34)
>>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>>       at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .internal
>>>> .runtime.methods.InterpretedMethod.call(InterpretedMethod.java:155)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:
>>>> 161)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .runtime
>>>> .callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:300)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:
>>>> 118)
>>>>       at
>>>> org
>>>> .jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:
>>>> 123)
>>>>       at
>>>> org
>>>> .jruby.ast.CallNoArgBlockNode.interpret(CallNoArgBlockNode.java:64)
>>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>>       at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .internal
>>>> .runtime.methods.InterpretedMethod.call(InterpretedMethod.java:136)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:
>>>> 153)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .runtime
>>>> .callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:290)
>>>>       at
>>>> org
>>>> .jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:
>>>> 109)
>>>>       at org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:
>>>> 61)
>>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:317)
>>>>       at
>>>> org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:268)
>>>>       at org.jruby.runtime.Block.yield(Block.java:194)
>>>>       at org.jruby.RubyKernel.rbCatch(RubyKernel.java:1014)
>>>>       at
>>>>
>>>> org.jruby.RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER
>>>> $rbCatch.call(org/jruby/RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER
>>>> $rbCatch.gen)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .runtime
>>>> .callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:320)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:
>>>> 158)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:
>>>> 173)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .ast.FCallOneArgBlockNode.interpret(FCallOneArgBlockNode.java:34)
>>>>       at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>>>>       at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .internal
>>>> .runtime.methods.InterpretedMethod.call(InterpretedMethod.java:173)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:
>>>> 169)
>>>>       at
>>>>
>>>> org
>>>> .jruby
>>>> .runtime
>>>> .callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:310)
>>>>       at
>>>> org
>>>> .jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:
>>>> 149)
>>>>       at Users.Shared.jruby.bin.jirb.__file__(jirb:19)
>>>>       at Users.Shared.jruby.bin.jirb.load(jirb)
>>>>       at org.jruby.Ruby.runScript(Ruby.java:628)
>>>>       at org.jruby.Ruby.runNormally(Ruby.java:550)
>>>>       at org.jruby.Ruby.runFromMain(Ruby.java:396)
>>>>       at org.jruby.Main.run(Main.java:272)
>>>>       at org.jruby.Main.run(Main.java:117)
>>>>       at
>>>>
>>>> org.jruby.util.ShellLauncher
>>>> $ScriptThreadProcess.run(ShellLauncher.java:105)
>>>>       at java.lang.Thread.run(Thread.java:637)
>>>> NativeException: org.hibernate.LazyInitializationException:  
>>>> failed to
>>>> lazily
>>>> initialize a collection, no session or session was closed
>>>>       from
>>>> org/hibernate/collection/AbstractPersistentCollection.java:358:in
>>>> `throwLazyInitializationException'
>>>>       from
>>>> org/hibernate/collection/AbstractPersistentCollection.java:350:in
>>>> `throwLazyInitializationExceptionIfNotConnected'
>>>>       from
>>>> org/hibernate/collection/AbstractPersistentCollection.java:343:in
>>>> `initialize'
>>>>       from
>>>> org/hibernate/collection/AbstractPersistentCollection.java:183:in  
>>>> `write'
>>>>       from org/hibernate/collection/PersistentBag.java:311:in  
>>>> `addAll'
>>>>       from
>>>>
>>>> /Users/Shared/jruby/lib/ruby/site_ruby/shared/builtin/java/
>>>> java.util.rb:105:in
>>>> `sort'
>>>>       from (irb):22
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe from this list, please visit:
>>>>
>>>>  http://xircles.codehaus.org/manage_email
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> blog: http://blog.enebo.com       twitter: tom_enebo
>>> mail: tom.enebo@...
>>>
>>> ---------------------------------------------------------------------
>>> 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
>>
>>
>>
>
> ---------------------------------------------------------------------
> 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