Skip to content

Instantly share code, notes, and snippets.

@mojaie
Created August 26, 2013 08:04
Show Gist options
  • Select an option

  • Save mojaie/6339057 to your computer and use it in GitHub Desktop.

Select an option

Save mojaie/6339057 to your computer and use it in GitHub Desktop.

Revisions

  1. mojaie created this gist Aug 26, 2013.
    44 changes: 44 additions & 0 deletions gistfile1.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,44 @@
    import atexit
    import platform
    import subprocess
    import time
    from py4j.java_gateway import JavaGateway


    class JavaConnection(object):

    JAR_PATH = "./jar/testentrypoint.jar"
    ENTRY_POINT_CLASS = "TestEntryPoint"

    def __init__(self):
    self._gateway = None
    self._process = None
    cmd = ["java", "-jar", self.JAR_PATH, self.ENTRY_POINT_CLASS]
    if platform.system() == "Windows":
    cmd[0] = "javaw"
    self._process = subprocess.Popen(cmd)
    print "JVM started: " + str(self._process.pid)
    atexit.register(self.kill)
    time.sleep(1) # waiting for JVM start up
    self._gateway = JavaGateway()

    def getString(self):
    return self._gateway.entry_point.getString()

    def kill(self):
    if self._gateway != None:
    self._gateway.shutdown()
    self._gateway = None
    if self._process != None:
    self._process.kill()
    print "JVM killed: " + str(self._process.pid)
    self._process = None


    def main():
    jcon = JavaConnection()
    print jcon.getString()
    jcon.kill()

    if __name__ == "__main__":
    main()