Author: mturk
Date: Fri Sep 24 13:34:33 2010
New Revision: 1000866
URL: http://svn.apache.org/viewvc?rev=1000866&view=rev
Log:
Use the same API for shutdown and remove the extra shutdown function
Modified:
commons/proper/daemon/trunk/src/native/windows/apps/prunsrv/prunsrv.c
commons/proper/daemon/trunk/src/native/windows/include/javajni.h
commons/proper/daemon/trunk/src/native/windows/src/javajni.c
Modified: commons/proper/daemon/trunk/src/native/windows/apps/prunsrv/prunsrv.c
URL:
http://svn.apache.org/viewvc/commons/proper/daemon/trunk/src/native/windows/apps/prunsrv/prunsrv.c?rev=1000866&r1=1000865&r2=1000866&view=diff
==============================================================================
--- commons/proper/daemon/trunk/src/native/windows/apps/prunsrv/prunsrv.c
(original)
+++ commons/proper/daemon/trunk/src/native/windows/apps/prunsrv/prunsrv.c Fri
Sep 24 13:34:33 2010
@@ -232,6 +232,7 @@ static HANDLE gPidfileHandle = NULL;
static LPWSTR gPidfileName = NULL;
static BOOL gSignalValid = TRUE;
static APXJAVA_THREADARGS gRargs;
+static APXJAVA_THREADARGS gSargs;
DWORD WINAPI eventThread(LPVOID lpParam)
@@ -817,21 +818,22 @@ static DWORD WINAPI serviceStop(LPVOID l
apxLogWrite(APXLOG_MARK_ERROR "Failed creating java %S",
_jni_jvmpath);
return 1;
}
- if (!apxJavaInitialize(hWorker, _jni_classpath, _jni_jvmoptions,
- SO_JVMMS, SO_JVMMX, SO_JVMSS, SO_JNIVFPRINTF)) {
- rv = 2;
- apxLogWrite(APXLOG_MARK_ERROR "Failed initializing java %s",
_jni_classpath);
- goto cleanup;
- }
- if (!apxJavaLoadMainClass(hWorker, _jni_sclass, _jni_smethod,
_jni_sparam)) {
- rv = 2;
- apxLogWrite(APXLOG_MARK_ERROR "Failed loading main %s class %s",
- _jni_rclass, _jni_classpath);
- goto cleanup;
- }
+ gSargs.hJava = hWorker;
+ gSargs.szClassPath = _jni_classpath;
+ gSargs.lpOptions = _jni_jvmoptions;
+ gSargs.dwMs = SO_JVMMS;
+ gSargs.dwMx = SO_JVMMX;
+ gSargs.dwSs = SO_JVMSS;
+ gSargs.bJniVfprintf = SO_JNIVFPRINTF;
+ gSargs.szClassName = _jni_sclass;
+ gSargs.szMethodName = _jni_smethod;
+ gSargs.lpArguments = _jni_sparam;
+ gSargs.szStdErrFilename = NULL;
+ gSargs.szStdOutFilename = NULL;
+
/* Create sutdown event */
gShutdownEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
- if (!apxJavaStart(hWorker)) {
+ if (!apxJavaStart(&gSargs)) {
apxLogWrite(APXLOG_MARK_ERROR "Failed starting java");
rv = 3;
}
@@ -1006,7 +1008,7 @@ static DWORD serviceStart()
gRargs.szStdErrFilename = gStdwrap.szStdErrFilename;
gRargs.szStdOutFilename = gStdwrap.szStdOutFilename;
- if (!apxJavaStartThread(&gRargs)) {
+ if (!apxJavaStart(&gRargs)) {
rv = 4;
apxLogWrite(APXLOG_MARK_ERROR "Failed to start Java");
goto cleanup;
Modified: commons/proper/daemon/trunk/src/native/windows/include/javajni.h
URL:
http://svn.apache.org/viewvc/commons/proper/daemon/trunk/src/native/windows/include/javajni.h?rev=1000866&r1=1000865&r2=1000866&view=diff
==============================================================================
--- commons/proper/daemon/trunk/src/native/windows/include/javajni.h (original)
+++ commons/proper/daemon/trunk/src/native/windows/include/javajni.h Fri Sep 24
13:34:33 2010
@@ -52,8 +52,7 @@ BOOL apxJavaLoadMainClass(APXHAND
LPCSTR szMethodName,
LPCVOID lpArguments);
-BOOL apxJavaStart(APXHANDLE hJava);
-BOOL apxJavaStartThread(LPAPXJAVA_THREADARGS pArgs);
+BOOL apxJavaStart(LPAPXJAVA_THREADARGS pArgs);
DWORD apxJavaWait(APXHANDLE hJava, DWORD dwMilliseconds, BOOL bKill);
Modified: commons/proper/daemon/trunk/src/native/windows/src/javajni.c
URL:
http://svn.apache.org/viewvc/commons/proper/daemon/trunk/src/native/windows/src/javajni.c?rev=1000866&r1=1000865&r2=1000866&view=diff
==============================================================================
--- commons/proper/daemon/trunk/src/native/windows/src/javajni.c (original)
+++ commons/proper/daemon/trunk/src/native/windows/src/javajni.c Fri Sep 24
13:34:33 2010
@@ -841,42 +841,6 @@ static DWORD WINAPI __apxJavaWorkerThrea
#define WORKER_EXIT(x) { rv = x; goto finished; }
DWORD rv = 0;
LPAPXJAVAVM lpJava;
- APXHANDLE hJava = (APXHANDLE)lpParameter;
- /* This shouldn't happen */
- if (hJava->dwType != APXHANDLE_TYPE_JVM)
- WORKER_EXIT(0);
- lpJava = APXHANDLE_DATA(hJava);
- /* Check if we have a class and a method */
- if (!lpJava->clWorker.jClazz || !lpJava->clWorker.jMethod)
- WORKER_EXIT(2);
- if (!__apxJvmAttach(lpJava))
- WORKER_EXIT(3);
- apxLogWrite(APXLOG_MARK_DEBUG "Java Worker thread started %s:%s",
- lpJava->clWorker.sClazz, lpJava->clWorker.sMethod);
- lpJava->dwWorkerStatus = 1;
- JNICALL_3(CallStaticVoidMethod,
- lpJava->clWorker.jClazz,
- lpJava->clWorker.jMethod,
- lpJava->clWorker.jArgs);
-
- JVM_EXCEPTION_CLEAR(lpJava);
- __apxJvmDetach(lpJava);
- apxLogWrite(APXLOG_MARK_DEBUG "Java Worker thread %s:%s finished",
- lpJava->clWorker.sClazz, lpJava->clWorker.sMethod);
-finished:
- lpJava->dwWorkerStatus = 0;
- apxLogWrite(APXLOG_MARK_DEBUG "Java Worker thread finished %s:%s",
- lpJava->clWorker.sClazz, lpJava->clWorker.sMethod);
- ExitThread(rv);
- /* never gets here but keep the compiler happy */
- return 0;
-}
-
-static DWORD WINAPI __apxJavaWorkerThread2(LPVOID lpParameter)
-{
-#define WORKER_EXIT(x) { rv = x; goto finished; }
- DWORD rv = 0;
- LPAPXJAVAVM lpJava;
LPAPXJAVA_THREADARGS pArgs = (LPAPXJAVA_THREADARGS)lpParameter;
APXHANDLE hJava;
@@ -928,40 +892,14 @@ finished:
return 0;
}
-
-BOOL
-apxJavaStart(APXHANDLE hJava)
-{
-
- LPAPXJAVAVM lpJava;
-
- if (hJava->dwType != APXHANDLE_TYPE_JVM)
- return FALSE;
- lpJava = APXHANDLE_DATA(hJava);
-
- lpJava->hWorkerThread = CreateThread(NULL,
- lpJava->szStackSize,
- __apxJavaWorkerThread,
- hJava, CREATE_SUSPENDED,
- &lpJava->iWorkerThread);
- if (IS_INVALID_HANDLE(lpJava->hWorkerThread)) {
- apxLogWrite(APXLOG_MARK_SYSERR);
- return FALSE;
- }
- ResumeThread(lpJava->hWorkerThread);
- /* Give some time to initialize the thread */
- Sleep(1000);
- return TRUE;
-}
-
-apxJavaStartThread(LPAPXJAVA_THREADARGS pArgs)
+apxJavaStart(LPAPXJAVA_THREADARGS pArgs)
{
LPAPXJAVAVM lpJava;
lpJava = APXHANDLE_DATA(pArgs->hJava);
lpJava->hWorkerThread = CreateThread(NULL,
lpJava->szStackSize,
- __apxJavaWorkerThread2,
+ __apxJavaWorkerThread,
pArgs, CREATE_SUSPENDED,
&lpJava->iWorkerThread);
if (IS_INVALID_HANDLE(lpJava->hWorkerThread)) {