04-20-04 12:36 PM
I'm using Apache 2.0.49, Tomcat 4.1.29, and mod_jk2 2.04 on Windows
2000 Server. I'm getting errors in my Apache & Tomcat logs (shown
below), BUT I do not get any errors shown in the browser and my
servlet appears to be functioning correctly. I guess the fact that it
says "recoverable error" means that it recovers which is why users do
not see any errors. However I suspect it does mean that the system is
working sub-optimally. I'd be grateful if someone could give me a clue
as to the meaning of the errors & any pointers on fixing the problem.
Many thanks,
Michael Sanders
Apache 2.0.49 error log
=======================
[Mon Apr 19 15:48:53 2004] [error] ajp13.service() ajpGetReply
recoverable error 3
[Mon Apr 19 15:48:53 2004] [error] ajp13.service() ajpGetReply
recoverable error 3
[Mon Apr 19 15:48:53 2004] [error] ajp13.service() Error forwarding
ajp13:localhost:8009 1 0
[Mon Apr 19 15:48:53 2004] [error] mod_jk2.handler() Error connectin
g
to tomcat 3, status 200
Tomcat 4.1.29 stderr
====================
[ERROR] JkCoyoteHandler - -Error in action code
<java.net.SocketException: Connection aborted by peer: socket write
error>java.net.SocketException: Connection aborted by peer: socket
write error
at java.net.SocketOutputStream.socketWrite(Native Method)
at java.net.SocketOutputStream.write(SocketOutputStream.java:91)
at org.apache.jk.common.ChannelSocket.send(ChannelSocket.java:457)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:654)
at org.apache.jk.server.JkCoyoteHandler.action(JkCoyoteHandler.java:435)
at org.apache.coyote.Response.action(Response.java:222)
at org.apache.coyote.Response.finish(Response.java:343)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:314)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:387)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:673)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:6
15)
at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:786)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.
java:666)
at java.lang.Thread.run(Thread.java:479)
workers2.properties
===================
#define the shared memory file
[shm]
file=C:/Program Files/Apache Group/Apache2/jk2.shm
# Define the communication channel
[channel.socket:localhost:8009]
tomcatId=localhost:8009
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009
[uri:/servlet/*]
worker=ajp13:localhost:8009
server.xml
==========
<Server port="8005" shutdown="SHUTDOWN" debug="0">
<!-- Uncomment these entries to enable JMX MBeans support -->
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"
debug="0"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleList
ener"
debug="0"/>
<!-- Global JNDI resources -->
<GlobalNamingResources>
<!-- Test entry for demonstration purposes -->
<Environment name="simpleValue" type="java.lang.Integer"
value="30"/>
<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users -->
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved">
</Resource>
<ResourceParams name="UserDatabase">
<parameter>
<name>factory</name>
<value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
</parameter>
<parameter>
<name>pathname</name>
<value>conf/tomcat-users.xml</value>
</parameter>
</ResourceParams>
</GlobalNamingResources>
<!-- Define the Tomcat Stand-Alone Service -->
<Service name="Tomcat-Standalone">
<!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 -->
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8080" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="100" debug="0" connectionTimeout="20000"
useURIValidationHack="false"
disableUploadTimeout="true" />
<!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8009" minProcessors="5" maxProcessors="100"
enableLookups="true" redirectPort="8443"
acceptCount="100" debug="0" connectionTimeout="300000"
useURIValidationHack="false"
protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>
<!-- Define the top level container in our container hierarchy -->
<Engine name="Standalone" defaultHost="localhost" debug="0">
<Logger className="org.apache.catalina.logger.FileLogger"
directory="D:/logfiles/Tomcat" prefix="tomcat_."
suffix=".log"
timestamp="true"/>
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
debug="0" resourceName="UserDatabase"/>
<!-- Define the default virtual host -->
<Host name="localhost" debug="0" appBase="webapps"
unpackWARs="true" autoDeploy="true">
directory.-->
<Logger className="org.apache.catalina.logger.FileLogger"
directory="D:/logfiles/Tomcat" prefix="tomcat_"
suffix=".log"
timestamp="true"/>
<!-- Tomcat Root Context -->
<Context path="" docBase="ROOT" debug="0"
swallowOutput="true"/>
</Host>
</Engine>
</Service>
</Server>
jk2.properties
==============
## THIS FILE MAY BE OVERRIDEN AT RUNTIME. MAKE SURE TOMCAT IS STOPED
## WHEN YOU EDIT THE FILE.
## COMMENTS WILL BE _LOST_
## DOCUMENTATION OF THE FORMAT IN JkMain javadoc.
# Set the desired handler list
# handler.list=apr,request,channelJni
#
# Override the default port for the socketChannel
# channelSocket.port=8019
# Default:
# channelUnix.file=${jkHome}/work/jk2.socket
# Just to check if the the config is working
# shm.file=${jkHome}/work/jk2.shm
# In order to enable jni use any channelJni directive
# channelJni.disabled = 0
# And one of the following directives:
# apr.jniModeSo=/opt/apache2/modules/mod_jk2.so
# If set to inprocess the mod_jk2 will Register natives itself
# This will enable the starting of the Tomcat from mod_jk2
# apr.jniModeSo=inprocess
[ Post a follow-up to this message ]
|