tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bruyn, Bill" <>
Subject unable to process 200 response from Tomcat using isapi_redirect.d ll
Date Tue, 17 Jul 2001 16:50:26 GMT
Hello All,

I am trying to configure Tomcat to handle servlet/JSP requests from an
instance of IIS hosted on another machine.  In short, it appears to be
working until it's time to process the AJP12 response body, then the thing
goes to lunch.

First, the installation details.  I should tell you that the hardware and OS
information will change eventually, as this is a practice run for an IIS
installation.  For now, Personal Web Server sits on an old laptop (which
obtains its IP address via DHCP) running NT Workstation 4.0 SP5.  The real
configuration is going to be IIS on NT Server SP6.

The version of Tomcat that I have is actually the Embedded Tomcat 3.2.2,
distributed with JBoss 2.2.2.  I'm told that full Tomcat configuration is
supported, and so far that appears to be the case.  For now, JBoss/Tomcat
runs on a Redhat Linux 7 box with a static IP address and Sun's JDK 1.3.
HTTP requests made directly to this box on port 8080 yield the expected
results.  The app server will eventually run on Solaris 8.

The isapi_redirect.dll is loaded at c:\jakarta-tomcat\bin.  I also have a
conf directory (containing and
and a logs directory (containing the isapi_redirect log file) there.

I made the following registry entries at HKEY_LOCAL_MACHINE\SOFTWARE\Apache
Software Foundation\Jakarta Isapi Redirector\1.0

	extension_uri		=	/jakarta/isapi_redirect.dll

	log_file			=
	log_level		=	debug
	worker_file		=
	worker_mount_file	=

per G Shacor's "Tomcat IIS HowTo" document.  I was then able to create the
virtual directory, assign it execute permission, and create my ISAPI filter.
I did have to modify the configuration files, of course, but they look okay
to me.  I'll attach them for your review if you think it's worthwhile.  All
I did was remove the default workers for clarity's sake, add a new worker
named csg1 of type AJP12, and map it to my Linux box at port 8007 (where it
listens for AJP12 requests).  

Anyway, when the PWS service starts, I have the green arrow of victory, the
log is created, the worker is verified, and all is well.  I guess I should
mention that stopping the service is a lot like pulling teeth - It stops,
but an error is returned stating that it could not be stopped, and
subsequent attempts to start it also yield errors.  In short, I'm forced to
reboot every time I want to stop the ridiculous web server.  I'm looking for
another place to run IIS to rule out web server issues, but for now, this is
what I'm forced to deal with.

Requests made to both /examples and /servlet contexts are proxied correctly.
i.e., the ISAPI filter hands the request off to Tomcat as it should.  I have
no problems with the 404 errors so prevalent on the lists.  In fact, the
only time the thing seems to work as expected is when I ask for a resource
that doesn't exist.  By that, I mean you can see the filter hand the request
to Tomcat, Tomcat return the response, and the 404 error gets returned to
the client as it should.  My problem comes when I request resources that
return a 200 code.

I'm including the entire contents of the log, but it looks to me like Tomcat
returns the response and the filter reads the header, then dies trying to
process the body.  Could it be as simple as a bad copy of the DLL?  Either
that, or Embedded Tomcat is different enough that the DLL can't deal with
the AJP12 response?  I spent most of the day yesterday troubleshooting, and
I don't know what else to think at this point...

I'm a little new to this, so please be kind.  :o]

Bill Bruyn
Programmer / Analyst
Application Services, Avnet ISD

Following are the entire contents of the log:
[jk_uri_worker_map.c (156)]: Into jk_uri_worker_map_t::uri_worker_map_alloc
[jk_uri_worker_map.c (196)]: Into jk_uri_worker_map_t::uri_worker_map_open
[jk_uri_worker_map.c (211)]: jk_uri_worker_map_t::uri_worker_map_open, rule
map size is 2
[jk_uri_worker_map.c (267)]: Into jk_uri_worker_map_t::uri_worker_map_open,
match rule /servlet/=csg1 was added
[jk_uri_worker_map.c (267)]: Into jk_uri_worker_map_t::uri_worker_map_open,
match rule /examples/=csg1 was added
[jk_uri_worker_map.c (296)]: Into jk_uri_worker_map_t::uri_worker_map_open,
there are 2 rules
[jk_uri_worker_map.c (317)]: jk_uri_worker_map_t::uri_worker_map_open, done
[jk_worker.c (82)]: Into wc_open
[jk_worker.c (207)]: Into build_worker_map, creating 1 workers
[jk_worker.c (213)]: build_worker_map, creating worker csg1
[jk_worker.c (138)]: Into wc_create_worker
[jk_worker.c (152)]: wc_create_worker, about to create instance csg1 of
[jk_ajp12_worker.c (264)]: Into ajp12_worker_factory
[jk_worker.c (161)]: wc_create_worker, about to validate and init csg1
[jk_ajp12_worker.c (182)]: Into jk_worker_t::validate
[jk_ajp12_worker.c (194)]: In jk_worker_t::validate for worker csg1 contact
is uasux0001linux:8007
[jk_worker.c (177)]: wc_create_worker, done
[jk_worker.c (223)]: build_worker_map, removing old csg1 worker 
[jk_worker.c (235)]: build_worker_map, done
[jk_worker.c (102)]: wc_open, done
[jk_isapi_plugin.c (408)]: HttpFilterProc started
[jk_isapi_plugin.c (429)]: In HttpFilterProc test redirection of
[jk_uri_worker_map.c (345)]: Into jk_uri_worker_map_t::map_uri_to_worker
[jk_uri_worker_map.c (407)]: jk_uri_worker_map_t::map_uri_to_worker, Found a
match csg1
[jk_isapi_plugin.c (439)]: HttpFilterProc [/examples/jsp/index.html] is a
servlet url - should redirect to csg1
[jk_isapi_plugin.c (461)]: HttpFilterProc check if
[/examples/jsp/index.html] is points to the web-inf directory
[jk_isapi_plugin.c (517)]: HttpExtensionProc started
[jk_worker.c (123)]: Into wc_get_worker_for_name csg1
[jk_worker.c (127)]: wc_get_worker_for_name, done  found a worker
[jk_isapi_plugin.c (539)]: HttpExtensionProc got a worker for name csg1
[jk_ajp12_worker.c (223)]: Into jk_worker_t::get_endpoint
[jk_ajp12_worker.c (121)]: Into jk_endpoint_t::service
[jk_connect.c (108)]: Into jk_open_socket
[jk_connect.c (115)]: jk_open_socket, try to connect socket = 648
[jk_connect.c (124)]: jk_open_socket, after connect ret = 0
[jk_connect.c (132)]: jk_open_socket, set TCP_NODELAY to on
[jk_connect.c (140)]: jk_open_socket, return, sd = 648
[jk_ajp12_worker.c (134)]: In jk_endpoint_t::service, sd = 648
[jk_ajp12_worker.c (357)]: Into ajpv12_handle_request
[jk_ajp12_worker.c (361)]: ajpv12_handle_request, sending the ajp12 start
[jk_ajp12_worker.c (413)]: ajpv12_handle_request, sending the headers
[jk_ajp12_worker.c (432)]: ajpv12_handle_request, sending the terminating
[jk_ajp12_worker.c (477)]: ajpv12_handle_request done
[jk_ajp12_worker.c (148)]: In jk_endpoint_t::service, sent request
[jk_ajp12_worker.c (493)]: Into ajpv12_handle_response
[jk_ajp12_worker.c (507)]: ajpv12_handle_response, read Status: 200 OK
[jk_ajp12_worker.c (535)]: ajpv12_handle_response, read Status=200 OK
[jk_ajp12_worker.c (507)]: ajpv12_handle_response, read Content-Type:
[jk_ajp12_worker.c (535)]: ajpv12_handle_response, read
[jk_ajp12_worker.c (547)]: ajpv12_handle_response, allocating header arrays
[jk_ajp12_worker.c (507)]: ajpv12_handle_response, read Content-Length: 7266
[jk_ajp12_worker.c (535)]: ajpv12_handle_response, read Content-Length=7266
[jk_ajp12_worker.c (507)]: ajpv12_handle_response, read Last-Modified: Thu,
12 Jul 2001 18:20:06 GMT
[jk_ajp12_worker.c (535)]: ajpv12_handle_response, read Last-Modified=Thu,
12 Jul 2001 18:20:06 GMT
[jk_ajp12_worker.c (507)]: ajpv12_handle_response, read Servlet-Engine:
Tomcat Web Server/3.2.2 (JSP 1.1; Servlet 2.2; Java 1.3.0; Linux 2.2.16-22
i386; java.vendor=Sun Microsystems Inc.)
[jk_ajp12_worker.c (535)]: ajpv12_handle_response, read
Servlet-Engine=Tomcat Web Server/3.2.2 (JSP 1.1; Servlet 2.2; Java 1.3.0;
Linux 2.2.16-22 i386; java.vendor=Sun Microsystems Inc.)
[jk_ajp12_worker.c (507)]: ajpv12_handle_response, read 
[jk_ajp12_worker.c (509)]: ajpv12_handle_response, headers are done
[jk_ajp12_worker.c (568)]: ajpv12_handle_response, starting response
[jk_isapi_plugin.c (201)]: Into jk_ws_service_t::start_response
[jk_ajp12_worker.c (579)]: ajpv12_handle_response, reading response body

View raw message