You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by mt...@apache.org on 2007/05/09 15:26:11 UTC
svn commit: r536514 -
/jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/src/javajni.c
Author: mturk
Date: Wed May 9 06:26:10 2007
New Revision: 536514
URL: http://svn.apache.org/viewvc?view=rev&rev=536514
Log:
In case log level is less then INFO, print on stdout
This will print thread dump on redirected stdout file
if launched from service.
Modified:
jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/src/javajni.c
Modified: jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/src/javajni.c
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/src/javajni.c?view=diff&rev=536514&r1=536513&r2=536514
==============================================================================
--- jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/src/javajni.c (original)
+++ jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/src/javajni.c Wed May 9 06:26:10 2007
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
+
#include "apxwin.h"
#include "private.h"
@@ -21,7 +21,7 @@
#ifndef JNI_VERSION_1_2
#error -------------------------------------------------------
-#error JAVA 1.1 IS NO LONGER SUPPORTED
+#error JAVA 1.1 IS NO LONGER SUPPORTED
#error -------------------------------------------------------
#endif
@@ -31,7 +31,7 @@
#define JNI_VERSION_DEFAULT JNI_VERSION_1_2
#endif
-/* Standard jvm.dll prototypes
+/* Standard jvm.dll prototypes
* since only single jvm can exist per process
* make those global
*/
@@ -77,7 +77,7 @@
#endif
#define JNI_LOCAL_UNREF(obj) \
- (*(lpJava->lpEnv))->DeleteLocalRef(lpJava->lpEnv, obj)
+ (*(lpJava->lpEnv))->DeleteLocalRef(lpJava->lpEnv, obj)
#define JNICALL_0(fName) \
((*(lpJava->lpEnv))->##fName(lpJava->lpEnv))
@@ -100,15 +100,15 @@
jobject jObject;
jarray jArgs;
} APXJAVASTDCLAZZ, *LPAPXJAVASTDCLAZZ;
-
+
typedef struct APXJAVAVM {
DWORD dwOptions;
APXJAVASTDCLAZZ clString;
APXJAVASTDCLAZZ clWorker;
- jint iVersion;
+ jint iVersion;
jsize iVmCount;
- JNIEnv *lpEnv;
- JavaVM *lpJvm;
+ JNIEnv *lpEnv;
+ JavaVM *lpJvm;
/* JVM worker thread info */
HANDLE hWorkerThread;
DWORD iWorkerThread;
@@ -122,7 +122,7 @@
static __inline BOOL __apxJvmAttach(LPAPXJAVAVM lpJava)
{
jint _iStatus = (*(lpJava->lpJvm))->GetEnv(lpJava->lpJvm,
- (void **)&(lpJava->lpEnv),
+ (void **)&(lpJava->lpEnv),
lpJava->iVersion);
if (_iStatus != JNI_OK) {
if (_iStatus == JNI_EDETACHED)
@@ -150,7 +150,7 @@
static BOOL __apxLoadJvmDll(LPCWSTR szJvmDllPath)
{
- UINT errMode;
+ UINT errMode;
LPWSTR dllJvmPath = (LPWSTR)szJvmDllPath;
if (!IS_INVALID_HANDLE(_st_sys_jvmDllHandle))
@@ -159,25 +159,25 @@
if (!dllJvmPath || *dllJvmPath == L'\0')
dllJvmPath = apxGetJavaSoftRuntimeLib(NULL);
if (!dllJvmPath)
- return FALSE;
+ return FALSE;
/* Suppress the not found system popup message */
- errMode = SetErrorMode(SEM_FAILCRITICALERRORS);
-
- _st_sys_jvmDllHandle = LoadLibraryExW(dllJvmPath, NULL, 0);
+ errMode = SetErrorMode(SEM_FAILCRITICALERRORS);
+
+ _st_sys_jvmDllHandle = LoadLibraryExW(dllJvmPath, NULL, 0);
/* This shuldn't happen, but try to search in %PATH% */
if (IS_INVALID_HANDLE(_st_sys_jvmDllHandle))
_st_sys_jvmDllHandle = LoadLibraryExW(dllJvmPath, NULL,
- LOAD_WITH_ALTERED_SEARCH_PATH);
+ LOAD_WITH_ALTERED_SEARCH_PATH);
/* Restore the error mode signalization */
- SetErrorMode(errMode);
+ SetErrorMode(errMode);
if (IS_INVALID_HANDLE(_st_sys_jvmDllHandle)) {
apxLogWrite(APXLOG_MARK_SYSERR);
return FALSE;
}
- DYNLOAD_FPTR_LOAD(JNI_GetDefaultJavaVMInitArgs, _st_sys_jvmDllHandle);
- DYNLOAD_FPTR_LOAD(JNI_CreateJavaVM, _st_sys_jvmDllHandle);
+ DYNLOAD_FPTR_LOAD(JNI_GetDefaultJavaVMInitArgs, _st_sys_jvmDllHandle);
+ DYNLOAD_FPTR_LOAD(JNI_CreateJavaVM, _st_sys_jvmDllHandle);
DYNLOAD_FPTR_LOAD(JNI_GetCreatedJavaVMs, _st_sys_jvmDllHandle);
-
+
if (!DYNLOAD_FPTR(JNI_GetDefaultJavaVMInitArgs) ||
!DYNLOAD_FPTR(JNI_CreateJavaVM) ||
!DYNLOAD_FPTR(JNI_GetCreatedJavaVMs)) {
@@ -202,7 +202,7 @@
case WM_CLOSE:
if (lpJava->lpJvm) {
if (!IS_INVALID_HANDLE(lpJava->hWorkerThread)) {
- if (GetExitCodeThread(lpJava->hWorkerThread, &dwJvmRet) &&
+ if (GetExitCodeThread(lpJava->hWorkerThread, &dwJvmRet) &&
dwJvmRet == STILL_ACTIVE) {
TerminateThread(lpJava->hWorkerThread, 5);
}
@@ -217,7 +217,7 @@
#if 0
/* Do not destroy if we terminated the worker thread */
if (dwJvmRet != STILL_ACTIVE)
- (*(lpJava->lpJvm))->DestroyJavaVM(lpJava->lpJvm);
+ (*(lpJava->lpJvm))->DestroyJavaVM(lpJava->lpJvm);
#endif
/* Unload JVM dll */
FreeLibrary(_st_sys_jvmDllHandle);
@@ -239,15 +239,15 @@
APXHANDLE hJava;
LPAPXJAVAVM lpJava;
jsize iVmCount;
- JavaVM *lpJvm = NULL;
+ JavaVM *lpJvm = NULL;
if (!__apxLoadJvmDll(szJvmDllPath))
- return NULL;
+ return NULL;
/*
*/
if (DYNLOAD_FPTR(JNI_GetCreatedJavaVMs)(&lpJvm, 1, &iVmCount) != JNI_OK) {
return NULL;
- }
+ }
if (iVmCount && !lpJvm)
return NULL;
@@ -271,7 +271,7 @@
DWORD i, n = 0, l = 0;
char *buff;
LPSTR p;
-
+
if (lpString) {
l = __apxGetMultiSzLengthA(lpString, &n);
}
@@ -293,7 +293,7 @@
p++;
p += qr;
}
-
+
return n;
}
@@ -303,10 +303,11 @@
jint rv;
CHAR sBuf[1024+16];
rv = wvsprintfA(sBuf, format, args);
- apxLogWrite(APXLOG_MARK_INFO "%s", sBuf);
+ if (apxLogWrite(APXLOG_MARK_INFO "%s", sBuf) == 0)
+ fputs(sBuf, stdout);
return rv;
}
-
+
/* ANSI version only */
BOOL
@@ -315,7 +316,7 @@
DWORD dwSs)
{
LPAPXJAVAVM lpJava;
- JavaVMInitArgs vmArgs;
+ JavaVMInitArgs vmArgs;
JavaVMOption *lpJvmOptions;
DWORD i, nOptions, sOptions = 2;
BOOL rv = FALSE;
@@ -323,7 +324,7 @@
return FALSE;
lpJava = APXHANDLE_DATA(hJava);
-
+
if (lpJava->iVmCount) {
if (!lpJava->lpEnv && !__apxJvmAttach(lpJava)) {
if (lpJava->iVersion == JNI_VERSION_1_2) {
@@ -334,7 +335,7 @@
lpJava->iVersion = JNI_VERSION_1_2;
if (!__apxJvmAttach(lpJava)) {
apxLogWrite(APXLOG_MARK_ERROR "Unable To Attach the JVM");
- return FALSE;
+ return FALSE;
}
}
lpJava->iVersion = JNICALL_0(GetVersion);
@@ -392,19 +393,19 @@
(void **)&(lpJava->lpEnv),
&vmArgs) != JNI_OK) {
apxLogWrite(APXLOG_MARK_ERROR "CreateJavaVM Failed");
- rv = FALSE;
+ rv = FALSE;
}
else
rv = TRUE;
apxFree(szCp);
apxFree(lpJvmOptions);
- }
+ }
/* Load standard classes */
if (rv) {
jclass jClazz = JNICALL_1(FindClass, JAVA_CLASSSTRING);
if (!jClazz) {
apxLogWrite(APXLOG_MARK_ERROR "FindClass " JAVA_CLASSSTRING " failed");
- goto cleanup;
+ goto cleanup;
}
lpJava->clString.jClazz = JNICALL_1(NewGlobalRef, jClazz);
JNI_LOCAL_UNREF(jClazz);
@@ -434,13 +435,13 @@
lpJava = APXHANDLE_DATA(hJava);
if (!__apxJvmAttach(lpJava))
return FALSE;
-
+
/* Find the class */
jClazz = JNICALL_1(FindClass, szClassName);
if (!jClazz) {
JVM_EXCEPTION_CLEAR(lpJava);
apxLogWrite(APXLOG_MARK_ERROR "FindClass %s failed", szClassName);
- return FALSE;
+ return FALSE;
}
/* Make the class global so that worker thread can attach */
lpJava->clWorker.jClazz = JNICALL_1(NewGlobalRef, jClazz);
@@ -449,11 +450,11 @@
if (szMethodName)
lpJava->clWorker.jMethod = JNICALL_3(GetStaticMethodID,
lpJava->clWorker.jClazz,
- szMethodName, "([Ljava/lang/String;)V");
+ szMethodName, "([Ljava/lang/String;)V");
else
lpJava->clWorker.jMethod = JNICALL_3(GetStaticMethodID,
lpJava->clWorker.jClazz,
- "main", "([Ljava/lang/String;)V");
+ "main", "([Ljava/lang/String;)V");
if (!lpJava->clWorker.jMethod) {
JVM_EXCEPTION_CLEAR(lpJava);
apxLogWrite(APXLOG_MARK_ERROR "Static method 'void main(String[])' in Class %s not found", szClassName);
@@ -475,7 +476,7 @@
}
-/* Main java application worker thread
+/* Main java application worker thread
* It will launch Java main and wait until
* it finishes.
*/
@@ -520,10 +521,10 @@
if (hJava->dwType != APXHANDLE_TYPE_JVM)
return FALSE;
lpJava = APXHANDLE_DATA(hJava);
-
+
lpJava->hWorkerThread = CreateThread(NULL, 0, __apxJavaWorkerThread,
hJava, CREATE_SUSPENDED,
- &lpJava->iWorkerThread);
+ &lpJava->iWorkerThread);
if (IS_INVALID_HANDLE(lpJava->hWorkerThread)) {
apxLogWrite(APXLOG_MARK_SYSERR);
return FALSE;
@@ -543,14 +544,14 @@
if (hJava->dwType != APXHANDLE_TYPE_JVM)
return FALSE;
lpJava = APXHANDLE_DATA(hJava);
-
+
if (!lpJava->dwWorkerStatus && lpJava->hWorkerThread)
return WAIT_OBJECT_0;
rv = WaitForSingleObject(lpJava->hWorkerThread, dwMilliseconds);
if (rv == WAIT_TIMEOUT && bKill) {
__apxJavaJniCallback(hJava, WM_CLOSE, 0, 0);
}
-
+
return rv;
}
@@ -568,14 +569,14 @@
lpJava = APXHANDLE_DATA(hJava);
if (!__apxJvmAttach(lpJava))
return NULL;
-
+
clazz = JNICALL_1(FindClass, szClassName);
if (clazz == NULL || (JVM_EXCEPTION_CHECK(lpJava))) {
JVM_EXCEPTION_CLEAR(lpJava);
apxLogWrite(APXLOG_MARK_ERROR "Could not FindClass %s", szClassName);
return NULL;
}
-
+
ccont = JNICALL_3(GetMethodID, clazz, "<init>", szSignature);
if (ccont == NULL || (JVM_EXCEPTION_CHECK(lpJava))) {
JVM_EXCEPTION_CLEAR(lpJava);
@@ -601,7 +602,7 @@
{
LPVOID rv;
va_list args;
-
+
va_start(args, szSignature);
rv = apxJavaCreateClassV(hJava, szClassName, szSignature, args);
va_end(args);
@@ -618,7 +619,7 @@
if (hJava->dwType != APXHANDLE_TYPE_JVM)
return NULL;
lpJava = APXHANDLE_DATA(hJava);
-
+
str = JNICALL_1(NewStringUTF, szString);
if (str == NULL || (JVM_EXCEPTION_CHECK(lpJava))) {
JVM_EXCEPTION_CLEAR(lpJava);
@@ -639,7 +640,7 @@
if (hJava->dwType != APXHANDLE_TYPE_JVM)
return NULL;
lpJava = APXHANDLE_DATA(hJava);
-
+
str = JNICALL_2(NewString, szString, lstrlenW(szString));
if (str == NULL || (JVM_EXCEPTION_CHECK(lpJava))) {
JVM_EXCEPTION_CLEAR(lpJava);
@@ -663,7 +664,7 @@
if (hJava->dwType != APXHANDLE_TYPE_JVM)
return rv;
lpJava = APXHANDLE_DATA(hJava);
-
+
while (*s && *s != ')')
++s;
if (*s != ')') {
@@ -709,7 +710,7 @@
break;
case 'D':
rv.d = JNICALL_3(CallStaticDoubleMethodV, lpClass, method, lpArgs);
- break;
+ break;
default:
apxLogWrite(APXLOG_MARK_ERROR "Invalid signature %s for method %s",
szSignature, szMethodName);
@@ -726,7 +727,7 @@
{
jvalue rv;
va_list args;
-
+
va_start(args, szSignature);
rv = apxJavaCallStaticMethodV(hJava, lpClass, szMethodName, szSignature, args);
va_end(args);
@@ -735,7 +736,7 @@
}
/* Call the Java:
- * System.setOut(new PrintStream(new FileOutputStream(filename)));
+ * System.setOut(new PrintStream(new FileOutputStream(filename)));
*/
BOOL
apxJavaSetOut(APXHANDLE hJava, BOOL setErrorOrOut, LPCWSTR szFilename)
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org