I've used the following approach successfully in production systems where the new MS Word XML format isn't available:
Spawn a process that does something similar to:
You'd probably want to start openoffice up once at startup of your program, and call the python script as many times during your program that you need to (with some sort of checking to ensure the ooffice process is always there).
The other option is to spawn the following sort of command every time you need to do the conversion:
ooffice -headless "macro://"
I've used the macro approach multiple times and it works well (sorry, I don't have the macro code available).
While there are mechanisms for doing it via MS Word, they're not easy from Java, and do require other support programs to drive MS Word via OLE.
I've used abiword before too, which works well for many documents, but does get confused with more complex documents (ooffice seems to handle everything I've thrown at it). Abiword has a slightly easier command line interface for conversion than ooffice.