org.apache.jk.apr
Class AprImpl

java.lang.Object
  extended byorg.apache.jk.core.JkHandler
      extended byorg.apache.jk.apr.AprImpl
All Implemented Interfaces:
java.util.EventListener, javax.management.MBeanRegistration, javax.management.NotificationListener

public class AprImpl
extends JkHandler

Implements the interface with the APR library. This is for internal-use only. The goal is to use 'natural' mappings for user code - for example java.net.Socket for unix-domain sockets, etc.


Field Summary
 
Fields inherited from class org.apache.jk.core.JkHandler
domain, ERROR, HANDLE_FLUSH, HANDLE_RECEIVE_PACKET, HANDLE_SEND_PACKET, HANDLE_THREAD_END, id, LAST, mserver, name, next, nextName, OK, oname, properties, wEnv
 
Constructor Summary
AprImpl()
           
 
Method Summary
 void addJkHandler(java.lang.String type, JkHandler cb)
          Add a Handler for jni callbacks.
static java.lang.Object createJavaContext(java.lang.String type, long cContext)
           
 long createJkHandler(long xEnv, java.lang.String compName)
           
static byte[] getBuffer(java.lang.Object ctx, int id)
          Return a buffer associated with the ctx.
 long getJkEnv()
           
 long getJkHandler(long xEnv, java.lang.String compName)
          Get a native component
 void init()
          Should register the request types it can handle, same style as apache2.
 int initialize()
          Initialize APR
 boolean isLoaded()
           
 int jkDestroy(long xEnv, long componentP)
           
 java.lang.String jkGetAttribute(long xEnv, long componentP, java.lang.String name)
           
 int jkInit(long xEnv, long componentP)
           
static int jkInvoke(long xEnv, long componentP, long endpointP, int code, byte[] data, int off, int len, int raw)
          Send the packet to the C side.
 void jkRecycle(long xEnv, long endpointP)
          Recycle an endpoint after use.
 int jkSetAttribute(long xEnv, long componentP, java.lang.String name, java.lang.String val)
           
static int jniInvoke(long jContext, java.lang.Object ctx)
           
static void jniMode()
           
 void loadNative()
          This method of loading the libs doesn't require setting LD_LIBRARY_PATH.
 void loadNative(java.lang.String libPath)
           
 void releaseJkEnv(long xEnv)
          Clean the temp pool, put back the env in the pool
 void setAprHome(java.lang.String s)
           
 void setBaseDir(java.lang.String s)
          Native libraries are located based on base dir.
static void setErr(java.lang.String filename)
          Sets the System.err stream
 void setJniModeSo(java.lang.String jniModeSo)
          Name of the so used in inprocess mode
 void setNativeSo(java.lang.String nativeSo)
          name of the so used by java.
static void setOut(java.lang.String filename)
          Sets the System.out stream
 void setSoExt(java.lang.String s)
           
 int terminate()
           
 
Methods inherited from class org.apache.jk.core.JkHandler
addHandlerCallback, createMsgContext, destroy, getDomain, getId, getName, getNext, getObjectName, getProperty, handleNotification, invoke, pause, postDeregister, postRegister, preDeregister, preRegister, resume, setId, setName, setNext, setNext, setProperty, setWorkerEnv
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AprImpl

public AprImpl()
Method Detail

setBaseDir

public void setBaseDir(java.lang.String s)
Native libraries are located based on base dir. XXX Add platform, version, etc


setSoExt

public void setSoExt(java.lang.String s)

setAprHome

public void setAprHome(java.lang.String s)

addJkHandler

public void addJkHandler(java.lang.String type,
                         JkHandler cb)
Add a Handler for jni callbacks.


setJniModeSo

public void setJniModeSo(java.lang.String jniModeSo)
Name of the so used in inprocess mode


setNativeSo

public void setNativeSo(java.lang.String nativeSo)
name of the so used by java. If not set we'll loadLibrary("jkjni" ), if set we load( nativeSo )


setOut

public static void setOut(java.lang.String filename)
Sets the System.out stream


setErr

public static void setErr(java.lang.String filename)
Sets the System.err stream


initialize

public int initialize()
Initialize APR


terminate

public int terminate()

getJkEnv

public long getJkEnv()

releaseJkEnv

public void releaseJkEnv(long xEnv)
Clean the temp pool, put back the env in the pool


getJkHandler

public long getJkHandler(long xEnv,
                         java.lang.String compName)
Get a native component

Returns:
0 if the component is not found.

createJkHandler

public long createJkHandler(long xEnv,
                            java.lang.String compName)

jkSetAttribute

public int jkSetAttribute(long xEnv,
                          long componentP,
                          java.lang.String name,
                          java.lang.String val)

jkGetAttribute

public java.lang.String jkGetAttribute(long xEnv,
                                       long componentP,
                                       java.lang.String name)

jkInit

public int jkInit(long xEnv,
                  long componentP)

jkDestroy

public int jkDestroy(long xEnv,
                     long componentP)

jkInvoke

public static int jkInvoke(long xEnv,
                           long componentP,
                           long endpointP,
                           int code,
                           byte[] data,
                           int off,
                           int len,
                           int raw)
Send the packet to the C side. On return it contains the response or indication there is no response. Asymetrical because we can't do things like continuations.


jkRecycle

public void jkRecycle(long xEnv,
                      long endpointP)
Recycle an endpoint after use.


createJavaContext

public static java.lang.Object createJavaContext(java.lang.String type,
                                                 long cContext)

getBuffer

public static byte[] getBuffer(java.lang.Object ctx,
                               int id)
Return a buffer associated with the ctx.


jniInvoke

public static int jniInvoke(long jContext,
                            java.lang.Object ctx)

init

public void init()
          throws java.io.IOException
Description copied from class: JkHandler
Should register the request types it can handle, same style as apache2.

Overrides:
init in class JkHandler
Throws:
java.io.IOException

isLoaded

public boolean isLoaded()

jniMode

public static void jniMode()

loadNative

public void loadNative()
                throws java.lang.Throwable
This method of loading the libs doesn't require setting LD_LIBRARY_PATH. Assuming a 'right' binary distribution, or a correct build all files will be in their right place. The burden is on our code to deal with platform specific extensions and to keep the paths consistent - not easy, but worth it if it avoids one extra step for the user. Of course, this can change to System.load() and putting the libs in LD_LIBRARY_PATH.

Throws:
java.lang.Throwable

loadNative

public void loadNative(java.lang.String libPath)


Copyright © 2000-2003 Apache Software Foundation. All Rights Reserved.