How do I serve webapp A only from port A and webapp B only from port B?
Instance A will have a connector listening on port A with webapp A defined, and instance B will have webapp B and connector listening on port B defined.
Let's clarify that with an example.
Suppose we have webapp A that we want served from port 8080, and webapp B that we want served from an SSL connector on port 8443. We would set up 2 different Server instances, each in it's own jetty xml file like so:
Now we need to set up 2 context files, one to describe the webapp we wish to deploy on Server A and the other for the webapp to deploy on Server B. We then put these files into $JETTY_HOME/contextsA or $JETTY_HOME/contextsB respectively.
You run both Server instances in the same JVM by providing them both on the runline:
Of course, you could also start two separate jetty instances, one with
jettyA.xml and the other with
jettyB.xml, if you wanted to. However, it is usually more efficient to run both Servers in the same JVM.
There is also a alternative way to achieve the same result as above, however it is less efficient. It involves setting the list of connectors on a webapp from which it will accept requests. This is a less efficient solution than the one described above because the request is presented to each webapp, which then must decide if it will accept it or not. In the first solution, only one webapp will ever be passed the request.
Here's how to configure the alternative solution: