FAQ

[Tomcat-users] Problems after updating from Tomcat 3.3 to 4.1: http tunneling servlet not working anymore

Volker
Jul 26, 2011 at 2:30 pm
Hello,

my current system configuration is like following:

- FreeBSD 8.2
- apache-2.2.17_2
- mod_jk-ap2-1.2.31_1 Apache2 JK
- tomcat 4.1.36_2
- diablo-jdk1.6.0

In order to provide a http tunneling for a chat server I have been
using*tomcat 3.3*, FreeBSD 5.4, Apache 1.3, mod_jk (ajp12 Connector) and
diablo-jre1.5.0 in combination with a certain http tunneling servlet
*without any problems* for several years.
That http tunneling servlet is passed via a chat applet via "<PARAM
NAME='HttpServlet'
VALUE='http://test.Domain.com/servlet/*HttpTunnelingServletdc*'>
The configuration for that system above _*can be found below*_ *=>
Configuration for tomcat 3.3

*After upgrading to FreeBSD 8.2 I had to upgrade from tomcat 3.3 to 4.1
because I did not find any port for tomcat version 3.3.
I do not manage to make the httpd tunneling applet running correctly
with ajp1.3 but I think it does not depend on the connector but a
misconfigured mapping.

I guess that following warning in mod_jk.log shows up the reason for my
problem when requesting
http://test.Domain.com/servlet/*HttpTunnelingServletdc*'
*[Tue Jul 26 13:00:56.615 2011] [36163:34382823872] [warn]
map_uri_to_worker_ext::jk_uri_worker_map.c (962): Uri * is invalid. Uri
must start with /*

However the tomcat 4.1 start page is accessible via http://domain:8180
and working correctly!

Below you find the configuration of my current system under FreeBSD
mentioned above with tomcat 4.1.36 and apache 2.2.17 which does not run
correctly _and the configuration for tomcat 3.3 which is running
correctly_.*

*Since I am not familiar with tomcat I would be glad if someone could
give me a hint to solve my problem.
Or maybe someone can give me some hints for how to compile tomcat 3.3
sources for FreeBSD ;-)


Thanks a lot and best regards

Volker
*
============================================================================
NOT WORKING
Configuration for Tomcat 4.1.36 (FreeBSD 8.2, Apache 2.2.17,
mod_jk-ap2-1.2.31, Diablo JDK 1.6)
**============================================================================

The servlet classes result in:
*/usr/local/apache-tomcat4.1/webapps/ROOT/WEB-INF/classes*
*/usr/local/apache-tomcat4.1/webapps/ROOT/WEB-INF/classes*/*com/....*
*/usr/local/apache-tomcat4.1/webapps/ROOT/WEB-INF/classes/digi/...
...
*
httpd.conf
*JkWorkersFile "/usr/local/etc/apache22/workers.properties"
JkLogFile "/usr/local/apache-tomcat4.1/logs/mod_jk.log"
JkShmFile /var/log/jk-runtime-status
JkLogLevel info
*
workers.properties
*workers.java_home=/usr/local/diablo-jdk1.6.0
workers.tomcat_home=/usr/local/apache-tomcat4.1
worker.list=jsp-hostname
worker.jsp-hostname.port=8009
worker.jsp-hostname.host=127.0.0.1
worker.jsp-hostname.type=ajp13
worker.jsp-hostname.lbfactor=1*

**server.xml*
<Service name="Tomcat-Standalone">
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8180" enableLookups="true" redirectPort="8443"
acceptCount="100" connectionTimeout="20000"
useURIValidationHack="false" disableUploadTimeout="true" />

<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8009" enableLookups="true" redirectPort="8443"
connectionTimeout="0"
useURIValidationHack="false"

protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" />

<Engine name="Standalone" defaultHost="localhost" debug="0"
jvmRoute="jsp-hostname">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="catalina_log." suffix=".txt"
timestamp="true"/>

<!-- Define the default virtual host -->
<Host name="localhost" debug="0" appBase="webapps"
unpackWARs="true" autoDeploy="true">

<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="localhost_log." suffix=".txt"
timestamp="true"/>

<!-- Tomcat Root Context -->

<Context path="/ROOT" docBase="ROOT" debug="0" reloadable="true"
crossContext="true">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="ROOT-http-tunneling_log." suffix=".txt" timestamp="true"/>
</Context>

<!-- Tomcat Examples Context -->
<Context path="/examples" docBase="examples" debug="1" reloadable="true"
crossContext="true">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_examples_log." suffix=".txt" timestamp="true"/>
<Ejb name="ejb/EmplRecord" type="Entity"
home="com.wombat.empl.EmployeeRecordHome"
remote="com.wombat.empl.EmployeeRecord"/>


*web.xml*
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>
HttpTunnelingServletdc
</servlet-name>
<servlet-class>
*com.diginet.digichat.util.tunnel3.HttpTunnelingServlet*
</servlet-class>
<init-param>
<param-name>Host</param-name>
<param-value>localhost</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpTunnelingServletdc</servlet-name>
<url-pattern>/HttpTunnelingServletdc</url-pattern>
</servlet-mapping>
</web-app>

*catalina.out*
StandardEngine[null]: setJvmRoute=jsp-hostname
Jul 26, 2011 11:25:19 AM org.apache.coyote.http11.Http11BaseProtocol init
INFO: Initializing Coyote HTTP/1.1 on http-8180
Starting service Tomcat-Standalone
Apache Tomcat/4.1.36
HTTP Tunnel connected to the digichat server localhost
HTTP Tunnel connected to the digichat server localhost
Jul 26, 2011 11:25:20 AM org.apache.coyote.http11.Http11BaseProtocol start
INFO: Starting Coyote HTTP/1.1 on http-8180
Jul 26, 2011 11:25:20 AM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
Jul 26, 2011 11:25:20 AM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/17 config=null

*mod_jk.log*
[Tue Jul 26 11:25:13.007 2011] [35031:34382823872] [info]
init_jk::mod_jk.c (3198): mod_jk/1.2.31 (1026297) initialized
[Tue Jul 26 11:29:37.458 2011] [35103:34382823872] [warn]
map_uri_to_worker_ext::jk_uri_worker_map.c (962): Uri * is invalid. Uri
must start with /
[Tue Jul 26 11:30:15.672 2011] [35034:34382823872] [warn]
map_uri_to_worker_ext::jk_uri_worker_map.c (962): Uri * is invalid. Uri
must start with /

*ROOT-http-tunneling_log.2011-07-26.txt*
2011-07-26 11:25:19 WebappLoader[/ROOT]: Deploying class repositories to
work directory /usr/local/apache-tomcat4.1/work/Standalone/localhost/ROOT
2011-07-26 11:25:19 WebappLoader[/ROOT]: Deploy class files
/WEB-INF/classes to /usr/local/apache-tomcat4.1/webapps/ROOT/WEB-INF/classes
2011-07-26 11:25:19 WebappLoader[/ROOT]: Reloading checks are enabled
for this Context
2011-07-26 11:25:19 StandardManager[/ROOT]: Seeding random number
generator class java.security.SecureRandom
2011-07-26 11:25:19 StandardManager[/ROOT]: Seeding of random number
generator has been completed
2011-07-26 11:25:19 StandardWrapper[/ROOT:default]: Loading container
servlet default
2011-07-26 11:25:19 StandardWrapper[/ROOT:invoker]: Loading container
servlet invoker


*Requesting http://www.domain.com/servlet/HttpTunnelingServletdc via
Browser results in:*


HTTP Status 500 -

*type* Exception report

*message*

*description* _The server encountered an internal error () that
prevented it from fulfilling this request._

*exception*

javax.servlet.ServletException
at com.diginet.digichat.util.tunnel3.HttpTunnelingServlet.doGet([DashoPro-V1.3BETA-091199])
at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:199)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:145)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:955)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:139)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:955)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2460)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:119)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:955)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:955)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:157)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Thread.java:619)

*root cause*

java.lang.NullPointerException
at com.diginet.digichat.util.tunnel3.HttpTunnelingServlet.doGet([DashoPro-V1.3BETA-091199])
at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:199)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:145)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:955)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:139)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:955)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2460)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:119)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:955)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:955)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:157)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Thread.java:619)

------------------------------------------------------------------------


Apache Tomcat/4.1.3


===================================================================================
*WORKING
Configuration for tomcat 3.3 (FreeBSD 5.4, Apache 1.3.41, Tomcat 3.3.2,
mod_jk 1.2.15, Diablo JRE 1.5)
**============================================================================*
*
SERVER.XML
* (jakarta-tomcat3.3/conf)
<Ajp12Connector port="8007" />

*web.xml*
(/jakarta-tomcat3.3/webapps/ROOT/WEB-INF)
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd"><web-app>
<servlet>
<servlet-name>
HttpTunnelingServletdc
</servlet-name>
<servlet-class>
com.diginet.digichat.util.tunnel3.HttpTunnelingServlet
</servlet-class>
<init-param>
<param-name>Host</param-name>
<param-value>localhost</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HttpTunnelingServlet</servlet-name>
<url-pattern>/HttpTunnelingServlet</url-pattern>
</servlet-mapping>
</web-app>

*workers.properties*
worker.ajp12.type=ajp12
worker.ajp12.port=8007
worker.ajp12.host=localhost
worker.ajp12.lbfactor=1

*mod_jk.conf*
<IfModule !mod_jk.c>
LoadModule jk_module /usr/local/libexec/apache/mod_jk.so
</IfModule>
JkWorkersFile "/usr/local/jakarta-tomcat3.3/conf/jk/workers.properties"
JkLogFile "/usr/local/jakarta-tomcat3.3/logs/mod_jk.log"
JkShmFile /var/log/jk-runtime-status
JkLogLevel info
JkMount /servlet/* ajp12
reply

Search Discussions

9 responses

  • David kerber at Jul 26, 2011 at 2:44 pm

    On 7/26/2011 10:29 AM, Volker wrote:
    Hello,

    my current system configuration is like following:

    - FreeBSD 8.2
    - apache-2.2.17_2
    - mod_jk-ap2-1.2.31_1 Apache2 JK
    - tomcat 4.1.36_2
    - diablo-jdk1.6.0
    Since you have to upgrade any way, why not upgrade to a current version
    of TC, such as 6.0.x, or 7.x? You're not likely to find many people
    here who remember (or even ever used) tc 4.x.

    D

    ---------------------------------------------------------------------
    To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
    For additional commands, e-mail: users-help@tomcat.apache.org
  • Volker at Jul 26, 2011 at 2:58 pm

    Am 26.07.2011 16:43, schrieb David kerber:
    On 7/26/2011 10:29 AM, Volker wrote:
    Hello,

    my current system configuration is like following:

    - FreeBSD 8.2
    - apache-2.2.17_2
    - mod_jk-ap2-1.2.31_1 Apache2 JK
    - tomcat 4.1.36_2
    - diablo-jdk1.6.0
    Since you have to upgrade any way, why not upgrade to a current
    version of TC, such as 6.0.x, or 7.x? You're not likely to find many
    people here who remember (or even ever used) tc 4.x.

    D
    Hi,

    I chose tomcat 4.1 because I thought that the differences in
    configuration of tomcat 4.1 compared with 3.3 are less than compared
    with 7.x.

    If you could have a look on my working config of 3.3 and tell me how to
    transfer them in a config for 7.x I even would install 7.x ;-)
    I really "only" use it for that littel http tunneling script!

    Best regards
    Volker
    ---------------------------------------------------------------------
    To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
    For additional commands, e-mail: users-help@tomcat.apache.org
    ---------------------------------------------------------------------
    To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
    For additional commands, e-mail: users-help@tomcat.apache.org
  • Volker at Jul 26, 2011 at 2:47 pm
    I forget to mention that in httpd.conf the connectors are integrated
    like following:

    <virtualhost domain.com test.domain.com>
    ....
    JkMount /servlet jsp-hostname
    JkMount /servlet/* jsp-hostname
    </virtualhost>

    Best regards
    Volker

    Am 26.07.2011 16:29, schrieb Volker:
    Hello,

    my current system configuration is like following:

    - FreeBSD 8.2
    - apache-2.2.17_2
    - mod_jk-ap2-1.2.31_1 Apache2 JK
    - tomcat 4.1.36_2
    - diablo-jdk1.6.0

    In order to provide a http tunneling for a chat server I have been
    using*tomcat 3.3*, FreeBSD 5.4, Apache 1.3, mod_jk (ajp12 Connector)
    and diablo-jre1.5.0 in combination with a certain http tunneling
    servlet *without any problems* for several years.
    That http tunneling servlet is passed via a chat applet via "<PARAM
    NAME='HttpServlet'
    VALUE='http://test.Domain.com/servlet/*HttpTunnelingServletdc*'>
    The configuration for that system above _*can be found below*_ *=>
    Configuration for tomcat 3.3

    *After upgrading to FreeBSD 8.2 I had to upgrade from tomcat 3.3 to
    4.1 because I did not find any port for tomcat version 3.3.
    I do not manage to make the httpd tunneling applet running correctly
    with ajp1.3 but I think it does not depend on the connector but a
    misconfigured mapping.

    I guess that following warning in mod_jk.log shows up the reason for
    my problem when requesting
    http://test.Domain.com/servlet/*HttpTunnelingServletdc*'
    *[Tue Jul 26 13:00:56.615 2011] [36163:34382823872] [warn]
    map_uri_to_worker_ext::jk_uri_worker_map.c (962): Uri * is invalid.
    Uri must start with /*

    However the tomcat 4.1 start page is accessible via http://domain:8180
    and working correctly!

    Below you find the configuration of my current system under FreeBSD
    mentioned above with tomcat 4.1.36 and apache 2.2.17 which does not
    run correctly _and the configuration for tomcat 3.3 which is running
    correctly_.*

    *Since I am not familiar with tomcat I would be glad if someone could
    give me a hint to solve my problem.
    Or maybe someone can give me some hints for how to compile tomcat 3.3
    sources for FreeBSD ;-)


    Thanks a lot and best regards

    Volker
    *
    ============================================================================

    NOT WORKING
    Configuration for Tomcat 4.1.36 (FreeBSD 8.2, Apache 2.2.17,
    mod_jk-ap2-1.2.31, Diablo JDK 1.6)
    **============================================================================


    The servlet classes result in:
    */usr/local/apache-tomcat4.1/webapps/ROOT/WEB-INF/classes*
    */usr/local/apache-tomcat4.1/webapps/ROOT/WEB-INF/classes*/*com/....*
    */usr/local/apache-tomcat4.1/webapps/ROOT/WEB-INF/classes/digi/...
    ...
    *
    httpd.conf
    *JkWorkersFile "/usr/local/etc/apache22/workers.properties"
    JkLogFile "/usr/local/apache-tomcat4.1/logs/mod_jk.log"
    JkShmFile /var/log/jk-runtime-status
    JkLogLevel info
    *
    workers.properties
    *workers.java_home=/usr/local/diablo-jdk1.6.0
    workers.tomcat_home=/usr/local/apache-tomcat4.1
    worker.list=jsp-hostname
    worker.jsp-hostname.port=8009
    worker.jsp-hostname.host=127.0.0.1
    worker.jsp-hostname.type=ajp13
    worker.jsp-hostname.lbfactor=1*

    **server.xml*
    <Service name="Tomcat-Standalone">
    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
    port="8180" enableLookups="true" redirectPort="8443"
    acceptCount="100" connectionTimeout="20000"
    useURIValidationHack="false"
    disableUploadTimeout="true" />

    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
    port="8009" enableLookups="true" redirectPort="8443"
    connectionTimeout="0"
    useURIValidationHack="false"

    protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" />

    <Engine name="Standalone" defaultHost="localhost" debug="0"
    jvmRoute="jsp-hostname">
    <Logger className="org.apache.catalina.logger.FileLogger"
    prefix="catalina_log." suffix=".txt"
    timestamp="true"/>

    <!-- Define the default virtual host -->
    <Host name="localhost" debug="0" appBase="webapps"
    unpackWARs="true" autoDeploy="true">

    <Logger className="org.apache.catalina.logger.FileLogger"
    directory="logs" prefix="localhost_log." suffix=".txt"
    timestamp="true"/>

    <!-- Tomcat Root Context -->

    <Context path="/ROOT" docBase="ROOT" debug="0" reloadable="true"
    crossContext="true">
    <Logger className="org.apache.catalina.logger.FileLogger"
    prefix="ROOT-http-tunneling_log." suffix=".txt" timestamp="true"/>
    </Context>

    <!-- Tomcat Examples Context -->
    <Context path="/examples" docBase="examples" debug="1"
    reloadable="true" crossContext="true">
    <Logger className="org.apache.catalina.logger.FileLogger"
    prefix="localhost_examples_log." suffix=".txt" timestamp="true"/>
    <Ejb name="ejb/EmplRecord" type="Entity"
    home="com.wombat.empl.EmployeeRecordHome"
    remote="com.wombat.empl.EmployeeRecord"/>


    *web.xml*
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
    <servlet>
    <servlet-name>
    HttpTunnelingServletdc
    </servlet-name>
    <servlet-class>
    *com.diginet.digichat.util.tunnel3.HttpTunnelingServlet*
    </servlet-class>
    <init-param>
    <param-name>Host</param-name>
    <param-value>localhost</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>invoker</servlet-name>
    <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>HttpTunnelingServletdc</servlet-name>
    <url-pattern>/HttpTunnelingServletdc</url-pattern>
    </servlet-mapping>
    </web-app>

    *catalina.out*
    StandardEngine[null]: setJvmRoute=jsp-hostname
    Jul 26, 2011 11:25:19 AM org.apache.coyote.http11.Http11BaseProtocol init
    INFO: Initializing Coyote HTTP/1.1 on http-8180
    Starting service Tomcat-Standalone
    Apache Tomcat/4.1.36
    HTTP Tunnel connected to the digichat server localhost
    HTTP Tunnel connected to the digichat server localhost
    Jul 26, 2011 11:25:20 AM org.apache.coyote.http11.Http11BaseProtocol
    start
    INFO: Starting Coyote HTTP/1.1 on http-8180
    Jul 26, 2011 11:25:20 AM org.apache.jk.common.ChannelSocket init
    INFO: JK: ajp13 listening on /0.0.0.0:8009
    Jul 26, 2011 11:25:20 AM org.apache.jk.server.JkMain start
    INFO: Jk running ID=0 time=0/17 config=null

    *mod_jk.log*
    [Tue Jul 26 11:25:13.007 2011] [35031:34382823872] [info]
    init_jk::mod_jk.c (3198): mod_jk/1.2.31 (1026297) initialized
    [Tue Jul 26 11:29:37.458 2011] [35103:34382823872] [warn]
    map_uri_to_worker_ext::jk_uri_worker_map.c (962): Uri * is invalid.
    Uri must start with /
    [Tue Jul 26 11:30:15.672 2011] [35034:34382823872] [warn]
    map_uri_to_worker_ext::jk_uri_worker_map.c (962): Uri * is invalid.
    Uri must start with /

    *ROOT-http-tunneling_log.2011-07-26.txt*
    2011-07-26 11:25:19 WebappLoader[/ROOT]: Deploying class repositories
    to work directory
    /usr/local/apache-tomcat4.1/work/Standalone/localhost/ROOT
    2011-07-26 11:25:19 WebappLoader[/ROOT]: Deploy class files
    /WEB-INF/classes to
    /usr/local/apache-tomcat4.1/webapps/ROOT/WEB-INF/classes
    2011-07-26 11:25:19 WebappLoader[/ROOT]: Reloading checks are enabled
    for this Context
    2011-07-26 11:25:19 StandardManager[/ROOT]: Seeding random number
    generator class java.security.SecureRandom
    2011-07-26 11:25:19 StandardManager[/ROOT]: Seeding of random number
    generator has been completed
    2011-07-26 11:25:19 StandardWrapper[/ROOT:default]: Loading container
    servlet default
    2011-07-26 11:25:19 StandardWrapper[/ROOT:invoker]: Loading container
    servlet invoker


    *Requesting http://www.domain.com/servlet/HttpTunnelingServletdc via
    Browser results in:*


    HTTP Status 500 -

    *type* Exception report

    *message*

    *description* _The server encountered an internal error () that
    prevented it from fulfilling this request._

    *exception*

    javax.servlet.ServletException
    at
    com.diginet.digichat.util.tunnel3.HttpTunnelingServlet.doGet([DashoPro-V1.3BETA-091199])
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    at
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:199)
    at
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:145)
    at
    org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
    at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
    at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
    at
    org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:955)
    at
    org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:139)
    at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
    at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
    at
    org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:955)
    at
    org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2460)
    at
    org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133)
    at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
    at
    org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:119)
    at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
    at
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
    at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
    at
    org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:955)
    at
    org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127)
    at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
    at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
    at
    org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:955)
    at
    org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:157)
    at
    org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200)
    at
    org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
    at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773)
    at
    org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
    at
    org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895)
    at
    org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
    at java.lang.Thread.run(Thread.java:619)

    *root cause*

    java.lang.NullPointerException
    at
    com.diginet.digichat.util.tunnel3.HttpTunnelingServlet.doGet([DashoPro-V1.3BETA-091199])
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    at
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:199)
    at
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:145)
    at
    org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
    at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
    at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
    at
    org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:955)
    at
    org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:139)
    at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
    at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
    at
    org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:955)
    at
    org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2460)
    at
    org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133)
    at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
    at
    org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:119)
    at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
    at
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
    at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
    at
    org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:955)
    at
    org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127)
    at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
    at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
    at
    org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:955)
    at
    org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:157)
    at
    org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200)
    at
    org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
    at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773)
    at
    org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
    at
    org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895)
    at
    org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
    at java.lang.Thread.run(Thread.java:619)

    ------------------------------------------------------------------------


    Apache Tomcat/4.1.3


    ===================================================================================

    *WORKING
    Configuration for tomcat 3.3 (FreeBSD 5.4, Apache 1.3.41, Tomcat
    3.3.2, mod_jk 1.2.15, Diablo JRE 1.5)
    **============================================================================*

    *
    SERVER.XML
    * (jakarta-tomcat3.3/conf)
    <Ajp12Connector port="8007" />

    *web.xml*
    (/jakarta-tomcat3.3/webapps/ROOT/WEB-INF)
    <?xml version="1.0" encoding="ISO-8859-1"?>

    <!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd"><web-app>
    <servlet>
    <servlet-name>
    HttpTunnelingServletdc
    </servlet-name>
    <servlet-class>
    com.diginet.digichat.util.tunnel3.HttpTunnelingServlet
    </servlet-class>
    <init-param>
    <param-name>Host</param-name>
    <param-value>localhost</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>HttpTunnelingServlet</servlet-name>
    <url-pattern>/HttpTunnelingServlet</url-pattern>
    </servlet-mapping>
    </web-app>

    *workers.properties*
    worker.ajp12.type=ajp12
    worker.ajp12.port=8007
    worker.ajp12.host=localhost
    worker.ajp12.lbfactor=1

    *mod_jk.conf*
    <IfModule !mod_jk.c>
    LoadModule jk_module /usr/local/libexec/apache/mod_jk.so
    </IfModule>
    JkWorkersFile "/usr/local/jakarta-tomcat3.3/conf/jk/workers.properties"
    JkLogFile "/usr/local/jakarta-tomcat3.3/logs/mod_jk.log"
    JkShmFile /var/log/jk-runtime-status
    JkLogLevel info
    JkMount /servlet/* ajp12

    ---------------------------------------------------------------------
    To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
    For additional commands, e-mail: users-help@tomcat.apache.org
  • Felix Schumacher at Jul 26, 2011 at 5:54 pm
    Hi Volker,

    Am Dienstag, den 26.07.2011, 16:29 +0200 schrieb Volker:
    Hello,

    my current system configuration is like following:

    - FreeBSD 8.2
    - apache-2.2.17_2
    - mod_jk-ap2-1.2.31_1 Apache2 JK
    - tomcat 4.1.36_2
    As you said elsewhere in this thread, that you are willing to upgrade to
    a newer tomcat as well, I will assume, that you will use tomcat 6 or
    even tomcat 7.
    - diablo-jdk1.6.0

    In order to provide a http tunneling for a chat server I have been
    using*tomcat 3.3*, FreeBSD 5.4, Apache 1.3, mod_jk (ajp12 Connector) and
    diablo-jre1.5.0 in combination with a certain http tunneling servlet
    *without any problems* for several years.
    That http tunneling servlet is passed via a chat applet via "<PARAM
    NAME='HttpServlet'
    VALUE='http://test.Domain.com/servlet/*HttpTunnelingServletdc*'>
    The configuration for that system above _*can be found below*_ *=>
    Configuration for tomcat 3.3
    That looks like you are using the strongly discouraged dispatcher
    servlet. That is still available, but disabled by default. And you
    should leave it that way.
    >
    ...
    Thanks a lot and best regards

    Volker
    *
    ============================================================================
    NOT WORKING
    Configuration for Tomcat 4.1.36 (FreeBSD 8.2, Apache 2.2.17,
    mod_jk-ap2-1.2.31, Diablo JDK 1.6)
    **============================================================================

    The servlet classes result in:
    */usr/local/apache-tomcat4.1/webapps/ROOT/WEB-INF/classes*
    */usr/local/apache-tomcat4.1/webapps/ROOT/WEB-INF/classes*/*com/....*
    */usr/local/apache-tomcat4.1/webapps/ROOT/WEB-INF/classes/digi/...
    I read that as: There are some files and directories under
    WEB-INF/classes in your ROOT webapp and that /usr/local/apache-tomcat4.1
    is your CATALINA_BASE and probably CATALINA_HOME too.
    ...
    *
    httpd.conf
    *JkWorkersFile "/usr/local/etc/apache22/workers.properties"
    JkLogFile "/usr/local/apache-tomcat4.1/logs/mod_jk.log"
    JkShmFile /var/log/jk-runtime-status
    JkLogLevel info Looks OK.
    *
    workers.properties
    *workers.java_home=/usr/local/diablo-jdk1.6.0
    workers.tomcat_home=/usr/local/apache-tomcat4.1
    Remove both deprecated config options java_home and tomcat_home. They
    are not needed anymore.
    worker.list=jsp-hostname
    worker.jsp-hostname.port=8009
    worker.jsp-hostname.host=127.0.0.1
    worker.jsp-hostname.type=ajp13
    worker.jsp-hostname.lbfactor=1*

    **server.xml*
    Copy the server.xml from a fresh tomcat download and replace your
    port-numbers in there.
    <Service name="Tomcat-Standalone"> ...
    <!-- Tomcat Root Context -->

    <Context path="/ROOT" docBase="ROOT" debug="0" reloadable="true"
    crossContext="true">
    <Logger className="org.apache.catalina.logger.FileLogger"
    prefix="ROOT-http-tunneling_log." suffix=".txt" timestamp="true"/>
    </Context>

    <!-- Tomcat Examples Context -->
    <Context path="/examples" docBase="examples" debug="1" reloadable="true"
    crossContext="true">
    <Logger className="org.apache.catalina.logger.FileLogger"
    prefix="localhost_examples_log." suffix=".txt" timestamp="true"/>
    <Ejb name="ejb/EmplRecord" type="Entity"
    home="com.wombat.empl.EmployeeRecordHome"
    remote="com.wombat.empl.EmployeeRecord"/>
    Your context descriptions for ROOT and example would be placed in newly
    created files named ROOT.xml and example.xml under
    $CATALINA_BASE/conf/Catalina/localhost. But I seriously doubt, that you
    need example.xml and ROOT.xml is not needed, if all you want to achieve
    is logging. Look at http://tomcat.apache.org/tomcat-7.0-doc/logging.html
    for more info about simple logging.

    *web.xml*
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
    You could update your webapp to a newer version by replacing the above
    values, but they should do no harm.
    <web-app>
    <servlet>
    <servlet-name>
    HttpTunnelingServletdc
    </servlet-name>
    <servlet-class>
    *com.diginet.digichat.util.tunnel3.HttpTunnelingServlet*
    </servlet-class>
    <init-param>
    <param-name>Host</param-name>
    <param-value>localhost</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>invoker</servlet-name>
    <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>HttpTunnelingServletdc</servlet-name>
    <url-pattern>/HttpTunnelingServletdc</url-pattern>
    </servlet-mapping>
    Instead of mapping a not configured servlet named invoker to /servlet/*
    you should map your servlet named HttpTunnelingServletdc
    to /servlet/HttpTunnelingServletdc or alternatively change your applet
    configuration from top of your post.

    So remove
    <servlet-mapping><servlet-name>invoker</servlet-name>...</servlet-mapping>
    and change url-pattern in the <servlet-mapping>
    from /HttpTunnelingServletdc to /servlet/HttpTunnelingServletdc
    </web-app> ...
    *description* _The server encountered an internal error () that
    prevented it from fulfilling this request._

    *exception*

    javax.servlet.ServletException
    at com.diginet.digichat.util.tunnel3.HttpTunnelingServlet.doGet([DashoPro-V1.3BETA-091199])
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) ...
    at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
    at java.lang.Thread.run(Thread.java:619)

    *root cause*

    java.lang.NullPointerException
    at com.diginet.digichat.util.tunnel3.HttpTunnelingServlet.doGet([DashoPro-V1.3BETA-091199])
    Hopefully you have the source code for HttpTunnelingServlet since this
    line means, your servlet gets invoked, but it is not happy to work :)
    That might come from the fact, that you configured the servlet
    HttpTunnelingServletdc, but used the invoker-servlet. Chances are, that
    the proposed configuration chages in web.xml fix this.

    HTH
    Felix
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:199)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:145) ...
    ------------------------------------------------------------------------


    Apache Tomcat/4.1.3


    ===================================================================================
    *WORKING
    Configuration for tomcat 3.3 (FreeBSD 5.4, Apache 1.3.41, Tomcat 3.3.2,
    mod_jk 1.2.15, Diablo JRE 1.5)
    **============================================================================*
    *
    SERVER.XML
    * (jakarta-tomcat3.3/conf)
    <Ajp12Connector port="8007" />

    *web.xml*
    (/jakarta-tomcat3.3/webapps/ROOT/WEB-INF)
    <?xml version="1.0" encoding="ISO-8859-1"?>

    <!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd"><web-app>
    <servlet>
    <servlet-name>
    HttpTunnelingServletdc
    </servlet-name>
    <servlet-class>
    com.diginet.digichat.util.tunnel3.HttpTunnelingServlet
    </servlet-class>
    <init-param>
    <param-name>Host</param-name>
    <param-value>localhost</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>HttpTunnelingServlet</servlet-name>
    <url-pattern>/HttpTunnelingServlet</url-pattern>
    </servlet-mapping>
    </web-app>

    *workers.properties*
    worker.ajp12.type=ajp12
    worker.ajp12.port=8007
    worker.ajp12.host=localhost
    worker.ajp12.lbfactor=1

    *mod_jk.conf*
    <IfModule !mod_jk.c>
    LoadModule jk_module /usr/local/libexec/apache/mod_jk.so
    </IfModule>
    JkWorkersFile "/usr/local/jakarta-tomcat3.3/conf/jk/workers.properties"
    JkLogFile "/usr/local/jakarta-tomcat3.3/logs/mod_jk.log"
    JkShmFile /var/log/jk-runtime-status
    JkLogLevel info
    JkMount /servlet/* ajp12


    ---------------------------------------------------------------------
    To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
    For additional commands, e-mail: users-help@tomcat.apache.org
  • Volker at Jul 26, 2011 at 11:20 pm
    Hallo Felix,

    thanks for your hints, I will check them out today.

    Believe it or not: Obviously the configuration for tomcat 4.1 I posted
    here is running correctly.
    But I did not notice it - and this will be the problem for all my chat
    site visitors that need http tunneling - because it takes nearly 2
    minutes with tomcat 4.1 until the chat applets request of

    http://test.Domain.com/servlet/*HttpTunnelingServletdc

    does show up in apache?s log file whereas tomcat 3.3 is requesting the
    tunneling servlet at once.

    Result:
    Chatters behind a firewall that blocks several ports except port 80 can
    enter the chat in a few seconds by help of the tunneling servlet and
    tomcat 3.3.
    With tomcat 4.1 they will think the chat does not work and leave the site.

    I only noticed that slow behaviour because I had a phone call after
    requesting the chat applet behind a firewall only permitting port 80.

    Maybe you can recommend any tuning settings for my problem concerning
    tomcat 4.1?


    Thanks a lot and best regards
    V o l k e r

    Am 26.07.2011 19:54, schrieb Felix Schumacher:
    Hi Volker,

    Am Dienstag, den 26.07.2011, 16:29 +0200 schrieb Volker:
    Hello,

    my current system configuration is like following:

    - FreeBSD 8.2
    - apache-2.2.17_2
    - mod_jk-ap2-1.2.31_1 Apache2 JK
    - tomcat 4.1.36_2
    As you said elsewhere in this thread, that you are willing to upgrade to
    a newer tomcat as well, I will assume, that you will use tomcat 6 or
    even tomcat 7.
    - diablo-jdk1.6.0

    In order to provide a http tunneling for a chat server I have been
    using*tomcat 3.3*, FreeBSD 5.4, Apache 1.3, mod_jk (ajp12 Connector) and
    diablo-jre1.5.0 in combination with a certain http tunneling servlet
    *without any problems* for several years.
    That http tunneling servlet is passed via a chat applet via "<PARAM
    NAME='HttpServlet'
    VALUE='http://test.Domain.com/servlet/*HttpTunnelingServletdc*'>
    The configuration for that system above _*can be found below*_ *=>
    Configuration for tomcat 3.3
    That looks like you are using the strongly discouraged dispatcher
    servlet. That is still available, but disabled by default. And you
    should leave it that way.
    ...
    Thanks a lot and best regards

    Volker
    *
    ============================================================================
    NOT WORKING
    Configuration for Tomcat 4.1.36 (FreeBSD 8.2, Apache 2.2.17,
    mod_jk-ap2-1.2.31, Diablo JDK 1.6)
    **============================================================================

    The servlet classes result in:
    */usr/local/apache-tomcat4.1/webapps/ROOT/WEB-INF/classes*
    */usr/local/apache-tomcat4.1/webapps/ROOT/WEB-INF/classes*/*com/....*
    */usr/local/apache-tomcat4.1/webapps/ROOT/WEB-INF/classes/digi/...
    I read that as: There are some files and directories under
    WEB-INF/classes in your ROOT webapp and that /usr/local/apache-tomcat4.1
    is your CATALINA_BASE and probably CATALINA_HOME too.
    ...
    *
    httpd.conf
    *JkWorkersFile "/usr/local/etc/apache22/workers.properties"
    JkLogFile "/usr/local/apache-tomcat4.1/logs/mod_jk.log"
    JkShmFile /var/log/jk-runtime-status
    JkLogLevel info Looks OK.
    *
    workers.properties
    *workers.java_home=/usr/local/diablo-jdk1.6.0
    workers.tomcat_home=/usr/local/apache-tomcat4.1
    Remove both deprecated config options java_home and tomcat_home. They
    are not needed anymore.
    worker.list=jsp-hostname
    worker.jsp-hostname.port=8009
    worker.jsp-hostname.host=127.0.0.1
    worker.jsp-hostname.type=ajp13
    worker.jsp-hostname.lbfactor=1*

    **server.xml*
    Copy the server.xml from a fresh tomcat download and replace your
    port-numbers in there.
    <Service name="Tomcat-Standalone"> ...
    <!-- Tomcat Root Context -->

    <Context path="/ROOT" docBase="ROOT" debug="0" reloadable="true"
    crossContext="true">
    <Logger className="org.apache.catalina.logger.FileLogger"
    prefix="ROOT-http-tunneling_log." suffix=".txt" timestamp="true"/>
    </Context>

    <!-- Tomcat Examples Context -->
    <Context path="/examples" docBase="examples" debug="1" reloadable="true"
    crossContext="true">
    <Logger className="org.apache.catalina.logger.FileLogger"
    prefix="localhost_examples_log." suffix=".txt" timestamp="true"/>
    <Ejb name="ejb/EmplRecord" type="Entity"
    home="com.wombat.empl.EmployeeRecordHome"
    remote="com.wombat.empl.EmployeeRecord"/>
    Your context descriptions for ROOT and example would be placed in newly
    created files named ROOT.xml and example.xml under
    $CATALINA_BASE/conf/Catalina/localhost. But I seriously doubt, that you
    need example.xml and ROOT.xml is not needed, if all you want to achieve
    is logging. Look at http://tomcat.apache.org/tomcat-7.0-doc/logging.html
    for more info about simple logging.
    *web.xml*
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
    You could update your webapp to a newer version by replacing the above
    values, but they should do no harm.
    <web-app>
    <servlet>
    <servlet-name>
    HttpTunnelingServletdc
    </servlet-name>
    <servlet-class>
    *com.diginet.digichat.util.tunnel3.HttpTunnelingServlet*
    </servlet-class>
    <init-param>
    <param-name>Host</param-name>
    <param-value>localhost</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>invoker</servlet-name>
    <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>HttpTunnelingServletdc</servlet-name>
    <url-pattern>/HttpTunnelingServletdc</url-pattern>
    </servlet-mapping>
    Instead of mapping a not configured servlet named invoker to /servlet/*
    you should map your servlet named HttpTunnelingServletdc
    to /servlet/HttpTunnelingServletdc or alternatively change your applet
    configuration from top of your post.

    So remove
    <servlet-mapping><servlet-name>invoker</servlet-name>...</servlet-mapping>
    and change url-pattern in the<servlet-mapping>
    from /HttpTunnelingServletdc to /servlet/HttpTunnelingServletdc
    </web-app> ...
    *description* _The server encountered an internal error () that
    prevented it from fulfilling this request._

    *exception*

    javax.servlet.ServletException
    at com.diginet.digichat.util.tunnel3.HttpTunnelingServlet.doGet([DashoPro-V1.3BETA-091199])
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) ...
    at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
    at java.lang.Thread.run(Thread.java:619)

    *root cause*

    java.lang.NullPointerException
    at com.diginet.digichat.util.tunnel3.HttpTunnelingServlet.doGet([DashoPro-V1.3BETA-091199])
    Hopefully you have the source code for HttpTunnelingServlet since this
    line means, your servlet gets invoked, but it is not happy to work :)
    That might come from the fact, that you configured the servlet
    HttpTunnelingServletdc, but used the invoker-servlet. Chances are, that
    the proposed configuration chages in web.xml fix this.

    HTH
    Felix
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:199)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:145) ...
    ------------------------------------------------------------------------


    Apache Tomcat/4.1.3


    ===================================================================================
    *WORKING
    Configuration for tomcat 3.3 (FreeBSD 5.4, Apache 1.3.41, Tomcat 3.3.2,
    mod_jk 1.2.15, Diablo JRE 1.5)
    **============================================================================*
    *
    SERVER.XML
    * (jakarta-tomcat3.3/conf)
    <Ajp12Connector port="8007" />

    *web.xml*
    (/jakarta-tomcat3.3/webapps/ROOT/WEB-INF)
    <?xml version="1.0" encoding="ISO-8859-1"?>

    <!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd"><web-app>
    <servlet>
    <servlet-name>
    HttpTunnelingServletdc
    </servlet-name>
    <servlet-class>
    com.diginet.digichat.util.tunnel3.HttpTunnelingServlet
    </servlet-class>
    <init-param>
    <param-name>Host</param-name>
    <param-value>localhost</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>HttpTunnelingServlet</servlet-name>
    <url-pattern>/HttpTunnelingServlet</url-pattern>
    </servlet-mapping>
    </web-app>

    *workers.properties*
    worker.ajp12.type=ajp12
    worker.ajp12.port=8007
    worker.ajp12.host=localhost
    worker.ajp12.lbfactor=1

    *mod_jk.conf*
    <IfModule !mod_jk.c>
    LoadModule jk_module /usr/local/libexec/apache/mod_jk.so
    </IfModule>
    JkWorkersFile "/usr/local/jakarta-tomcat3.3/conf/jk/workers.properties"
    JkLogFile "/usr/local/jakarta-tomcat3.3/logs/mod_jk.log"
    JkShmFile /var/log/jk-runtime-status
    JkLogLevel info
    JkMount /servlet/* ajp12

    ---------------------------------------------------------------------
    To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
    For additional commands, e-mail: users-help@tomcat.apache.org
  • Volker at Jul 27, 2011 at 11:09 am
    Hallo Felix,

    I considered all tips you gave. Thanks again.

    Like mentioned before my configuration was running correctly but I could
    not notice that because the http tunneling does need much more time
    (first request of the httptunnelingdc-Servlet (I check this out in
    Apache?s log-file) than my former configuration with tomcat.

    Now I wonder how I can tune something (Simultaneously I will install
    tomcat 7.x) because I do not know if the slow-performance-problem
    depends on tomcat settings or maybe on the Diablo-Java-Settings?

    The combination with tomcat 3.3, apj12, mod_jk, Diablo JRE 1.5 and
    apache 1.3 results in opening the chat window via http tunneling in *a
    few seconds* if you blocked all ports except port 80 before for Java
    (Browser).
    With tomcat 4.1 the same procedure needs nearly 3 minutes.

    Any idea?

    Thanks and best regards

    V o l k e r


    Am 26.07.2011 19:54, schrieb Felix Schumacher:
    Hi Volker,

    Am Dienstag, den 26.07.2011, 16:29 +0200 schrieb Volker:
    Hello,

    my current system configuration is like following:

    - FreeBSD 8.2
    - apache-2.2.17_2
    - mod_jk-ap2-1.2.31_1 Apache2 JK
    - tomcat 4.1.36_2
    As you said elsewhere in this thread, that you are willing to upgrade to
    a newer tomcat as well, I will assume, that you will use tomcat 6 or
    even tomcat 7.
    - diablo-jdk1.6.0

    In order to provide a http tunneling for a chat server I have been
    using*tomcat 3.3*, FreeBSD 5.4, Apache 1.3, mod_jk (ajp12 Connector) and
    diablo-jre1.5.0 in combination with a certain http tunneling servlet
    *without any problems* for several years.
    That http tunneling servlet is passed via a chat applet via "<PARAM
    NAME='HttpServlet'
    VALUE='http://test.Domain.com/servlet/*HttpTunnelingServletdc*'>
    The configuration for that system above _*can be found below*_ *=>
    Configuration for tomcat 3.3
    That looks like you are using the strongly discouraged dispatcher
    servlet. That is still available, but disabled by default. And you
    should leave it that way.
    ...
    Thanks a lot and best regards

    Volker
    *
    ============================================================================
    NOT WORKING
    Configuration for Tomcat 4.1.36 (FreeBSD 8.2, Apache 2.2.17,
    mod_jk-ap2-1.2.31, Diablo JDK 1.6)
    **============================================================================

    The servlet classes result in:
    */usr/local/apache-tomcat4.1/webapps/ROOT/WEB-INF/classes*
    */usr/local/apache-tomcat4.1/webapps/ROOT/WEB-INF/classes*/*com/....*
    */usr/local/apache-tomcat4.1/webapps/ROOT/WEB-INF/classes/digi/...
    I read that as: There are some files and directories under
    WEB-INF/classes in your ROOT webapp and that /usr/local/apache-tomcat4.1
    is your CATALINA_BASE and probably CATALINA_HOME too.
    ...
    *
    httpd.conf
    *JkWorkersFile "/usr/local/etc/apache22/workers.properties"
    JkLogFile "/usr/local/apache-tomcat4.1/logs/mod_jk.log"
    JkShmFile /var/log/jk-runtime-status
    JkLogLevel info Looks OK.
    *
    workers.properties
    *workers.java_home=/usr/local/diablo-jdk1.6.0
    workers.tomcat_home=/usr/local/apache-tomcat4.1
    Remove both deprecated config options java_home and tomcat_home. They
    are not needed anymore.
    worker.list=jsp-hostname
    worker.jsp-hostname.port=8009
    worker.jsp-hostname.host=127.0.0.1
    worker.jsp-hostname.type=ajp13
    worker.jsp-hostname.lbfactor=1*

    **server.xml*
    Copy the server.xml from a fresh tomcat download and replace your
    port-numbers in there.
    <Service name="Tomcat-Standalone"> ...
    <!-- Tomcat Root Context -->

    <Context path="/ROOT" docBase="ROOT" debug="0" reloadable="true"
    crossContext="true">
    <Logger className="org.apache.catalina.logger.FileLogger"
    prefix="ROOT-http-tunneling_log." suffix=".txt" timestamp="true"/>
    </Context>

    <!-- Tomcat Examples Context -->
    <Context path="/examples" docBase="examples" debug="1" reloadable="true"
    crossContext="true">
    <Logger className="org.apache.catalina.logger.FileLogger"
    prefix="localhost_examples_log." suffix=".txt" timestamp="true"/>
    <Ejb name="ejb/EmplRecord" type="Entity"
    home="com.wombat.empl.EmployeeRecordHome"
    remote="com.wombat.empl.EmployeeRecord"/>
    Your context descriptions for ROOT and example would be placed in newly
    created files named ROOT.xml and example.xml under
    $CATALINA_BASE/conf/Catalina/localhost. But I seriously doubt, that you
    need example.xml and ROOT.xml is not needed, if all you want to achieve
    is logging. Look at http://tomcat.apache.org/tomcat-7.0-doc/logging.html
    for more info about simple logging.
    *web.xml*
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
    You could update your webapp to a newer version by replacing the above
    values, but they should do no harm.
    <web-app>
    <servlet>
    <servlet-name>
    HttpTunnelingServletdc
    </servlet-name>
    <servlet-class>
    *com.diginet.digichat.util.tunnel3.HttpTunnelingServlet*
    </servlet-class>
    <init-param>
    <param-name>Host</param-name>
    <param-value>localhost</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>invoker</servlet-name>
    <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>HttpTunnelingServletdc</servlet-name>
    <url-pattern>/HttpTunnelingServletdc</url-pattern>
    </servlet-mapping>
    Instead of mapping a not configured servlet named invoker to /servlet/*
    you should map your servlet named HttpTunnelingServletdc
    to /servlet/HttpTunnelingServletdc or alternatively change your applet
    configuration from top of your post.

    So remove
    <servlet-mapping><servlet-name>invoker</servlet-name>...</servlet-mapping>
    and change url-pattern in the<servlet-mapping>
    from /HttpTunnelingServletdc to /servlet/HttpTunnelingServletdc
    </web-app> ...
    *description* _The server encountered an internal error () that
    prevented it from fulfilling this request._

    *exception*

    javax.servlet.ServletException
    at com.diginet.digichat.util.tunnel3.HttpTunnelingServlet.doGet([DashoPro-V1.3BETA-091199])
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) ...
    at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
    at java.lang.Thread.run(Thread.java:619)

    *root cause*

    java.lang.NullPointerException
    at com.diginet.digichat.util.tunnel3.HttpTunnelingServlet.doGet([DashoPro-V1.3BETA-091199])
    Hopefully you have the source code for HttpTunnelingServlet since this
    line means, your servlet gets invoked, but it is not happy to work :)
    That might come from the fact, that you configured the servlet
    HttpTunnelingServletdc, but used the invoker-servlet. Chances are, that
    the proposed configuration chages in web.xml fix this.

    HTH
    Felix
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:199)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:145) ...
    ------------------------------------------------------------------------


    Apache Tomcat/4.1.3


    ===================================================================================
    *WORKING
    Configuration for tomcat 3.3 (FreeBSD 5.4, Apache 1.3.41, Tomcat 3.3.2,
    mod_jk 1.2.15, Diablo JRE 1.5)
    **============================================================================*
    *
    SERVER.XML
    * (jakarta-tomcat3.3/conf)
    <Ajp12Connector port="8007" />

    *web.xml*
    (/jakarta-tomcat3.3/webapps/ROOT/WEB-INF)
    <?xml version="1.0" encoding="ISO-8859-1"?>

    <!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd"><web-app>
    <servlet>
    <servlet-name>
    HttpTunnelingServletdc
    </servlet-name>
    <servlet-class>
    com.diginet.digichat.util.tunnel3.HttpTunnelingServlet
    </servlet-class>
    <init-param>
    <param-name>Host</param-name>
    <param-value>localhost</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>HttpTunnelingServlet</servlet-name>
    <url-pattern>/HttpTunnelingServlet</url-pattern>
    </servlet-mapping>
    </web-app>

    *workers.properties*
    worker.ajp12.type=ajp12
    worker.ajp12.port=8007
    worker.ajp12.host=localhost
    worker.ajp12.lbfactor=1

    *mod_jk.conf*
    <IfModule !mod_jk.c>
    LoadModule jk_module /usr/local/libexec/apache/mod_jk.so
    </IfModule>
    JkWorkersFile "/usr/local/jakarta-tomcat3.3/conf/jk/workers.properties"
    JkLogFile "/usr/local/jakarta-tomcat3.3/logs/mod_jk.log"
    JkShmFile /var/log/jk-runtime-status
    JkLogLevel info
    JkMount /servlet/* ajp12

    ---------------------------------------------------------------------
    To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
    For additional commands, e-mail: users-help@tomcat.apache.org
  • Felix Schumacher at Jul 27, 2011 at 5:35 pm
    Hi Volker,

    Am Mittwoch, den 27.07.2011, 13:08 +0200 schrieb Volker:
    Hallo Felix,

    I considered all tips you gave. Thanks again.

    Like mentioned before my configuration was running correctly but I could
    not notice that because the http tunneling does need much more time
    (first request of the httptunnelingdc-Servlet (I check this out in
    Apache?s log-file) than my former configuration with tomcat.
    are you still using the invoker servlet, or are you using
    httptunnelingdc-Servlet with a url-path?
    Now I wonder how I can tune something (Simultaneously I will install
    tomcat 7.x) because I do not know if the slow-performance-problem
    depends on tomcat settings or maybe on the Diablo-Java-Settings?
    I would bet, that the app is causing the delay.
    The combination with tomcat 3.3, apj12, mod_jk, Diablo JRE 1.5 and
    apache 1.3 results in opening the chat window via http tunneling in *a
    few seconds* if you blocked all ports except port 80 before for Java
    (Browser).
    With tomcat 4.1 the same procedure needs nearly 3 minutes.

    Any idea?
    Look at
    http://wiki.apache.org/tomcat/FAQ/Troubleshooting_and_Diagnostics and
    find the troublemaker :) Common advise is to take a few threadtraces a
    few seconds apart. Then find stacktraces which apear to be stuck. Maybe
    it just tries to do a dns lookup or connect to some host until it times
    out.

    Regards
    Felix
    Thanks and best regards

    V o l k e r


    Am 26.07.2011 19:54, schrieb Felix Schumacher:
    Hi Volker,

    Am Dienstag, den 26.07.2011, 16:29 +0200 schrieb Volker:
    Hello,

    my current system configuration is like following:

    - FreeBSD 8.2
    - apache-2.2.17_2
    - mod_jk-ap2-1.2.31_1 Apache2 JK
    - tomcat 4.1.36_2
    As you said elsewhere in this thread, that you are willing to upgrade to
    a newer tomcat as well, I will assume, that you will use tomcat 6 or
    even tomcat 7.
    - diablo-jdk1.6.0

    In order to provide a http tunneling for a chat server I have been
    using*tomcat 3.3*, FreeBSD 5.4, Apache 1.3, mod_jk (ajp12 Connector) and
    diablo-jre1.5.0 in combination with a certain http tunneling servlet
    *without any problems* for several years.
    That http tunneling servlet is passed via a chat applet via "<PARAM
    NAME='HttpServlet'
    VALUE='http://test.Domain.com/servlet/*HttpTunnelingServletdc*'>
    The configuration for that system above _*can be found below*_ *=>
    Configuration for tomcat 3.3
    That looks like you are using the strongly discouraged dispatcher
    servlet. That is still available, but disabled by default. And you
    should leave it that way.
    ...
    Thanks a lot and best regards

    Volker
    *
    ============================================================================
    NOT WORKING
    Configuration for Tomcat 4.1.36 (FreeBSD 8.2, Apache 2.2.17,
    mod_jk-ap2-1.2.31, Diablo JDK 1.6)
    **============================================================================

    The servlet classes result in:
    */usr/local/apache-tomcat4.1/webapps/ROOT/WEB-INF/classes*
    */usr/local/apache-tomcat4.1/webapps/ROOT/WEB-INF/classes*/*com/....*
    */usr/local/apache-tomcat4.1/webapps/ROOT/WEB-INF/classes/digi/...
    I read that as: There are some files and directories under
    WEB-INF/classes in your ROOT webapp and that /usr/local/apache-tomcat4.1
    is your CATALINA_BASE and probably CATALINA_HOME too.
    ...
    *
    httpd.conf
    *JkWorkersFile "/usr/local/etc/apache22/workers.properties"
    JkLogFile "/usr/local/apache-tomcat4.1/logs/mod_jk.log"
    JkShmFile /var/log/jk-runtime-status
    JkLogLevel info Looks OK.
    *
    workers.properties
    *workers.java_home=/usr/local/diablo-jdk1.6.0
    workers.tomcat_home=/usr/local/apache-tomcat4.1
    Remove both deprecated config options java_home and tomcat_home. They
    are not needed anymore.
    worker.list=jsp-hostname
    worker.jsp-hostname.port=8009
    worker.jsp-hostname.host=127.0.0.1
    worker.jsp-hostname.type=ajp13
    worker.jsp-hostname.lbfactor=1*

    **server.xml*
    Copy the server.xml from a fresh tomcat download and replace your
    port-numbers in there.
    <Service name="Tomcat-Standalone"> ...
    <!-- Tomcat Root Context -->

    <Context path="/ROOT" docBase="ROOT" debug="0" reloadable="true"
    crossContext="true">
    <Logger className="org.apache.catalina.logger.FileLogger"
    prefix="ROOT-http-tunneling_log." suffix=".txt" timestamp="true"/>
    </Context>

    <!-- Tomcat Examples Context -->
    <Context path="/examples" docBase="examples" debug="1" reloadable="true"
    crossContext="true">
    <Logger className="org.apache.catalina.logger.FileLogger"
    prefix="localhost_examples_log." suffix=".txt" timestamp="true"/>
    <Ejb name="ejb/EmplRecord" type="Entity"
    home="com.wombat.empl.EmployeeRecordHome"
    remote="com.wombat.empl.EmployeeRecord"/>
    Your context descriptions for ROOT and example would be placed in newly
    created files named ROOT.xml and example.xml under
    $CATALINA_BASE/conf/Catalina/localhost. But I seriously doubt, that you
    need example.xml and ROOT.xml is not needed, if all you want to achieve
    is logging. Look at http://tomcat.apache.org/tomcat-7.0-doc/logging.html
    for more info about simple logging.
    *web.xml*
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
    You could update your webapp to a newer version by replacing the above
    values, but they should do no harm.
    <web-app>
    <servlet>
    <servlet-name>
    HttpTunnelingServletdc
    </servlet-name>
    <servlet-class>
    *com.diginet.digichat.util.tunnel3.HttpTunnelingServlet*
    </servlet-class>
    <init-param>
    <param-name>Host</param-name>
    <param-value>localhost</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>invoker</servlet-name>
    <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>HttpTunnelingServletdc</servlet-name>
    <url-pattern>/HttpTunnelingServletdc</url-pattern>
    </servlet-mapping>
    Instead of mapping a not configured servlet named invoker to /servlet/*
    you should map your servlet named HttpTunnelingServletdc
    to /servlet/HttpTunnelingServletdc or alternatively change your applet
    configuration from top of your post.

    So remove
    <servlet-mapping><servlet-name>invoker</servlet-name>...</servlet-mapping>
    and change url-pattern in the<servlet-mapping>
    from /HttpTunnelingServletdc to /servlet/HttpTunnelingServletdc
    </web-app> ...
    *description* _The server encountered an internal error () that
    prevented it from fulfilling this request._

    *exception*

    javax.servlet.ServletException
    at com.diginet.digichat.util.tunnel3.HttpTunnelingServlet.doGet([DashoPro-V1.3BETA-091199])
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) ...
    at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
    at java.lang.Thread.run(Thread.java:619)

    *root cause*

    java.lang.NullPointerException
    at com.diginet.digichat.util.tunnel3.HttpTunnelingServlet.doGet([DashoPro-V1.3BETA-091199])
    Hopefully you have the source code for HttpTunnelingServlet since this
    line means, your servlet gets invoked, but it is not happy to work :)
    That might come from the fact, that you configured the servlet
    HttpTunnelingServletdc, but used the invoker-servlet. Chances are, that
    the proposed configuration chages in web.xml fix this.

    HTH
    Felix
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:199)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:145) ...
    ------------------------------------------------------------------------


    Apache Tomcat/4.1.3


    ===================================================================================
    *WORKING
    Configuration for tomcat 3.3 (FreeBSD 5.4, Apache 1.3.41, Tomcat 3.3.2,
    mod_jk 1.2.15, Diablo JRE 1.5)
    **============================================================================*
    *
    SERVER.XML
    * (jakarta-tomcat3.3/conf)
    <Ajp12Connector port="8007" />

    *web.xml*
    (/jakarta-tomcat3.3/webapps/ROOT/WEB-INF)
    <?xml version="1.0" encoding="ISO-8859-1"?>

    <!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd"><web-app>
    <servlet>
    <servlet-name>
    HttpTunnelingServletdc
    </servlet-name>
    <servlet-class>
    com.diginet.digichat.util.tunnel3.HttpTunnelingServlet
    </servlet-class>
    <init-param>
    <param-name>Host</param-name>
    <param-value>localhost</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>HttpTunnelingServlet</servlet-name>
    <url-pattern>/HttpTunnelingServlet</url-pattern>
    </servlet-mapping>
    </web-app>

    *workers.properties*
    worker.ajp12.type=ajp12
    worker.ajp12.port=8007
    worker.ajp12.host=localhost
    worker.ajp12.lbfactor=1

    *mod_jk.conf*
    <IfModule !mod_jk.c>
    LoadModule jk_module /usr/local/libexec/apache/mod_jk.so
    </IfModule>
    JkWorkersFile "/usr/local/jakarta-tomcat3.3/conf/jk/workers.properties"
    JkLogFile "/usr/local/jakarta-tomcat3.3/logs/mod_jk.log"
    JkShmFile /var/log/jk-runtime-status
    JkLogLevel info
    JkMount /servlet/* ajp12

    ---------------------------------------------------------------------
    To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
    For additional commands, e-mail: users-help@tomcat.apache.org


    ---------------------------------------------------------------------
    To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
    For additional commands, e-mail: users-help@tomcat.apache.org
  • Volker at Jul 27, 2011 at 9:24 pm

    Am 27.07.2011 19:34, schrieb Felix Schumacher:
    Hi Volker, Hi Felix,
    Am Mittwoch, den 27.07.2011, 13:08 +0200 schrieb Volker:
    Hallo Felix,

    I considered all tips you gave. Thanks again.

    Like mentioned before my configuration was running correctly but I could
    not notice that because the http tunneling does need much more time
    (first request of the httptunnelingdc-Servlet (I check this out in
    Apache?s log-file) than my former configuration with tomcat.
    are you still using the invoker servlet, or are you using
    httptunnelingdc-Servlet with a url-path?
    No, invoker servlet is not used anymore!
    Now I wonder how I can tune something (Simultaneously I will install
    tomcat 7.x) because I do not know if the slow-performance-problem
    depends on tomcat settings or maybe on the Diablo-Java-Settings?
    I would bet, that the app is causing the delay.
    Well, I guess that too. But since the applet code has not changed it
    obviously depends on the Java-Plugin-version too!
    The combination with tomcat 3.3, apj12, mod_jk, Diablo JRE 1.5 and
    apache 1.3 results in opening the chat window via http tunneling in *a
    few seconds* if you blocked all ports except port 80 before for Java
    (Browser).
    With tomcat 4.1 the same procedure needs nearly 3 minutes.

    Any idea?
    Look at
    http://wiki.apache.org/tomcat/FAQ/Troubleshooting_and_Diagnostics and
    find the troublemaker :) Common advise is to take a few threadtraces a
    few seconds apart. Then find stacktraces which apear to be stuck. Maybe
    it just tries to do a dns lookup or connect to some host until it times
    out.
    No, ist has to do with the applet params for different ports you can
    define for contacting the chat server.
    For example defining the ports under which the chat server is listening
    looks like following:
    <param name='ports' value='ports=119,8080,58399'>

    The the applet tries to reach the chat server via port 119. If that does
    not work it continues with port 8080 etc.
    If all ports fail, the http tunneling servlet is requested.

    If you only define ports=119 which is blocked by your firewall
    client-sided the http tunneling will be requested after 30 seconds.
    Defining the 3 ports 119,8080 and 58399 results in nearly 3 minutes if
    you are blocking those ports with a software firewall.

    Best regards

    Volker

    Regards
    Felix
    Thanks and best regards

    V o l k e r


    Am 26.07.2011 19:54, schrieb Felix Schumacher:
    Hi Volker,

    Am Dienstag, den 26.07.2011, 16:29 +0200 schrieb Volker:
    Hello,

    my current system configuration is like following:

    - FreeBSD 8.2
    - apache-2.2.17_2
    - mod_jk-ap2-1.2.31_1 Apache2 JK
    - tomcat 4.1.36_2
    As you said elsewhere in this thread, that you are willing to upgrade to
    a newer tomcat as well, I will assume, that you will use tomcat 6 or
    even tomcat 7.
    - diablo-jdk1.6.0

    In order to provide a http tunneling for a chat server I have been
    using*tomcat 3.3*, FreeBSD 5.4, Apache 1.3, mod_jk (ajp12 Connector) and
    diablo-jre1.5.0 in combination with a certain http tunneling servlet
    *without any problems* for several years.
    That http tunneling servlet is passed via a chat applet via "<PARAM
    NAME='HttpServlet'
    VALUE='http://test.Domain.com/servlet/*HttpTunnelingServletdc*'>
    The configuration for that system above _*can be found below*_ *=>
    Configuration for tomcat 3.3
    That looks like you are using the strongly discouraged dispatcher
    servlet. That is still available, but disabled by default. And you
    should leave it that way.
    ...
    Thanks a lot and best regards

    Volker
    *
    ============================================================================
    NOT WORKING
    Configuration for Tomcat 4.1.36 (FreeBSD 8.2, Apache 2.2.17,
    mod_jk-ap2-1.2.31, Diablo JDK 1.6)
    **============================================================================

    The servlet classes result in:
    */usr/local/apache-tomcat4.1/webapps/ROOT/WEB-INF/classes*
    */usr/local/apache-tomcat4.1/webapps/ROOT/WEB-INF/classes*/*com/....*
    */usr/local/apache-tomcat4.1/webapps/ROOT/WEB-INF/classes/digi/...
    I read that as: There are some files and directories under
    WEB-INF/classes in your ROOT webapp and that /usr/local/apache-tomcat4.1
    is your CATALINA_BASE and probably CATALINA_HOME too.
    ...
    *
    httpd.conf
    *JkWorkersFile "/usr/local/etc/apache22/workers.properties"
    JkLogFile "/usr/local/apache-tomcat4.1/logs/mod_jk.log"
    JkShmFile /var/log/jk-runtime-status
    JkLogLevel info Looks OK.
    *
    workers.properties
    *workers.java_home=/usr/local/diablo-jdk1.6.0
    workers.tomcat_home=/usr/local/apache-tomcat4.1
    Remove both deprecated config options java_home and tomcat_home. They
    are not needed anymore.
    worker.list=jsp-hostname
    worker.jsp-hostname.port=8009
    worker.jsp-hostname.host=127.0.0.1
    worker.jsp-hostname.type=ajp13
    worker.jsp-hostname.lbfactor=1*

    **server.xml*
    Copy the server.xml from a fresh tomcat download and replace your
    port-numbers in there.
    <Service name="Tomcat-Standalone"> ...
    <!-- Tomcat Root Context -->

    <Context path="/ROOT" docBase="ROOT" debug="0" reloadable="true"
    crossContext="true">
    <Logger className="org.apache.catalina.logger.FileLogger"
    prefix="ROOT-http-tunneling_log." suffix=".txt" timestamp="true"/>
    </Context>

    <!-- Tomcat Examples Context -->
    <Context path="/examples" docBase="examples" debug="1" reloadable="true"
    crossContext="true">
    <Logger className="org.apache.catalina.logger.FileLogger"
    prefix="localhost_examples_log." suffix=".txt" timestamp="true"/>
    <Ejb name="ejb/EmplRecord" type="Entity"
    home="com.wombat.empl.EmployeeRecordHome"
    remote="com.wombat.empl.EmployeeRecord"/>
    Your context descriptions for ROOT and example would be placed in newly
    created files named ROOT.xml and example.xml under
    $CATALINA_BASE/conf/Catalina/localhost. But I seriously doubt, that you
    need example.xml and ROOT.xml is not needed, if all you want to achieve
    is logging. Look at http://tomcat.apache.org/tomcat-7.0-doc/logging.html
    for more info about simple logging.
    *web.xml*
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
    You could update your webapp to a newer version by replacing the above
    values, but they should do no harm.
    <web-app>
    <servlet>
    <servlet-name>
    HttpTunnelingServletdc
    </servlet-name>
    <servlet-class>
    *com.diginet.digichat.util.tunnel3.HttpTunnelingServlet*
    </servlet-class>
    <init-param>
    <param-name>Host</param-name>
    <param-value>localhost</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>invoker</servlet-name>
    <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>HttpTunnelingServletdc</servlet-name>
    <url-pattern>/HttpTunnelingServletdc</url-pattern>
    </servlet-mapping>
    Instead of mapping a not configured servlet named invoker to /servlet/*
    you should map your servlet named HttpTunnelingServletdc
    to /servlet/HttpTunnelingServletdc or alternatively change your applet
    configuration from top of your post.

    So remove
    <servlet-mapping><servlet-name>invoker</servlet-name>...</servlet-mapping>
    and change url-pattern in the<servlet-mapping>
    from /HttpTunnelingServletdc to /servlet/HttpTunnelingServletdc
    </web-app> ...
    *description* _The server encountered an internal error () that
    prevented it from fulfilling this request._

    *exception*

    javax.servlet.ServletException
    at com.diginet.digichat.util.tunnel3.HttpTunnelingServlet.doGet([DashoPro-V1.3BETA-091199])
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) ...
    at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
    at java.lang.Thread.run(Thread.java:619)

    *root cause*

    java.lang.NullPointerException
    at com.diginet.digichat.util.tunnel3.HttpTunnelingServlet.doGet([DashoPro-V1.3BETA-091199])
    Hopefully you have the source code for HttpTunnelingServlet since this
    line means, your servlet gets invoked, but it is not happy to work :)
    That might come from the fact, that you configured the servlet
    HttpTunnelingServletdc, but used the invoker-servlet. Chances are, that
    the proposed configuration chages in web.xml fix this.

    HTH
    Felix
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:199)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:145) ...
    ------------------------------------------------------------------------


    Apache Tomcat/4.1.3


    ===================================================================================
    *WORKING
    Configuration for tomcat 3.3 (FreeBSD 5.4, Apache 1.3.41, Tomcat 3.3.2,
    mod_jk 1.2.15, Diablo JRE 1.5)
    **============================================================================*
    *
    SERVER.XML
    * (jakarta-tomcat3.3/conf)
    <Ajp12Connector port="8007" />

    *web.xml*
    (/jakarta-tomcat3.3/webapps/ROOT/WEB-INF)
    <?xml version="1.0" encoding="ISO-8859-1"?>

    <!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd"><web-app>
    <servlet>
    <servlet-name>
    HttpTunnelingServletdc
    </servlet-name>
    <servlet-class>
    com.diginet.digichat.util.tunnel3.HttpTunnelingServlet
    </servlet-class>
    <init-param>
    <param-name>Host</param-name>
    <param-value>localhost</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>HttpTunnelingServlet</servlet-name>
    <url-pattern>/HttpTunnelingServlet</url-pattern>
    </servlet-mapping>
    </web-app>

    *workers.properties*
    worker.ajp12.type=ajp12
    worker.ajp12.port=8007
    worker.ajp12.host=localhost
    worker.ajp12.lbfactor=1

    *mod_jk.conf*
    <IfModule !mod_jk.c>
    LoadModule jk_module /usr/local/libexec/apache/mod_jk.so
    </IfModule>
    JkWorkersFile "/usr/local/jakarta-tomcat3.3/conf/jk/workers.properties"
    JkLogFile "/usr/local/jakarta-tomcat3.3/logs/mod_jk.log"
    JkShmFile /var/log/jk-runtime-status
    JkLogLevel info
    JkMount /servlet/* ajp12
    ---------------------------------------------------------------------
    To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
    For additional commands, e-mail: users-help@tomcat.apache.org

    ---------------------------------------------------------------------
    To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
    For additional commands, e-mail: users-help@tomcat.apache.org
    ---------------------------------------------------------------------
    To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
    For additional commands, e-mail: users-help@tomcat.apache.org
  • Konstantin Kolinko at Jul 26, 2011 at 11:57 pm

    2011/7/26 Volker <tomcat@webchannel.de>:
    - tomcat 4.1.36_2
    One reason to abandon 4.1 is that there are known security issues that
    has been fixed in 5.5 and later but have never been evaluated against
    4.1



    Best regards,
    Konstantin Kolinko

    ---------------------------------------------------------------------
    To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
    For additional commands, e-mail: users-help@tomcat.apache.org

Related Discussions

Discussion Navigation
viewthread | post