costin 2002/06/10 14:30:48
Modified: jk/native2/jni jk_jni_aprImpl.c
Log:
Last part of the patch from Mladen Turk, with few changes.
The apr_initialize() is called if no jk_globalEnv is found, which means
jk wasn't initialized so probably we are in Java standalone mode, and
java just loaded libjkjni.so and libapr.so.
Revision Changes Path
1.32 +100 -8 jakarta-tomcat-connectors/jk/native2/jni/jk_jni_aprImpl.c
Index: jk_jni_aprImpl.c
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/jni/jk_jni_aprImpl.c,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- jk_jni_aprImpl.c 7 Jun 2002 23:42:19 -0000 1.31
+++ jk_jni_aprImpl.c 10 Jun 2002 21:30:48 -0000 1.32
@@ -96,8 +96,16 @@
#include "signal.h"
#endif
-static apr_pool_t *jniAprPool;
+/* jniAprPool is the 'master pool' for standalone use ( i.e. not inprocess )
+ All resources are allocated in this pool
+*/
+static apr_pool_t *jniAprPool=NULL;
+
+/** Access to the jk workerEnv. This field and jk_env_globalEnv are used
+ to interact with the jk components
+ */
static jk_workerEnv_t *workerEnv;
+
static int jniDebug=0;
#define JK_GET_REGION 1
@@ -113,25 +121,28 @@
}
/* -------------------- Apr initialization and pools -------------------- */
-
+
JNIEXPORT jint JNICALL
Java_org_apache_jk_apr_AprImpl_initialize(JNIEnv *jniEnv, jobject _jthis)
{
jk_env_t *env;
-
- apr_initialize();
- apr_pool_create( &jniAprPool, NULL );
+ /* For in-process the env is initialized already */
if( jk_env_globalEnv == NULL ) {
jk_pool_t *globalPool;
+ apr_initialize();
+ apr_pool_create( &jniAprPool, NULL );
+
if( jniAprPool==NULL ) {
- return 0;
+ return JK_ERR;
}
jk2_pool_apr_create( NULL, &globalPool, NULL, jniAprPool );
/* Create the global env */
env=jk2_env_getEnv( NULL, globalPool );
+ env->setAprPool(env, gPool);
}
+
env=jk_env_globalEnv;
workerEnv=env->getByName( env, "workerEnv" );
@@ -160,14 +171,18 @@
workerEnv->init( env, workerEnv );
}
- /* fprintf( stderr, "XXX aprImpl: %p %p\n", env, workerEnv); */
- return 0;
+
+ return JK_OK;
}
JNIEXPORT jint JNICALL
Java_org_apache_jk_apr_AprImpl_terminate(JNIEnv *jniEnv, jobject _jthis)
{
+ if ( jniAprPool!=NULL ) {
+ apr_pool_destroy(jniAprPool);
+ jniAprPool = NULL;
/* apr_terminate(); */
+ }
return 0;
}
@@ -621,6 +636,83 @@
/* env->l->jkLog(env, env->l, JK_LOG_INFO, "jkInvoke() done\n"); */
return rc;
+}
+
+
+static JNINativeMethod org_apache_jk_apr_AprImpl_native_methods[] = {
+ {
+ "initialize", "()I",
+ Java_org_apache_jk_apr_AprImpl_initialize
+ },
+ {
+ "terminate", "()I",
+ Java_org_apache_jk_apr_AprImpl_terminate
+ },
+ {
+ "getJkEnv", "()J",
+ Java_org_apache_jk_apr_AprImpl_getJkEnv
+ },
+ {
+ "releaseJkEnv", "(J)V",
+ Java_org_apache_jk_apr_AprImpl_releaseJkEnv
+ },
+ {
+ "getJkHandler", "(JLjava/lang/String;)J",
+ Java_org_apache_jk_apr_AprImpl_getJkHandler
+ },
+ {
+ "createJkHandler", "(JLjava/lang/String;)J",
+ Java_org_apache_jk_apr_AprImpl_createJkHandler
+ },
+ {
+ "jkSetAttribute", "(JJLjava/lang/String;Ljava/lang/String;)I",
+ Java_org_apache_jk_apr_AprImpl_jkSetAttribute
+ },
+ {
+ "jkGetAttribute", "(JJLjava/lang/String;)Ljava/lang/String;",
+ Java_org_apache_jk_apr_AprImpl_jkGetAttribute
+ },
+ {
+ "jkInit", "(JJ)I",
+ Java_org_apache_jk_apr_AprImpl_jkInit
+ },
+ {
+ "jkDestroy", "(JJ)I",
+ Java_org_apache_jk_apr_AprImpl_jkDestroy
+ },
+ {
+ "jkInvoke", "(JJJI[BIII)I",
+ Java_org_apache_jk_apr_AprImpl_jkInvoke
+ },
+ {
+ "jkRecycle", "(JJ)V",
+ Java_org_apache_jk_apr_AprImpl_jkRecycle
+ },
+ {
+ "setUser", "(Ljava/lang/String;Ljava/lang/String;)I",
+ Java_org_apache_jk_apr_AprImpl_setUser
+ },
+ {
+ "signal", "(I)I",
+ Java_org_apache_jk_apr_AprImpl_signal
+ },
+ {
+ "sendSignal", "(II)V",
+ Java_org_apache_jk_apr_AprImpl_sendSignal
+ }
+};
+
+/*
+ Register Native methods returning the total number of
+ native functions
+*/
+jint jk_jni_aprImpl_registerNatives(JNIEnv *jniEnv, jclass bridgeClass)
+{
+
+ return (*jniEnv)->RegisterNatives(jniEnv, bridgeClass,
+ org_apache_jk_apr_AprImpl_native_methods,
+ sizeof(org_apache_jk_apr_AprImpl_native_methods) /
+ sizeof(JNINativeMethod));
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>