org.apache.jk.common
Class JniHandler
java.lang.Object
org.apache.jk.core.JkHandler
org.apache.jk.common.JniHandler
- All Implemented Interfaces:
- java.util.EventListener, javax.management.MBeanRegistration, javax.management.NotificationListener
- Direct Known Subclasses:
- ChannelJni, ChannelUn, Shm
- public class JniHandler
- extends JkHandler
Base class for components using native code ( libjkjni.so ).
It allows to access the jk_env and wrap ( 'box' ? ) a native
jk component, and call it's methods.
Note that get/setAttribute are expensive ( Strings, etc ),
invoke() is were all optimizations are done. We do recycle
all memory on both C and java sides ( the only exception is
when we attempt pinning but the VM doesn't support it ). The
low level optimizations from ByteBuffer, etc are used to
reduce the overhead of passing strings.
- Author:
- Costin Manolache
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 |
Methods inherited from class org.apache.jk.core.JkHandler |
addHandlerCallback, createMsgContext, destroy, getDomain, getId, getName, getNext, getObjectName, getProperty, handleNotification, postDeregister, postRegister, preDeregister, preRegister, setId, setName, setNext, setNext, setProperty, setWorkerEnv |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
apr
protected org.apache.jk.apr.AprImpl apr
nativeJkHandlerP
protected long nativeJkHandlerP
jkHome
protected java.lang.String jkHome
JK_HANDLE_JNI_DISPATCH
public static final int JK_HANDLE_JNI_DISPATCH
- See Also:
- Constant Field Values
JK_HANDLE_SHM_DISPATCH
public static final int JK_HANDLE_SHM_DISPATCH
- See Also:
- Constant Field Values
MSG_NOTE
public static final int MSG_NOTE
- See Also:
- Constant Field Values
MB_NOTE
public static final int MB_NOTE
- See Also:
- Constant Field Values
JniHandler
public JniHandler()
setJkHome
public void setJkHome(java.lang.String s)
getJkHome
public java.lang.String getJkHome()
init
public void init()
throws java.io.IOException
- You must call initNative() inside the component init()
- Overrides:
init
in class JkHandler
- Throws:
java.io.IOException
initNative
protected void initNative(java.lang.String nativeComponentName)
appendString
public void appendString(Msg msg,
java.lang.String s,
C2BConverter charsetDecoder)
throws java.io.IOException
- Throws:
java.io.IOException
pause
public void pause()
throws java.lang.Exception
- Overrides:
pause
in class JkHandler
- Throws:
java.lang.Exception
resume
public void resume()
throws java.lang.Exception
- Overrides:
resume
in class JkHandler
- Throws:
java.lang.Exception
createMsgContext
public MsgContext createMsgContext()
- Create a msg context to be used with the shm channel
- Overrides:
createMsgContext
in class JkHandler
setNativeAttribute
public void setNativeAttribute(java.lang.String name,
java.lang.String val)
throws java.io.IOException
- Throws:
java.io.IOException
initJkComponent
public void initJkComponent()
throws java.io.IOException
- Throws:
java.io.IOException
destroyJkComponent
public void destroyJkComponent()
throws java.io.IOException
- Throws:
java.io.IOException
setNativeEndpoint
protected void setNativeEndpoint(MsgContext msgCtx)
recycleNative
protected void recycleNative(MsgContext ep)
nativeDispatch
protected int nativeDispatch(Msg msg,
MsgContext ep,
int code,
int raw)
throws java.io.IOException
- send and get the response in the same buffer. This calls the
method on the wrapped jk_bean object.
- Throws:
java.io.IOException
invoke
public int invoke(Msg msg,
MsgContext ep)
throws java.io.IOException
- Base implementation for invoke. Dispatch the action to the native
code, where invoke() is called on the wrapped jk_bean.
- Overrides:
invoke
in class JkHandler
- Throws:
java.io.IOException
Copyright © 2000-2012 Apache Software Foundation. All Rights Reserved.