Hi folks,
I've got a problem that I'm hoping someone smarter
than me can help with. I have a Java webstart application that runs on the
users local machine. It communicates via HTTP with a servlet backend and
obtains application specific objects from the backend via serialization.
These are all Java objects. The primary architecture is as
follows:
client (Java WebStart Application) <---->
HTTP <----> Tomcat <---> JDBC <---->
Database [All works fine with this
arrangement.]
When only the Tomcat servlet engine is called
directly, via port 8080, all is well and everything works fine. However,
when I add the Apache Web Server into the picture things start having problems
with regard to the size of the objects being serialized over the HTTP
connection. See the diagram below:
client (Java WebStart Application) <---->
HTTP <----> Apache HTTP Server <--> mod_jk or proxy <--->
Tomcat <---> JDBC <----> Database [Things
start to have problems with this arrangement.]
I really want to use the Apache server in the
middle because I don't want the port number in the URL since our clients
are not comfortable allowing that through their firewall plus I get the benefit
of additional logging. But when I add the Apache HTTP server into the
picture it cuts off the connection for serialized objects approaching 1MB in
size. I've searched extensively through Google and have found some
folks having trouble with mod_jk. So I took mod_jk out all together by
using a proxy but still the size problem remains which leads me to think there's
an issue with Apache HTTP Server or perhaps my specific setup. To
reiterate when I point to Tomcat directly, via the 8080 port URL, there are no
problems at all, it's only when the Apache HTTP server is introduced that large
object serialization starts failing.
Now for the specifics:
Application/version information.
Apache HTTP Server version: 2.0.52
mod_jk version: 1.2.25
Tomcat version: 5.5.23-1ep
Java version: 6.0
Server operating system: CentOS 4
Specific error on HTTP server: (32)Broken pipe:
core_output_filter: writing data to the network
Specific error on Tomcat: getDecisionTrees.
Exception! ClientAbortException: java.net.SocketException: Broken
pipe
Specific error on Client: java.io.IOException:
missing CR
Changes I've tried in the http.conf
file:
Timeout 300
KeepAlive On
MaxKeepAliveRequests 0
KeepAliveTimeout 60 EnableMMAP off
Obervations ,comments and/or suggestions are most
welcome!
Regards,
Daniel Bramblett P.S. I can provide the httpd.conf file on
request.
|