<html> <head> <title>Interface XJavaVM</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" type="text/css" href="../../../../idl.css"> </head> <body> <div id="adc-idlref"> <a name="_top_"> </a><table class="navimain" border="0" cellpadding="3"> <tr> <td class="navimain"><a href="../module-ix.html" class="navimain">Overview</a></td> <td class="navimain"><a href="module-ix.html" class="navimain">Module</a></td> <td class="navimain"><a href="XJavaVM-xref.html" class="navimain">Use</a></td> <td class="navimainnone">Devguide</td> <td class="navimain"><a href="../../../../index-files/index-1.html" class="navimain">Index</a></td> </tr> </table> <table class="navisub" border="0" cellpadding="0"> <tr> <td class="navisub"><a href="#MethodsSummary" class="navisub">Methods' Summary</a></td> <td class="navisub">Attributes' Summary</td> <td class="navisub"><a href="#MethodsDetails" class="navisub">Methods' Details</a></td> <td class="navisub">Attributes' Details</td> </tr> </table> <hr> <table border="0" width="100%" cellpadding="5" cellspacing="3" class="title-table" style="margin-bottom:6pt;"> <tr> <td><p class="namechain"><a href="../../../../module-ix.html" class="namechain">::</a> <a href="../../../module-ix.html" class="namechain">com</a> :: <a href="../../module-ix.html" class="namechain">sun</a> :: <a href="../module-ix.html" class="namechain">star</a> :: <a href="module-ix.html" class="namechain">java</a> :: </p> </td> </tr> <tr> <td class="title"><table class="title-table" width="99%"> <tr> <td width="25%" class="title2">deprecated </td> <td width="50%" class="title">interface XJavaVM</td> <td width="*"/></tr> </table> </td> </tr> <tr> <td/></tr> <tr> <td><dl> <dt><b>Usage Restrictions</b></dt> <dd><i>deprecated</i></dd> <dt><b>Deprecation Info</b></dt> <dd>A UNO interface seems to be at the wrong abstraction level for this functionality (also, the C++ classes <code>jvmaccess::VirtualMachine</code> and <code>jvmaccess::UnoVirtualMachine</code> used by <a href="XJavaVM.html">XJavaVM</a>::<a href="XJavaVM.html#getJavaVM">getJavaVM</a> are not part of the public C++ UNO runtime API). This should probably be replaced by an appropriate C/C++ API. </dd> <dt><b>Description</b></dt> <dd>must be implemented by the user of the XJavaVM. </dd> </dl> </td> </tr> </table> <hr> <a name="MethodsSummary"/><table border="1" width="100%" cellpadding="5" cellspacing="0" class="subtitle"> <tr> <td class="subtitle" colspan="2">Methods' Summary</td> </tr> <tr> <td class="imsum_left"><a href="#getJavaVM">getJavaVM</a></td> <td class="imsum_right">returns the address of the Java Virtual Machine. </td> </tr> <tr> <td class="imsum_left"><a href="#isVMStarted">isVMStarted</a></td> <td class="imsum_right">returns <b>true</b> if the VM is started successfully, otherwise <b>false</b>. </td> </tr> <tr> <td class="imsum_left"><a href="#isVMEnabled">isVMEnabled</a></td> <td class="imsum_right">Returns <b>true</b> if the VM is enabled. </td> </tr> </table> <a name="MethodsDetails"/><table border="1" width="100%" cellpadding="5" cellspacing="0" class="subtitle"> <tr> <td class="subtitle">Methods' Details</td> </tr> <tr> <td class="imdetail"><a name="getJavaVM" class="membertitle">getJavaVM</a><table border="0" width="96%" cellpadding="5" cellspacing="0" class="table-in-method" bgcolor="#ffffff" align="center"> <tr> <td><table class="table-in-method" border="0"> <tr> <td valign="top" colspan="3">any</td> </tr> <tr> <td valign="top"><b>getJavaVM</b>(</td> <td valign="top">[in] sequence< byte ></td> <td valign="bottom"> processID );</td> </tr> </table> <hr> <dl> <dt><b>Description</b></dt> <dd>returns the address of the Java Virtual Machine. </dd> <dd><p>If the VM is not already instantiated, it will be now.</p> <p>If the <code>processID</code> is a normal 16-byte ID, the returned <code>any</code> contains a JNI <code>JavaVM</code> pointer as a <code>long</code> or <code>hyper</code> integer (depending on the platform). If the <code>processID</code> does not match the current process, or if the VM cannot be instantiated for whatever reason, a <b>void</b> <code>any</code> is returned.</p> <p>If the <code>processID</code> has an additional 17th byte of value <code>0</code>, the returned <code>any</code> contains a non–reference-counted pointer to a (reference-counted) instance of the C++ <code>jvmaccess::VirtualMachine</code> class, always represented as a <code>hyper</code> integer. The pointer is guaranteed to be valid as long as the reference to this <a href="XJavaVM.html">XJavaVM</a> is valid (but the pointer should be converted into a reference-counted reference as soon as possible). Again, if the first 16 bytes of the <code>processID</code> do not match the current process, or if the VM cannot be instantiated for whatever reason, a <b>void</b> <code>any</code> is returned.</p> <p>If the <code>processID</code> has an additional 17th byte of value <code>1</code>, the returned <code>any</code> contains a non–reference-counted pointer to a (reference-counted) instance of the C++ <code>jvmaccess::UnoVirtualMachine</code> class, always represented as a <code>hyper</code> integer. The pointer is guaranteed to be valid as long as the reference to this <a href="XJavaVM.html">XJavaVM</a> is valid. Again, if the first 16 bytes of the <code>processID</code> do not match the current process, or if the VM cannot be instantiated for whatever reason, a <b>void</b> <code>any</code> is returned.</p> <p>The first form (returning a JNI <code>JavaVM</code> pointer) is mainly for backwards compatibility, new code should use the second form (returning a pointer to a <code>jvmaccess::VirtualMachine</code>) if it does not want to use the Java UNO environment, and it should use the third form (returning a pointer to a <code>jvmaccess::UnoVirtualMachine</code>) if it wants to use the Java UNO environment. For example, one advantage of using <code>jvmaccess::VirtualMachine</code> instead of the raw <code>JavaVM</code> pointer is that whenever you attach a native thread to the Java virtual machine, that thread's context <code>ClassLoader</code> (see <code>java.lang.Thread.getContextClassLoader</code>) will automatically be set to a meaningful value.</p> </dd> <dt><b>Parameter processID</b></dt> <dd>The process ID of the caller's process, possibly extended by a 17th byte of value <code>0</code> or <code>1</code>. </dd> <dt><b>Returns</b></dt> <dd>On success, the <code>any</code> contains a pointer represented as <code>long</code> or <code>hyper</code>, otherwise the <code>any</code> is <b>void</b>. </dd> </dl> </td> </tr> </table> </td> </tr> <tr> <td class="imdetail"><a name="isVMStarted" class="membertitle">isVMStarted</a><table border="0" width="96%" cellpadding="5" cellspacing="0" class="table-in-method" bgcolor="#ffffff" align="center"> <tr> <td><table class="table-in-method" border="0"> <tr> <td valign="top" colspan="3">boolean</td> </tr> <tr> <td valign="top"><b>isVMStarted</b>();</td> </tr> </table> <hr> <dl> <dt><b>Description</b></dt> <dd>returns <b>true</b> if the VM is started successfully, otherwise <b>false</b>. </dd> </dl> </td> </tr> </table> </td> </tr> <tr> <td class="imdetail"><a name="isVMEnabled" class="membertitle">isVMEnabled</a><table border="0" width="96%" cellpadding="5" cellspacing="0" class="table-in-method" bgcolor="#ffffff" align="center"> <tr> <td><table class="table-in-method" border="0"> <tr> <td valign="top" colspan="3">boolean</td> </tr> <tr> <td valign="top"><b>isVMEnabled</b>();</td> </tr> </table> <hr> <dl> <dt><b>Description</b></dt> <dd>Returns <b>true</b> if the VM is enabled. </dd> <dd><p>It is only possible to get the VM, if this method return 0. </p> </dd> </dl> </td> </tr> </table> </td> </tr> </table> <a href="#_top_">Top of Page</a><hr size="3"><p class="copyright" align="center">Copyright © 2009 Sun Microsystems, Inc.</p> </div> <!-- id="adc-idlref" --> </body> </html>