Blake,
My plan for calling lisp from java, and for supporting OSGI, is to separate the interface from the implementation. Changing all functions to accept interface arguments and return interface types. When it comes to calling Java methods from lisp, and dealing with properly matching the correct java method I believe the issue would be more easily handled with macro's and caching of reflection objects which probably belongs as an extension library. The apply function is one of the more difficult problems to solve when it comes to interfacing between java and lisp. I faced this issue with Clojure and did eventually find a solution by using eval.
https://github.com/rritoch/clj-grid-kernel/blob/e4b9e7d261e8e5d2a9ce38cc464c6d6fbea414d8/src/com/vnetpublishing/clj/grid/lib/grid/kernel.clj#L99-L110