I've started to run into some really annoying problems using JSR223's interfaces to Rhino:
- poor exception information (see my other SO question)
 - inability to use ScriptableObject (it would be nice to set the Javascript 
foovariable to a Javascript value with properties so that I can setfoo.barto something andfoo.bazto something else. JSR223 just lets me set root global variables to Java values.) - inability to set read-only variables/properties
 
If necessary, I'd consider switching to Rhino as a native scripting engine, but that comes with the pain of not being able to support other languages without a bunch of extra effort.
Is there any better abstraction layer besides JSR223?
I've heard of Bean Scripting Framework but am not sure how it's different/worse/better. I also ran across Scripturian and have no idea about that.