ibm-information-center/dist/eclipse/plugins/i5OS.ic.rzaha_5.4.0.1/invapiex.htm

350 lines
27 KiB
HTML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en-us" xml:lang="en-us">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="security" content="public" />
<meta name="Robots" content="index,follow" />
<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
<meta name="DC.Type" content="reference" />
<meta name="DC.Title" content="Example: Java Invocation API" />
<meta name="abstract" content="This example follows the standard Invocation API paradigm." />
<meta name="description" content="This example follows the standard Invocation API paradigm." />
<meta name="DC.Relation" scheme="URI" content="invocapi.htm" />
<meta name="DC.Relation" scheme="URI" content="codeex.htm" />
<meta name="DC.Relation" scheme="URI" content="intdatex.htm" />
<meta name="DC.Relation" scheme="URI" content="intnumex.htm" />
<meta name="DC.Relation" scheme="URI" content="intlocex.htm" />
<meta name="DC.Relation" scheme="URI" content="accesspropertytest.htm" />
<meta name="DC.Relation" scheme="URI" content="putgetblobs.htm" />
<meta name="DC.Relation" scheme="URI" content="callex.htm" />
<meta name="DC.Relation" scheme="URI" content="usingpositioneddelete.htm" />
<meta name="DC.Relation" scheme="URI" content="putgetclobs.htm" />
<meta name="DC.Relation" scheme="URI" content="udbdatasourcebind.htm" />
<meta name="DC.Relation" scheme="URI" content="udbdatasourceuse2.htm" />
<meta name="DC.Relation" scheme="URI" content="udbdatasourcebind2.htm" />
<meta name="DC.Relation" scheme="URI" content="dataex.htm" />
<meta name="DC.Relation" scheme="URI" content="udbdatasourcebind.htm" />
<meta name="DC.Relation" scheme="URI" content="putgetdatalinks.htm" />
<meta name="DC.Relation" scheme="URI" content="distinct.htm" />
<meta name="DC.Relation" scheme="URI" content="sqljex.htm" />
<meta name="DC.Relation" scheme="URI" content="jtatxend.htm" />
<meta name="DC.Relation" scheme="URI" content="invalidconnect.htm" />
<meta name="DC.Relation" scheme="URI" content="basicjdbc.htm" />
<meta name="DC.Relation" scheme="URI" content="jtamulticonn.htm" />
<meta name="DC.Relation" scheme="URI" content="udbdatasourceuse.htm" />
<meta name="DC.Relation" scheme="URI" content="pmd.htm" />
<meta name="DC.Relation" scheme="URI" content="usingpositionedupdate.htm" />
<meta name="DC.Relation" scheme="URI" content="resultex.htm" />
<meta name="DC.Relation" scheme="URI" content="sensitive2.htm" />
<meta name="DC.Relation" scheme="URI" content="sensitive.htm" />
<meta name="DC.Relation" scheme="URI" content="connectionpoolingsetup.htm" />
<meta name="DC.Relation" scheme="URI" content="exceptionexample.htm" />
<meta name="DC.Relation" scheme="URI" content="jtatxsuspend.htm" />
<meta name="DC.Relation" scheme="URI" content="jtatxeffect.htm" />
<meta name="DC.Relation" scheme="URI" content="connectionpoolingtest.htm" />
<meta name="DC.Relation" scheme="URI" content="statementpoolingtest.htm" />
<meta name="DC.Relation" scheme="URI" content="updateblobs.htm" />
<meta name="DC.Relation" scheme="URI" content="updateclobs.htm" />
<meta name="DC.Relation" scheme="URI" content="jtamultitx.htm" />
<meta name="DC.Relation" scheme="URI" content="useblobs.htm" />
<meta name="DC.Relation" scheme="URI" content="useclobs.htm" />
<meta name="DC.Relation" scheme="URI" content="jtacommit.htm" />
<meta name="DC.Relation" scheme="URI" content="safegetudts.htm" />
<meta name="DC.Relation" scheme="URI" content="getconnections.htm" />
<meta name="DC.Relation" scheme="URI" content="prepex.htm" />
<meta name="DC.Relation" scheme="URI" content="crdb2cac.htm" />
<meta name="DC.Relation" scheme="URI" content="stateex.htm" />
<meta name="DC.Relation" scheme="URI" content="jaaswrld.htm" />
<meta name="DC.Relation" scheme="URI" content="sampthrd.htm" />
<meta name="DC.Relation" scheme="URI" content="rzahajgsssrcl.htm" />
<meta name="DC.Relation" scheme="URI" content="rzahajgsssrsr.htm" />
<meta name="DC.Relation" scheme="URI" content="rzahajgssjacl.htm" />
<meta name="DC.Relation" scheme="URI" content="rzahajgssjasr.htm" />
<meta name="DC.Relation" scheme="URI" content="rzahajsseexmpls.htm" />
<meta name="DC.Relation" scheme="URI" content="callclex.htm" />
<meta name="DC.Relation" scheme="URI" content="clcommex.htm" />
<meta name="DC.Relation" scheme="URI" content="jvlngex1.htm" />
<meta name="DC.Relation" scheme="URI" content="callcex.htm" />
<meta name="DC.Relation" scheme="URI" content="calrpgex.htm" />
<meta name="DC.Relation" scheme="URI" content="iostrmex.htm" />
<meta name="DC.Relation" scheme="URI" content="rzahapaseexmpls.htm" />
<meta name="DC.Relation" scheme="URI" content="jniex.htm" />
<meta name="DC.Relation" scheme="URI" content="socketex.htm" />
<meta name="DC.Relation" scheme="URI" content="runjpdex.htm" />
<meta name="DC.Relation" scheme="URI" content="sqljex.htm" />
<meta name="DC.Relation" scheme="URI" content="sslcex01.htm" />
<meta name="DC.Relation" scheme="URI" content="sslcex03.htm" />
<meta name="DC.Relation" scheme="URI" content="sslcex02.htm" />
<meta name="DC.Relation" scheme="URI" content="sslcex04.htm" />
<meta name="copyright" content="(C) Copyright IBM Corporation 2006" />
<meta name="DC.Rights.Owner" content="(C) Copyright IBM Corporation 2006" />
<meta name="DC.Format" content="XHTML" />
<meta name="DC.Identifier" content="invapiex" />
<meta name="DC.Language" content="en-us" />
<!-- All rights reserved. Licensed Materials Property of IBM -->
<!-- US Government Users Restricted Rights -->
<!-- Use, duplication or disclosure restricted by -->
<!-- GSA ADP Schedule Contract with IBM Corp. -->
<link rel="stylesheet" type="text/css" href="./ibmdita.css" />
<link rel="stylesheet" type="text/css" href="./ic.css" />
<title>Example: Java Invocation API</title>
</head>
<body id="invapiex"><a name="invapiex"><!-- --></a>
<!-- Java sync-link --><script language="Javascript" src="../rzahg/synch.js" type="text/javascript"></script>
<h1 class="topictitle1">Example: Java Invocation API</h1>
<div><p>This example follows the standard Invocation API paradigm.</p>
<div class="section"><p>It does the following:</p>
<ul><li>Creates a Java™ virtual machine by using JNI_CreateJavaVM.</li>
<li>Uses the Java virtual machine to find the class file that you
want to run.</li>
<li>Finds the methodID for the main method of the class.</li>
<li>Calls the main method of the class.</li>
<li>Reports errors if an exception occurs.</li>
</ul>
<p>When you create the program, the QJVAJNI or QJVAJNI64 service program
provides the JNI_CreateJavaVM Invocation API function. JNI_CreateJavaVM
creates the Java virtual machine.</p>
<div class="note"><span class="notetitle">Note:</span> QJVAJNI64 is a new service
program for teraspace/LLP64 native method and Invocation API support.</div>
<p>These
service programs reside in the system binding directory and you do not need
to explicitly identify them on a control language (CL) create command. For
example, you would not explicitly identify the previously mentioned service
programs when using the Create Program (CRTPGM) command or the Create Service
Program (CRTSRVPGM) command.</p>
<p>One way to run this program is to use the
following control language command:</p>
<pre> SBMJOB CMD(CALL PGM(YOURLIB/PGMNAME)) ALWMLTTHD(*YES)</pre>
<p>Any
job that creates a Java virtual machine must be multithread-capable.
The output from the main program, as well as any output from the program,
ends up in QPRINT spooled files. These spooled files are visible when you
use the Work with Submitted Jobs (WRKSBMJOB) control language (CL) command
and view the job that you started by using the Submit Job (SBMJOB) CL command.</p>
</div>
<div class="section"><h4 class="sectiontitle">Example: Using the Java Invocation API</h4><div class="note"><span class="notetitle">Note:</span> By using
the code examples, you agree to the terms of the <a href="codedisclaimer.htm">Code license and disclaimer information</a>.</div>
<pre>#define OS400_JVM_12
#include &lt;stdlib.h&gt;
#include &lt;stdio.h&gt;
#include &lt;fcntl.h&gt;
#include &lt;string.h&gt;
#include &lt;jni.h&gt;
/* Specify the pragma that causes all literal strings in the
* source code to be stored in ASCII (which, for the strings
* used, is equivalent to UTF-8)
*/
#pragma convert(819)
/* Procedure: Oops
*
* Description: Helper routine that is called when a JNI function
* returns a zero value, indicating a serious error.
* This routine reports the exception to stderr and
* ends the JVM abruptly with a call to FatalError.
*
* Parameters: env -- JNIEnv* to use for JNI calls
* msg -- char* pointing to error description in UTF-8
*
* Note: Control does not return after the call to FatalError
* and it does not return from this procedure.
*/
void Oops(JNIEnv* env, char *msg) {
if ((*env)-&gt;ExceptionOccurred(env)) {
(*env)-&gt;ExceptionDescribe(env);
}
(*env)-&gt;FatalError(env, msg);
}
/* This is the program's "main" routine. */
int main (int argc, char *argv[])
{
JavaVMInitArgs initArgs; /* Virtual Machine (VM) initialization structure, passed by
* reference to JNI_CreateJavaVM(). See jni.h for details
*/
JavaVM* myJVM; /* JavaVM pointer set by call to JNI_CreateJavaVM */
JNIEnv* myEnv; /* JNIEnv pointer set by call to JNI_CreateJavaVM */
char* myClasspath; /* Changeable classpath 'string' */
jclass myClass; /* The class to call, 'NativeHello'. */
jmethodID mainID; /* The method ID of its 'main' routine. */
jclass stringClass; /* Needed to create the String[] arg for main */
jobjectArray args; /* The String[] itself */
JavaVMOption options[1]; /* Options array -- use options to set classpath */
int fd0, fd1, fd2; /* file descriptors for IO */
/* Open the file descriptors so that IO works. */
fd0 = open("/dev/null1", O_CREAT|O_TRUNC|O_RDWR, S_IRUSR|S_IROTH);
fd1 = open("/dev/null2", O_CREAT|O_TRUNC|O_WRONLY, S_IWUSR|S_IWOTH);
fd2 = open("/dev/null3", O_CREAT|O_TRUNC|O_WRONLY, S_IWUSR|S_IWOTH);
/* Set the version field of the initialization arguments for J2SDK v1.3. */
initArgs.version = 0x00010002;
/* To use J2SDK v1.4, set initArgs.version = 0x00010004; */
/* To use J2SDK v1.5, set initArgs.version = 0x00010005; */
/* Now, you want to specify the directory for the class to run in the classpath.
* with Java2, classpath is passed in as an option.
* Note: You must specify the directory name in UTF-8 format. So, you wrap
* blocks of code in #pragma convert statements.
*/
options[0].optionString="-Djava.class.path=/CrtJvmExample";
/*To use J2SDK v1.4 or v1.5, replace the '1.3' with '1.4' or '1.5'.
options[1].optionString="-Djava.version=1.3" */
initArgs.options=options; /* Pass in the classpath that has been set up. */
initArgs.nOptions = 2; /* Pass in classpath and version options */
/* Create the JVM -- a nonzero return code indicates there was
* an error. Drop back into EBCDIC and write a message to stderr
* before exiting the program.
*/
if (JNI_CreateJavaVM("myJVM, (void **)"myEnv, (void *)"initArgs)) {
#pragma convert(0)
fprintf(stderr, "Failed to create the JVM\n");
#pragma convert(819)
exit(1);
}
/* Use the newly created JVM to find the example class,
* called 'NativeHello'.
*/
myClass = (*myEnv)-&gt;FindClass(myEnv, "NativeHello");
if (! myClass) {
Oops(myEnv, "Failed to find class 'NativeHello'");
}
/* Now, get the method identifier for the 'main' entry point
* of the class.
* Note: The signature of 'main' is always the same for any
* class called by the following java command:
* "main" , "([Ljava/lang/String;)V"
*/
mainID = (*myEnv)-&gt;GetStaticMethodID(myEnv,myClass,"main",
"([Ljava/lang/String;)V");
if (! mainID) {
Oops(myEnv, "Failed to find jmethodID of 'main'");
}
/* Get the jclass for String to create the array
* of String to pass to 'main'.
*/
stringClass = (*myEnv)-&gt;FindClass(myEnv, "java/lang/String");
if (! stringClass) {
Oops(myEnv, "Failed to find java/lang/String");
}
/* Now, you need to create an empty array of strings,
* since main requires such an array as a parameter.
*/
args = (*myEnv)-&gt;NewObjectArray(myEnv,0,stringClass,0);
if (! args) {
Oops(myEnv, "Failed to create args array");
}
/* Now, you have the methodID of main and the class, so you can
* call the main method.
*/
(*myEnv)-&gt;CallStaticVoidMethod(myEnv,myClass,mainID,args);
/* Check for errors. */
if ((*myEnv)-&gt;ExceptionOccurred(myEnv)) {
(*myEnv)-&gt;ExceptionDescribe(myEnv);
}
/* Finally, destroy the JavaVM that you created. */
(*myJVM)-&gt;DestroyJavaVM(myJVM);
/* All done. */
return 0;
}</pre>
<p>For more information, see <a href="invocapi.htm">Java Invocation
API</a>.</p>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="invocapi.htm" title="The Invocation API, which is part of the Java Native Interface (JNI), allows non-Java code to create a Java virtual machine, and load and use Java classes. This function lets a multithreaded program make use of Java classes that are running in a single Java virtual machine in multiple threads.">Java Invocation API</a></div>
</div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="codeex.htm" title="The following is a list of code examples for the IBM Developer Kit for Java.">Code examples for the IBM Developer Kit for Java</a></div>
</div>
<div class="relconcepts"><strong>Related concepts</strong><br />
<div><a href="rzahapaseexmpls.htm" title="The IBM i5/OS PASE native method for Java example calls an instance of a native C method that then uses Java Native Interface (JNI) to call back into Java code. Rather than accessing the string directly from Java code, the example calls a native method that then calls back into Java through JNI to get the string value.">Example: IBM i5/OS PASE native method for Java</a></div>
</div>
<div class="reltasks"><strong>Related tasks</strong><br />
<div><a href="runjpdex.htm" title="You can either use the iSeries command line or the Qshell environment to run the Java Performance Data Converter (JPDC).">Example: Run the Java Performance Data Converter</a></div>
</div>
<div class="relref"><strong>Related reference</strong><br />
<div><a href="intdatex.htm" title="This example shows how you can use locales to format dates.">Example: Internationalization of dates using the java.util.DateFormat class</a></div>
<div><a href="intnumex.htm" title="This example shows how you can use locales to format numbers.">Example: Internationalization of numeric display using the java.util.NumberFormat class</a></div>
<div><a href="intlocex.htm" title="This example shows how you can use locales with resource bundles to internationalize program strings.">Example: Internationalization of locale-specific data using the java.util.ResourceBundle class</a></div>
<div><a href="accesspropertytest.htm" title="This is an example of how to use the Access property.">Example: Access property</a></div>
<div><a href="putgetblobs.htm" title="This is an example of how a BLOB can be put into the database or retrieved from the database.">Example: BLOB</a></div>
<div><a href="callex.htm" title="This is an example of how to use the CallableStatement interface.">Example: CallableStatement interface for IBM Developer Kit for Java</a></div>
<div><a href="usingpositioneddelete.htm" title="This is an example of how to remove values from a table through another statement's cursor.">Example: Remove values from a table through another statement's cursor</a></div>
<div><a href="putgetclobs.htm" title="This is an example of how a CLOB can be put into the database or retrieved from the database.">Example: CLOB</a></div>
<div><a href="udbdatasourcebind.htm" title="This is an example of how to create a UDBDataSource and get it bound with JNDI.">Example: Create a UDBDataSource and bind it with JNDI</a></div>
<div><a href="udbdatasourceuse2.htm" title="This is an example of how to create a UDBDataSource, and use the getConnection method to obtain a user ID and password at runtime.">Example: Create a UDBDataSource, and obtain a user ID and password</a></div>
<div><a href="udbdatasourcebind2.htm" title="This is an example of how to create a UDBDataSource, and set the user ID and password as DataSource properties.">Example: Create a UDBDataSourceBind and set DataSource properties</a></div>
<div><a href="dataex.htm" title="This example shows how to return a list of tables.">Example: DatabaseMetaData interface for IBM Developer Kit for Java - Return a list of tables</a></div>
<div><a href="putgetdatalinks.htm" title="This is an example of how to use datalinks in your applications.">Example: Datalink</a></div>
<div><a href="distinct.htm" title="This is an example of how to use distinct types.">Example: Distinct types</a></div>
<div><a href="sqljex.htm" title="The following example SQLJ application, App.sqlj, uses static SQL to retrieve and update data from the EMPLOYEE table of the DB2 sample database.">Example: Embed SQL Statements in your Java application</a></div>
<div><a href="jtatxend.htm" title="This is an example of ending a transaction in your application.">Example: End a transaction</a></div>
<div><a href="invalidconnect.htm" title="This is an example of how to use the Connection property in SQL naming mode.">Example: Invalid user ID and password</a></div>
<div><a href="basicjdbc.htm" title="This is an example of how to use the BasicJDBC program.">Example: JDBC</a></div>
<div><a href="jtamulticonn.htm" title="This is an example of how to use multiple connections working on a single transaction.">Example: Multiple connections that work on a transaction</a></div>
<div><a href="udbdatasourceuse.htm" title="The following example obtains an initial context before binding the UDBDataSource. The lookup method is then used on that context to return an object of type DataSource for the application to use.">Example: Obtain an initial context before binding UDBDataSource</a></div>
<div><a href="pmd.htm" title="This is an example of using the ParameterMetaData interface to retrieve information about parameters.">Example: ParameterMetaData</a></div>
<div><a href="usingpositionedupdate.htm" title="This is an example of how to change values with a statement through another statement's cursor.">Example: Change values with a statement through another statement's cursor</a></div>
<div><a href="resultex.htm" title="This is an example of how to use the ResultSet interface.">Example: ResultSet interface for IBM Developer Kit for Java</a></div>
<div><a href="sensitive2.htm" title="The following example shows how a change can affect a where clause of an SQL statement based on the sensitivity of the ResultSet.">Example: ResultSet sensitivity</a></div>
<div><a href="sensitive.htm" title="The following example shows the difference between sensitive and insensitive ResultSets when rows are inserted into a table.">Example: Sensitive and insensitive ResultSets</a></div>
<div><a href="connectionpoolingsetup.htm" title="This is an example of how to use connection pooling with UDBDataSource and UDBConnectionPoolDataSource.">Example: Set up connection pooling with UDBDataSource and UDBConnectionPoolDataSource</a></div>
<div><a href="exceptionexample.htm" title="This is an example of catching an SQLException and dumping all the information that it provides.">Example: SQLException</a></div>
<div><a href="jtatxsuspend.htm" title="This is an example of a transaction that is suspended and then is resumed.">Example: Suspend and resume a transaction</a></div>
<div><a href="jtatxeffect.htm" title="This is an example of the how a Statement object is reprocessed under another transaction to perform work.">Example: Suspended ResultSets</a></div>
<div><a href="connectionpoolingtest.htm" title="This is an example of how to test the performance of the pooling example against the performance of the non-pooling example.">Example: Test the performance of connection pooling</a></div>
<div><a href="statementpoolingtest.htm" title="This is an example of testing one DataSource that uses connection pooling only and the other DataSource that uses statement and connection pooling.">Example: Test the performance of two DataSources</a></div>
<div><a href="updateblobs.htm" title="This is an example of how to update BLOBs in your applications.">Example: Update BLOBs</a></div>
<div><a href="updateclobs.htm" title="This is an example of how to update CLOBs in your applications.">Example: Update CLOBs</a></div>
<div><a href="jtamultitx.htm" title="This is an example of how to use a single connection with multiple transactions.">Example: Use a connection with multiple transactions</a></div>
<div><a href="useblobs.htm" title="This is an example of how to use BLOBs in your applications.">Example: Use BLOBs</a></div>
<div><a href="useclobs.htm" title="This is an example of how to use CLOBs in your applications.">Example: Use CLOBs</a></div>
<div><a href="jtacommit.htm" title="This is an example of how to use the Java Transaction API (JTA) to handle a transaction in an application.">Example: Use JTA to handle a transaction</a></div>
<div><a href="safegetudts.htm" title="This is an example of how to use metadata ResultSets that have more than one column.">Example: Use metadata ResultSets that have more than one column</a></div>
<div><a href="getconnections.htm" title="This is an example of how to use the native JDBC connection and the IBM Toolbox for Java JDBC connection in a program.">Example: Use native JDBC and IBM Toolbox for Java JDBC concurrently</a></div>
<div><a href="prepex.htm" title="This is an example of using a PreparedStatement object's executeQuery method to obtain a ResultSet.">Example: Use PreparedStatement to obtain a ResultSet</a></div>
<div><a href="crdb2cac.htm" title="There are several ways to place data into a DB2CachedRowSet.">Create and populate a DB2CachedRowSet</a></div>
<div><a href="stateex.htm" title="This is an example of how to use the Statement object's executeUpdate method.">Example: Use the Statement object's executeUpdate method</a></div>
<div><a href="jaaswrld.htm" title="These examples show you the three files that are needed to compile and run HelloWorld for JAAS.">Examples: JAAS HelloWorld</a></div>
<div><a href="sampthrd.htm">Example: JAAS SampleThreadSubjectLogin</a></div>
<div><a href="rzahajgsssrcl.htm">Sample: IBM JGSS non-JAAS client program</a></div>
<div><a href="rzahajgsssrsr.htm">Sample: IBM JGSS non-JAAS server program</a></div>
<div><a href="rzahajgssjacl.htm">Sample: IBM JGSS JAAS-enabled client program</a></div>
<div><a href="rzahajgssjasr.htm">Sample: IBM JGSS JAAS-enabled server program</a></div>
<div><a href="rzahajsseexmpls.htm" title="The JSSE examples show how a client and a server can use the native iSeries JSSE provider to create a context that enables secure communications.">Examples: IBM Java Secure Sockets Extension</a></div>
<div><a href="callclex.htm" title="This example shows how to run CL programs from within a Java program. In this example, the Java class CallCLPgm runs a CL program.">Example: Call a CL program with java.lang.Runtime.exec()</a></div>
<div><a href="clcommex.htm" title="This example shows how to run a control language (CL) command from within a Java program.">Example: Call a CL command with java.lang.Runtime.exec()</a></div>
<div><a href="jvlngex1.htm" title="This example shows how to call another Java program with java.lang.Runtime.exec(). This class calls the Hello program that is shipped as part of the IBM Developer Kit for Java. When the Hello class writes to System.out, this program gets a handle to the stream and can read from it.">Example: Call another Java program with java.lang.Runtime.exec()</a></div>
<div><a href="callcex.htm" title="This is an example of a C program that uses the system() function to call the Java Hello program.">Example: Call Java from C</a></div>
<div><a href="calrpgex.htm" title="This is an example of an RPG program that uses the QCMDEXC API to call the Java Hello program.">Example: Call Java from RPG</a></div>
<div><a href="iostrmex.htm" title="This example shows how to call a C program from Java and use input and output streams for interprocess communication.">Example: Use input and output streams for interprocess communication</a></div>
<div><a href="jniex.htm" title="This example program is a simple Java Native Interface (JNI) example in which a C native method is used to display &#34;Hello, World.&#34; Use the javah tool with the NativeHello class file to generate the NativeHello.h file. This example assumes that the NativeHello C implementation is part of a service program that is called NATHELLO.">Examples: Use the Java Native Interface for native methods</a></div>
<div><a href="socketex.htm" title="This example uses sockets to communicate between a Java program and a C program.">Example: Use sockets for interprocess communication</a></div>
<div><a href="sslcex01.htm" title="These examples show you how to change a simple socket class, named simpleSocketClient, so that it uses socket factories to create all of the sockets. The first example shows you the simpleSocketClient class without socket factories. The second example shows you the simpleSocketClient class with socket factories. In the second example, simpleSocketClient is renamed to factorySocketClient.">Examples: Change your Java code to use client socket factories</a></div>
<div><a href="sslcex03.htm" title="These examples show you how to change a simple socket class, named simpleSocketServer, so that it uses socket factories to create all of the sockets. The first example shows you the simpleSocketServer class without socket factories. The second example shows you the simpleSocketServer class with socket factories. In the second example, simpleSocketServer is renamed to factorySocketServer.">Examples: Change your Java code to use server socket factories</a></div>
<div><a href="sslcex02.htm" title="These examples show you how to change one class, named factorySocketClient, to use secure sockets layer (SSL). The first example shows you the factorySocketClient class not using SSL. The second example shows you the same class, renamed factorySSLSocketClient, using SSL.">Examples: Change your Java client to use secure sockets layer</a></div>
<div><a href="sslcex04.htm" title="These examples show you how to change one class, named factorySocketServer, to use secure sockets layer (SSL).">Examples: Change your Java server to use secure sockets layer</a></div>
</div>
</div>
</body>
</html>