blob: 6364dbcafa1c753b0f9e564e0ed0e3f4d96e0f7a [file] [log] [blame]
/*
* Copyright 1999-2004 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "jk_global.h"
#include "jk_logger.h"
#include "jk_pool.h"
#include "jk_service.h"
#include "jk_env.h"
#include "jk_registry.h"
/***************************************************************************
* Description: Worker list *
* Version: $Revision$ *
***************************************************************************/
/** Static declarations for all 'hardcoded' modules. This is a hack,
* needed to initialize the static 'type system' for jk.
*
* A better solution would use 'introspection' and dlsyms to locate the
* factory, using the common naming schema. This is a bit harder to implement
* ( we can do it later ) and may have problems on some buggy OSs ( I assume
* most decent systems support .so/.dll and symbols, but you can never know )
*
* Both solutions could be used in paralel - for start we'll use this
* hack and static registration. Don't put anything else here, just
* static declarations for the factory methods and the registrerFactory() call.
*
* (based on jk_worker_list.h )
* @author: Gal Shachor <shachor@il.ibm.com>
* @author: Henri Gomez <hgomez@apache.org>
* @author: Costin Manolache
*
*/
/**
* Init the components that we compile in by default.
* In future we should have a more flexible mechanism that would allow
* different server modules to load and register various jk objects, or
* even have jk load it's own modules from .so files.
*
* For now the static registrartion should work.
*/
void JK_METHOD jk2_registry_init(jk_env_t *env)
{
if (env == NULL) {
/* XXX do something ! */
printf("jk2_registry_init: Assertion failed, env==NULL\n");
return;
}
/**
* Because the functions being referenced here (apjp14_work_factory, and
* lb_worker_factory) don't match the prototype declared for registerFactory,
* and because the MetroWerks compiler (used for NetWare) treats this as an
* error, I'm casting the function pointers to (void *) - mmanders
*/
env->registerFactory(env, "logger.file", jk2_logger_file_factory);
env->registerFactory(env, "logger.win32", jk2_logger_win32_factory);
env->registerFactory(env, "workerEnv", jk2_workerEnv_factory);
env->registerFactory(env, "uriMap", jk2_uriMap_factory);
env->registerFactory(env, "uriEnv", jk2_uriEnv_factory);
env->registerFactory(env, "endpoint", jk2_endpoint_factory);
env->registerFactory(env, "uri", jk2_uriEnv_factory);
env->registerFactory(env, "config", jk2_config_file_factory);
env->registerFactory(env, "ajp13", jk2_worker_ajp13_factory);
env->registerFactory(env, "lb", jk2_worker_lb_factory);
env->registerFactory(env, "status", jk2_worker_status_factory);
env->registerFactory(env, "run", jk2_worker_run_factory);
env->registerFactory(env, "channel.un", jk2_channel_un_factory);
env->registerFactory(env, "channel.socket",
jk2_channel_apr_socket_factory);
env->registerFactory(env, "shm", jk2_shm_factory);
env->registerFactory(env, "handler.response",
jk2_handler_response_factory);
env->registerFactory(env, "handler.logon", jk2_handler_logon_factory);
env->registerFactory(env, "threadMutex", jk2_mutex_thread_factory);
env->registerFactory(env, "procMutex", jk2_mutex_proc_factory);
env->registerFactory(env, "channel.jni", jk2_channel_jni_factory);
env->registerFactory(env, "worker.jni", jk2_worker_jni_factory);
env->registerFactory(env, "vm", jk2_vm_factory);
env->registerFactory(env, "signal", jk2_signal_factory);
env->registerFactory(env, "user", jk2_user_factory);
}