JMS for CPython via JPype?

David David
Sat Nov 6 01:57:25 EST 2004


On Tue, 2 Nov 2004 18:19:25 +0100, Wolfgang Keller
<wolfgang.keller.nospam at gmx.de> wrote:

>Hello,
>
>sorry for the potentially dumb question, but - would JPype make it possible 
>for a CPython program to use JMS? It seems that JMS is going to become a
>standard for (java-based) MOM, so as an excellent middleware language it
>should be possible for CPython to somehow "talk" (and understand) JMS...
>

Your question intrigued me, so I gave it a try. And the anwer (at
least for JMS Publish/Subscribe TextMessages) is YES.

The example I wrote is too long to include here, but you can get it at
http://home.comcast.net/~david.g.morgenthaler/Jpypejms.zip. It
includes:
- Java classes for a publisher (src/messaging/JpypePublisher) and a
subscriber (src/messaging/JpypeSubscriber). These Java classes, which
do most of the dirty work of connecting to the JMS server, are used
from python via jpype.
- Java classes that test the publisher and subscriber
(src/messaging/testJpepePublisher, src/messaging/testJpypeSubscriber)
- A Java interface that is used by python for the JProxy
- python scripts for publishing and subscribing
- An build.xml for ant to build and run the Java classes

The  Java and python publishers and subscribers work in any reasonable
combination (J pub/J sub, J pub/p sub, p pub/p sub, p pub/J sub, and
even with multiple subscribers)

Unzip to a conveniently located folder. You'll find a build.xml for
ant to build the Java. You'll have to edit (in the testers and in the
python scripts) the naming and connection factory stuff for your
situation. You'll also have to edit the python scripts to correctly
locate your jvm and other classpath information. Once you're correctly
configured, you can use ant to build and/or execute the Java (type
"ant help"). And once the Java is built, you can try the python
versions.

I can't imagine that this approach wouldn't work for JMS Queues. And
while I haven't tested it, I don't see anything preventing the use of
other message types (BinaryMessage, ObjectMessage,...).

BTW, I don't detect any noticable slowdown in the python versions from
the Java versions (probably because of the strightforward conversion
of python strings to Java Strings).

HTH,
Dave




More information about the Python-list mailing list