oh oh. So it looks like you have been thrown to the wolves, he ?
The positive side of it, is that if you solve it, you'll be the star.

Time for some ascii-art I think.

Except for firewalls, you have the following schema :


Browser-1 <--->             <--->               - webapp
Browser-2 <--->   IIS + IR  <---> AJP + Tomcat  - webapp
...                         <--->               - webapp
Browser-n <--->             <--->               - webapp

The dotted lines represent TCP/IP connections.
IIS + IR : IIS plus the Isapi_Redirector module
AJP + Tomcat : The Tomcat <Connector protocol="AJP"> module, plus Tomcat itself, and then the applications (webapps) running in Tomcat.

A request starts at the browser, goes to IIS over a connection to port 80 (if simple HTTP), or port 443 (if HTTPS). IIS sees that this request is really for Tomcat, so it passes it to its Isapi_redirector module. The Isapi_redirector module creates another connection to Tomcat's AJP "Connector", this time over port 8009, where presumably this AJP connector is listening. When the AJP connector receives the request, it creates a "thread" in Tomcat to handle this request. A thread is like a sub-process of tomcat; it is created to process one request, and will disappear when this request is processsed and it has sent the response.
To create the response, the thread "runs" one of the webapps.

Now to clear some side-issues :
- the protocol/format used between the browsers and IIS may be HTTP or HTTPS 
(SSL),
- but the protocol/format between the "IR" module on the IIS side, and the "AJP" module on the Tomcat side, is neither. It is using a special protocol/format named AJP. (So the notion of SSL is not relevant here; the decryption already happens at the IIS level, and over the AJP connection the data flows essentially "in clear".)

For this whole scheme to work, there are a few pre-requisites :
- the browsers must be able to establish a TCP/IP connection to the IIS server. I guess that part works. - the IIS server (and its IR module), must be able to establish a TCP connection to the AJP module of Tomcat, which is usually configured to "listen" on port # 8009. - the numbers of requests sent at the same time by the sum of all the browsers, needs to be more or less matched to the number of connections that the IR module and the AJP module can establish between themselves (otherwise some browser requests would never reach Tomcat) - the number of simultaneous threads that the AJP connector can start inside of Tomcat, must also be more or less matched to the number of browser requests. Otherwise, requests would pile up and have to wait, for a thread to become available to take care of them.
In the long term, that is not sustainable.

So the first thing here, would be to make sure that the Tomcat AJP connector is really listening on port 8009. The wish for that is indicated, inside your server.xml, by a tag like :
 <Connector port="8009" protocol="AJP/1.3" ... />
Do you have such a tag ?

The second step would be to verify that it is really listening there.
For that, you could use the "netstat" command in a command window on the 
server, as follows :

netstat -aon -p tcp

and look for a line that looks like this :

  TCP    0.0.0.0:8009           0.0.0.0:0              LISTEN         2704

(the important part being that ":8009" part)

Do you see that ?









amythyst wrote:
Thanks for the reply.

With that script, how exactly would I execute that script?
Pardon my ignorance, but I am a database developer that has been thrown into
networking because our network admin is at a loss to what the problem is and
doesn't seem keen on fixing it.

According to him, all the ports that we are using are open on the
firewall... 8080, 8081, 443, 8443 and 8009.  Tomcat is set to listen on port
8009 and I have configured the server.xml file to accept requests from 8009.

When you ask how many threads I have configured you're talking about worker
threads right?  I only have the one.


Michael Ludwig-6 wrote:
amythyst schrieb am 27.12.2010 um 06:52 (-0800):
Hi, yes we have a connector configured for port 8009.
Configured, okay; but it is not replying to your redirector's requests.
You can test AJP connectivity using this Perl script:

http://www.perlmonks.org/?node_id=766945

Question about the firewall... IIS is set up for port 8081 and 443
for our default website.  The application is running on 8080 and
8443. And as I said, tomcat is listening on 8009 to route traffic to
the application.  In the firewall, I believe the network guy has set
up port 8081 to allow traffic inside.  Does he also need to do
something for 8009 or 8080 and 8443?
He needs to allow Tomcat to listen on 8009, and IIS to connect to
tomcat-server:8009. The other two ports your Tomcat is configured to
listen on should be irrelevant as far as the ISAPI redirector is
concerned; it does AJP, not HTTP or HTTPS.

We are running the app with SSL, so it would be the secure ports I
should be focusing on right?
Not for the AJP connection between IIS and Tomcat.

Below are my worker files for the connector:

# uriworkermap.properties - IIS
/jira/*=worker1
Okay.

# workers.properties.minimal -
worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
Also okay. If you don't configure the connection_pool_size, the
default applies, which is 250 for IIS.

http://tomcat.apache.org/connectors-doc/reference/workers.html

How many threads have you configured for your AJP connector?

--
Michael Ludwig

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






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

Reply via email to