Pantek Library
Hosting Provided By
CybrHost
High Speed Hosting

DO NOT REPLY [Bug 9548] New: - mod_jk.so will not compile under AIX 4.3.3

From: <bugzilla(at)apache.org>
Date: Fri May 31 2002 - 14:11:35 EDT


DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9548>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE. http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9548

mod_jk.so will not compile under AIX 4.3.3

           Summary: mod_jk.so will not compile under AIX 4.3.3
           Product: Apache httpd-1.3
           Version: 1.3.23
          Platform: Other
        OS/Version: AIX
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: Other mods
        AssignedTo: bugs@httpd.apache.org
        ReportedBy: dfields326@netscape.net

mod_jk.so will not compile under AIX 4.3.3 without modifications

using mod_jk sources
found in
jakarta-tomcat-connectors-4.0.2-01-src.tar.gz or tomcat 3.3a or tomcat 3.3.1
sources will not compile without modifications

Using Apache 1.3.23 modfications that need to be made are the following
in the jk/native/common/jk_jni_worker.c
AIX xlC compiler
requires explicit casts

putting these typedefs at the top of the file /*
//
  AIX
REQUIRED EXPLLICT FUNCTION PTR CASTS
*/
typedef jint ( JNICALL
*Tpfnjni_get_default_java_vm_init_args)(void *); typedef jint ( JNICALL
*Tpfnjni_create_java_vm)(JavaVM **, JNIEnv **, void *); typedef jint ( JNICALL
*Tpfnjni_get_created_java_vms)(JavaVM **, int, int *);

And using these function
pointer types in function load_jvm_dll()  Tpfnjni_get_default_java_vm_init_args  

Tpfnjni_create_java_vm
 Tpfnjni_get_created_java_vms

Do you need help?X

eg) code snip
static int
load_jvm_dll(jni_worker_t *p,

                        jk_logger_t *l)

{
#ifdef WIN32

    HINSTANCE hInst =
LoadLibrary(p->jvm_dll_path);

    if(hInst) {

        (FARPROC)jni_create_java_vm =
            

GetProcAddress(hInst, "JNI_CreateJavaVM");

        (FARPROC)jni_get_created_java_vms =
            

GetProcAddress(hInst, "JNI_GetCreatedJavaVMs");         

(FARPROC)jni_get_default_java_vm_init_args =

            GetProcAddress(hInst,
"JNI_GetDefaultJavaVMInitArgs");

        jk_log(l, JK_LOG_DEBUG,
               "Loaded all JNI 

procs\n");

        if(jni_create_java_vm && jni_get_default_java_vm_init_args && jni_get_created_java_vms) {

            return JK_TRUE;
        }

        FreeLibrary(hInst);

    }
#elif

defined(NETWARE)
Do you need more help?X

    int javaNlmHandle = FindNLMHandle("JVM");     if (0 == javaNlmHandle) {         

/* if we didn't get a handle, try to load java and retry getting the */

        /* handle */
        
spawnlp(P_NOWAIT, "JVM.NLM", NULL);
        ThreadSwitchWithDelay();
        javaNlmHandle = 
FindNLMHandle("JVM");
        if (0 == javaNlmHandle)
            printf("Error loading Java.");

    }
    if
(0 != javaNlmHandle) {

        jni_create_java_vm = ImportSymbol(GetNLMHandle(), "JNI_CreateJavaVM");

        jni_get_created_java_vms = ImportSymbol(GetNLMHandle(), "JNI_GetCreatedJavaVMs");

        jni_get_default_java_vm_init_args = ImportSymbol(GetNLMHandle(), "JNI_GetDefaultJavaVMInitArgs");

    }     

if(jni_create_java_vm && jni_get_default_java_vm_init_args && jni_get_created_java_vms) {

Can we help you?X

        return JK_TRUE;
    }
#else

    void *handle;
    jk_log(l,
JK_LOG_DEBUG,
           "Into load_jvm_dll, load %s\n", p->jvm_dll_path);

    handle = dlopen(p-
>jvm_dll_path, RTLD_NOW | RTLD_GLOBAL);

    if(!handle) {

        jk_log(l, JK_LOG_EMERG,
               
"Can't load native library %s : %s\n", p->jvm_dll_path,
               dlerror());
    } else {
         /* AIX 
REQUIRED EXPLLICT FUNCTION PTR CASTS */
        jni_create_java_vm = 
(Tpfnjni_create_java_vm)dlsym(handle, "JNI_CreateJavaVM");
        

jni_get_default_java_vm_init_args =
(Tpfnjni_get_default_java_vm_init_args)dlsym(handle, "JNI_GetDefaultJavaVMInitArgs");

        jni_get_created_java_vms =
(Tpfnjni_get_created_java_vms)dlsym(handle, "JNI_GetCreatedJavaVMs");         

if(jni_create_java_vm && jni_get_default_java_vm_init_args &&            

jni_get_created_java_vms) {

          jk_log(l, JK_LOG_DEBUG,
                   "In load_jvm_dll, symbols 
resolved, done\n");
            return JK_TRUE;
        }
       jk_log(l, JK_LOG_EMERG,
               "Can't resolve 
JNI_CreateJavaVM or JNI_GetDefaultJavaVMInitArgs\n");
        dlclose(handle);

    }
#endif
    
Can't find what you're looking for?X

return JK_FALSE;
}

Also the apache13/bin/apxs script needed to be modified to link mod_jk.so
changing CFG_LDFLAGS_SHLIB

#modifed for AIX

my $CFG_LDFLAGS_SHLIB = q( -
bexpall -bM:SRE -bnoentry -bI:/services/apache/libexec/httpd.exp -lc -ldl); # substituted via Makefile.tmpl
#my $CFG_LDFLAGS_SHLIB = q(-H512 -T512 -bhalt:4 -bM:SRE -bnoentry -
bI:/services/apache/libexec/httpd.exp -lc); # substituted via Makefile.tmpl

after this
change mod_jk.so seems to work for Apache 1.3 --> Tomcat 4.0.2

I am trying Apache 2.0.36 now and
find that the only way I can get modules to load is to use the IBM xlc_r compiler and mod_jk.so in the jk/native/apache-2.0
does not link.
Any body have a simular issues under AIX? Solutions?

build-unix.sh failes to link giving the following output :

/services/apache2/build/libtool --silent --mode=link xlc_r -o mod_jk.so -rpath /
services/apache2/modules -module -avoid-version -I../common - I/services/apache2/
include/apr-util -I/usr/java130/include - I/usr/java130/include/linux mod_jk.lo
 jk_worker.lo jk_util.lo jk_uri_worker_map.lo jk_sockbuf.lo jk_pool.lo jk_nwmain
.lo jk_msg_buff.lo jk_md5.lo jk_map.lo
jk_lb_worker.lo jk_jni_worker.lo jk_conte xt.lo jk_connect.lo jk_ajp_common.lo

jk_ajp14_worker.lo jk_ajp14.lo jk_ajp13_wor
ker.lo jk_ajp13.lo 
jk_ajp12_worker.lo

ld: 0711-317 ERROR: Undefined symbol: .main ld: 0711-345 Use the -
bloadmap or -bnoquiet option to obtain more information. apxs:Error: Command failed with
rc=524288

To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org For additional commands, e-mail: bugs-help@httpd.apache.org Received on Fri May 31 18:11:32 2002

This archive was generated by hypermail 2.1.8 : Wed Aug 23 2006 - 16:43:38 EDT

Don't know where to look next?X

Contact Us  Legal Notices  Order Services Online 
Pantek Home  Privacy Policy  IT news  Site Map  Pantek Library