From: Richard E. de C. <ric...@gm...> - 2014-04-24 20:31:57
|
Jim, Alan, thanks for the hints. > This is the exact use case for Clamp. If interested, I have a write up that introduces this project; https://github.com/jimbaker/clamped, along with a talk, https://github.com/jimbaker/clamped/blob/master/talk.pdf > > Among other things, Clamp ensures that your Python class, as wrapped by a Java proxy, can be resolved by Class.forName or be directly imported from Java. Clamp is also integrated with setuptools and is site-packages aware. Jim, if I understand clamp correctly, it requires that the Jython code is compiled into class files at build time. I am looking for a solution that works at runtime without the need for special build tooling. I want people to be able to implement a simple Jython script and execute it. The script internally calls Java code which tries to instantiate a class defined in the script using Java reflection. Can clamp do that? > The best way to illustrate this is with code that does it. Modjy is one example in the code base, that uses a servlet implemented in jython to provide WSGI capability to servlet containers. > > The key piece of code is here. > > http://hg.python.org/jython/file/45b3007473f9/src/com/xhaus/modjy/ModjyJServlet.java#l116 Alan, it sounds like the __tojava__ call might do what I want. I wonder, shouldn't the classloader that is used by the Jython scripts (the one which also can add additional JARs to the syspath) be able to transparently call that when a class object for a class defined in Jython is requested? Is it just that nobody implemented this so far, or is it because it is in fact not as straight forward as it seems in the sample code you offered? Cheers, -- Richard |