It seems most documentation or helper libraries relating to JNI (Java Native Interface) are concerned with calling native code from Java. This seems to be the main use of it, ev
I had pretty much the same problems, ended up doing it on my own, maybe this helps someone.
https://github.com/mo22/jnipp
It has a small runtime footprint (<30kb), manages references, and supports generating Java class interfaces. I.e. LocalRef> stringArray; and then using stringArray[1]->getBytes() or something.
What about using Thrift or Protocol Buffers to facilitate your Java to C++ calls?
Since CORBA doesn't seem to be what you want, here are links describing how to start JVM from C/C++ and calling JAVA-methods.
http://java.sun.com/docs/books/jni/html/invoke.html and http://java.sys-con.com/node/45840
PS: When interfacing Java with C++ you should also have a look at JNA or bridj.