Discussion:
[jetty-users] Binding a WebAppContext to a specific connector?
Steve Sobol - Lobos Studios
2018-03-23 04:06:37 UTC
Permalink
Hello :)

https://stackoverflow.com/questions/26148418/jetty-9-setting-up-handlers-and
-connectors talks about setting up a handler that is only used to respond to
requests on a specific connector:



ServerConnector httpConnector = new ServerConnector(server);

httpConnector.setName("unsecured"); // named connector

httpConnector.setPort(80);



ContextHandler helloHandler = new ContextHandler();

helloHandler.setContextPath("/hello");

helloHandler.setHandler(new HelloHandler("Hello World"));

helloHandler.setVirtualHosts(new String[]{"@unsecured"});



Does this work out of the box for web app contexts? Part of my code follows:



ServerConnector sslConnector = new ServerConnector(s,
new SslConnectionFactory(sslContextFactory,
HttpVersion.HTTP_1_1.asString()),
new HttpConnectionFactory(sslHttpConfig));
sslConnector.setName("https");
sslConnector.setHost("0.0.0.0");
sslConnector.setPort(443);



ServerConnector nonSslConnector = new ServerConnector(s,
new HttpConnectionFactory(),
new HttpConnectionFactory(nonSslHttpConfig));
nonSslConnector.setName("http");
nonSslConnector.setHost("0.0.0.0");
nonSslConnector.setPort(80);



WebAppContext t1 = new WebAppContext();
t1.setContextPath("/");
t1.setDisplayName("abc");
t1.setWar("c:/TempWebapp-1.0.war");
t1.setVirtualHosts(new String[]
{"@https","admin.bamidbarconnect.com","test2.local"});
WebAppContext t2 = new WebAppContext();
t2.setContextPath("/");
t2.setResourceBase("c:/TempWebapp2/");
t2.setParentLoaderPriority(true);
t2.setVirtualHosts(new String[] {"@http","test1.local"});

s.setConnectors(new Connector[]{nonSslConnector, sslConnector});

HandlerList list = new HandlerList();
list.addHandler(t1);
list.addHandler(t2);

s.setHandler(list);



If it's supposed to work, it doesn't seem to be working for me. T1 is only
supposed to be served via the SSL connector on port 443 and T2 is only
supposed to be served on the non-SSL connector on port 80.



Thanks

--Steve



--

Lobos Studios | Phone: 877.919.4WEB | LobosStudios.com |
Facebook.com/LobosStudios | @LobosStudios

Web Development - Mobile Development - Helpdesk/Tech Support - Computer
Sales & Service

Acer Authorized Reseller - Computers, Windows and Android Tablets,
Accessories



Steve Sobol - CEO, Senior Developer and Server Jockey

***@LobosStudios.com
Joakim Erdfelt
2018-03-23 09:59:19 UTC
Permalink
virtualHosts are not AND logic, they are OR logic.

Said another way, if you have a context.virtualHosts, then the incoming
request MUST match ONE of the virtualHosts entries.

- Joakim

Joakim Erdfelt / ***@webtide.com

On Thu, Mar 22, 2018 at 11:06 PM, Steve Sobol - Lobos Studios <
Post by Steve Sobol - Lobos Studios
Hello :)
https://stackoverflow.com/questions/26148418/jetty-9-
setting-up-handlers-and-connectors talks about setting up a handler that
ServerConnector httpConnector = new ServerConnector(server);
httpConnector.setName("unsecured"); // named connector
httpConnector.setPort(80);
ContextHandler helloHandler = new ContextHandler();
helloHandler.setContextPath("/hello");
helloHandler.setHandler(new HelloHandler("Hello World"));
ServerConnector sslConnector = *new *ServerConnector(s,
*new *SslConnectionFactory(sslContextFactory, HttpVersion.*HTTP_1_1*.asString()),
*new *HttpConnectionFactory(sslHttpConfig));
sslConnector.setName(*"https"*);
sslConnector.setHost(*"0.0.0.0"*);
sslConnector.setPort(443);
ServerConnector nonSslConnector = *new *ServerConnector(s,
*new *HttpConnectionFactory(),
*new *HttpConnectionFactory(nonSslHttpConfig));
nonSslConnector.setName(*"http"*);
nonSslConnector.setHost(*"0.0.0.0"*);
nonSslConnector.setPort(80);
WebAppContext t1 = *new *WebAppContext();
t1.setContextPath(*"/"*);
t1.setDisplayName(*"abc"*);
t1.setWar(*"c:/TempWebapp-1.0.war"*);
WebAppContext t2 = *new *WebAppContext();
t2.setContextPath(*"/"*);
t2.setResourceBase(*"c:/TempWebapp2/"*);
t2.setParentLoaderPriority(*true*);
s.setConnectors(*new *Connector[]{nonSslConnector, sslConnector});
HandlerList list = *new *HandlerList();
list.addHandler(t1);
list.addHandler(t2);
s.setHandler(list);
If it’s supposed to work, it doesn’t seem to be working for me. T1 is only
supposed to be served via the SSL connector on port 443 and T2 is only
supposed to be served on the non-SSL connector on port 80.
Thanks
--Steve
--
Lobos Studios | Phone: 877.919.4WEB | LobosStudios.com |
Web Development - Mobile Development - Helpdesk/Tech Support - Computer
Sales & Service
Acer Authorized Reseller - Computers, Windows and Android Tablets,
Accessories
Steve Sobol - CEO, Senior Developer and Server Jockey
_______________________________________________
jetty-users mailing list
To change your delivery options, retrieve your password, or unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
Steve Sobol - Lobos Studios
2018-03-23 14:37:58 UTC
Permalink
So if I want a WebAppContext to serve my app only for certain hostnames and only on one connector, that isn’t possible?









On Fri, Mar 23, 2018 at 2:59 AM -0700, "Joakim Erdfelt" <***@webtide.com> wrote:










virtualHosts are not AND logic, they are OR logic.
Said another way, if you have a context.virtualHosts, then the incoming request MUST match ONE of the virtualHosts entries.
- Joakim
Joakim Erdfelt / ***@webtide.com

On Thu, Mar 22, 2018 at 11:06 PM, Steve Sobol - Lobos Studios <***@lobosstudios.com> wrote:


Hello :)

https://stackoverflow.com/questions/26148418/jetty-9-setting-up-handlers-and-connectors talks about setting up a handler that is only used to respond to requests on a specific connector:

 

    ServerConnector httpConnector = new ServerConnector(server);

    httpConnector.setName("unsecured"); // named connector

    httpConnector.setPort(80);

 

    ContextHandler helloHandler = new ContextHandler();

    helloHandler.setContextPath("/hello");

    helloHandler.setHandler(new HelloHandler("Hello World"));

    helloHandler.setVirtualHosts(new String[]{"@unsecured"});

 

Does this work out of the box for web app contexts? Part of my code follows:

 ServerConnector sslConnector = new ServerConnector(s,
      new SslConnectionFactory(sslContextFactory, HttpVersion.HTTP_1_1.asString()),
      new HttpConnectionFactory(sslHttpConfig));
sslConnector.setName("https");sslConnector.setHost("0.0.0.0");
sslConnector.setPort(443);

 ServerConnector nonSslConnector = new ServerConnector(s,
      new HttpConnectionFactory(),
      new HttpConnectionFactory(nonSslHttpConfig));
nonSslConnector.setName("http");
nonSslConnector.setHost("0.0.0.0");
nonSslConnector.setPort(80);

 WebAppContext t1 = new WebAppContext();
t1.setContextPath("/");
t1.setDisplayName("abc");
t1.setWar("c:/TempWebapp-1.0.war");
t1.setVirtualHosts(new String[] {"@https","admin.bamidbarconnect.com","test2.local"});
WebAppContext t2 = new WebAppContext();
t2.setContextPath("/");
t2.setResourceBase("c:/TempWebapp2/");
t2.setParentLoaderPriority(true);
t2.setVirtualHosts(new String[] {"@http","test1.local"});

s.setConnectors(new Connector[]{nonSslConnector, sslConnector});

HandlerList list = new HandlerList();
list.addHandler(t1);
list.addHandler(t2);

s.setHandler(list);

 

If it’s supposed to work, it doesn’t seem to be working for me. T1 is only supposed to be served via the SSL connector on port 443 and T2 is only supposed to be served on the non-SSL connector on port 80.

 

Thanks

--Steve

 

--

Lobos Studios | Phone: 877.919.4WEB | LobosStudios.com | Facebook.com/LobosStudios | @LobosStudios

Web Development - Mobile Development - Helpdesk/Tech Support - Computer Sales & Service

Acer Authorized Reseller - Computers, Windows and Android Tablets, Accessories

 

Steve Sobol - CEO, Senior Developer and Server Jockey

***@LobosStudios.com

 
_______________________________________________

jetty-users mailing list

jetty-***@eclipse.org

To change your delivery options, retrieve your password, or unsubscribe from this list, visit

https://dev.eclipse.org/mailman/listinfo/jetty-users
Steve Sobol - Lobos Studios
2018-03-23 15:07:59 UTC
Permalink
It didn’t seem to work when I only used the connector names, either.









On Fri, Mar 23, 2018 at 7:38 AM -0700, "Steve Sobol - Lobos Studios" <***@lobosstudios.com> wrote:

















So if I want a WebAppContext to serve my app only for certain hostnames and only on one connector, that isn’t possible?









On Fri, Mar 23, 2018 at 2:59 AM -0700, "Joakim Erdfelt" <***@webtide.com> wrote:










virtualHosts are not AND logic, they are OR logic.
Said another way, if you have a context.virtualHosts, then the incoming request MUST match ONE of the virtualHosts entries.
- Joakim
Joakim Erdfelt / ***@webtide.com

On Thu, Mar 22, 2018 at 11:06 PM, Steve Sobol - Lobos Studios <***@lobosstudios.com> wrote:


Hello :)

https://stackoverflow.com/questions/26148418/jetty-9-setting-up-handlers-and-connectors talks about setting up a handler that is only used to respond to requests on a specific connector:

 

    ServerConnector httpConnector = new ServerConnector(server);

    httpConnector.setName("unsecured"); // named connector

    httpConnector.setPort(80);

 

    ContextHandler helloHandler = new ContextHandler();

    helloHandler.setContextPath("/hello");

    helloHandler.setHandler(new HelloHandler("Hello World"));

    helloHandler.setVirtualHosts(new String[]{"@unsecured"});

 

Does this work out of the box for web app contexts? Part of my code follows:

 ServerConnector sslConnector = new ServerConnector(s,
      new SslConnectionFactory(sslContextFactory, HttpVersion.HTTP_1_1.asString()),
      new HttpConnectionFactory(sslHttpConfig));
sslConnector.setName("https");sslConnector.setHost("0.0.0.0");
sslConnector.setPort(443);

 ServerConnector nonSslConnector = new ServerConnector(s,
      new HttpConnectionFactory(),
      new HttpConnectionFactory(nonSslHttpConfig));
nonSslConnector.setName("http");
nonSslConnector.setHost("0.0.0.0");
nonSslConnector.setPort(80);

 WebAppContext t1 = new WebAppContext();
t1.setContextPath("/");
t1.setDisplayName("abc");
t1.setWar("c:/TempWebapp-1.0.war");
t1.setVirtualHosts(new String[] {"@https","admin.bamidbarconnect.com","test2.local"});
WebAppContext t2 = new WebAppContext();
t2.setContextPath("/");
t2.setResourceBase("c:/TempWebapp2/");
t2.setParentLoaderPriority(true);
t2.setVirtualHosts(new String[] {"@http","test1.local"});

s.setConnectors(new Connector[]{nonSslConnector, sslConnector});

HandlerList list = new HandlerList();
list.addHandler(t1);
list.addHandler(t2);

s.setHandler(list);

 

If it’s supposed to work, it doesn’t seem to be working for me. T1 is only supposed to be served via the SSL connector on port 443 and T2 is only supposed to be served on the non-SSL connector on port 80.

 

Thanks

--Steve

 

--

Lobos Studios | Phone: 877.919.4WEB | LobosStudios.com | Facebook.com/LobosStudios | @LobosStudios

Web Development - Mobile Development - Helpdesk/Tech Support - Computer Sales & Service

Acer Authorized Reseller - Computers, Windows and Android Tablets, Accessories

 

Steve Sobol - CEO, Senior Developer and Server Jockey

***@LobosStudios.com

 
_______________________________________________

jetty-users mailing list

jetty-***@eclipse.org

To change your delivery options, retrieve your password, or unsubscribe from this list, visit

https://dev.eclipse.org/mailman/listinfo/jetty-users
Greg Wilkins
2018-03-26 21:32:17 UTC
Permalink
Steve,

I will test the name only shortly.... but at a certain point, if you want a
webapp to respond to just one connector, then it's simplest to create a new
server that just binds the two of them.

On 24 March 2018 at 02:07, Steve Sobol - Lobos Studios <
Post by Steve Sobol - Lobos Studios
It didn’t seem to work when I only used the connector names, either.
On Fri, Mar 23, 2018 at 7:38 AM -0700, "Steve Sobol - Lobos Studios" <
So if I want a WebAppContext to serve my app only for certain hostnames
Post by Steve Sobol - Lobos Studios
and only on one connector, that isn’t possible?
On Fri, Mar 23, 2018 at 2:59 AM -0700, "Joakim Erdfelt" <
virtualHosts are not AND logic, they are OR logic.
Post by Joakim Erdfelt
Said another way, if you have a context.virtualHosts, then the incoming
request MUST match ONE of the virtualHosts entries.
- Joakim
On Thu, Mar 22, 2018 at 11:06 PM, Steve Sobol - Lobos Studios <
Post by Steve Sobol - Lobos Studios
Hello :)
https://stackoverflow.com/questions/26148418/jetty-9-setting
-up-handlers-and-connectors talks about setting up a handler that is
ServerConnector httpConnector = new ServerConnector(server);
httpConnector.setName("unsecured"); // named connector
httpConnector.setPort(80);
ContextHandler helloHandler = new ContextHandler();
helloHandler.setContextPath("/hello");
helloHandler.setHandler(new HelloHandler("Hello World"));
ServerConnector sslConnector = *new *ServerConnector(s,
*new *SslConnectionFactory(sslContextFactory, HttpVersion.*HTTP_1_1*.asString()),
*new *HttpConnectionFactory(sslHttpConfig));
sslConnector.setName(*"https"*);
sslConnector.setHost(*"0.0.0.0"*);
sslConnector.setPort(443);
ServerConnector nonSslConnector = *new *ServerConnector(s,
*new *HttpConnectionFactory(),
*new *HttpConnectionFactory(nonSslHttpConfig));
nonSslConnector.setName(*"http"*);
nonSslConnector.setHost(*"0.0.0.0"*);
nonSslConnector.setPort(80);
WebAppContext t1 = *new *WebAppContext();
t1.setContextPath(*"/"*);
t1.setDisplayName(*"abc"*);
t1.setWar(*"c:/TempWebapp-1.0.war"*);
WebAppContext t2 = *new *WebAppContext();
t2.setContextPath(*"/"*);
t2.setResourceBase(*"c:/TempWebapp2/"*);
t2.setParentLoaderPriority(*true*);
s.setConnectors(*new *Connector[]{nonSslConnector, sslConnector});
HandlerList list = *new *HandlerList();
list.addHandler(t1);
list.addHandler(t2);
s.setHandler(list);
If it’s supposed to work, it doesn’t seem to be working for me. T1 is
only supposed to be served via the SSL connector on port 443 and T2 is only
supposed to be served on the non-SSL connector on port 80.
Thanks
--Steve
--
Lobos Studios | Phone: 877.919.4WEB | LobosStudios.com |
Web Development - Mobile Development - Helpdesk/Tech Support - Computer
Sales & Service
Acer Authorized Reseller - Computers, Windows and Android Tablets, Accessories
Steve Sobol - CEO, Senior Developer and Server Jockey
_______________________________________________
jetty-users mailing list
To change your delivery options, retrieve your password, or unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
To change your delivery options, retrieve your password, or unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
--
Greg Wilkins <***@webtide.com> CTO http://webtide.com
Greg Wilkins
2018-03-26 21:44:12 UTC
Permalink
I just did a simple test based on the ManyServletContext example class and
it works fine for me.

If you are still having trouble with the mechanism, can you do a little
hello world style example to demonstrate the problem?

cheers
Post by Greg Wilkins
Steve,
I will test the name only shortly.... but at a certain point, if you want
a webapp to respond to just one connector, then it's simplest to create a
new server that just binds the two of them.
On 24 March 2018 at 02:07, Steve Sobol - Lobos Studios <
Post by Steve Sobol - Lobos Studios
It didn’t seem to work when I only used the connector names, either.
On Fri, Mar 23, 2018 at 7:38 AM -0700, "Steve Sobol - Lobos Studios" <
So if I want a WebAppContext to serve my app only for certain hostnames
Post by Steve Sobol - Lobos Studios
and only on one connector, that isn’t possible?
On Fri, Mar 23, 2018 at 2:59 AM -0700, "Joakim Erdfelt" <
virtualHosts are not AND logic, they are OR logic.
Post by Joakim Erdfelt
Said another way, if you have a context.virtualHosts, then the incoming
request MUST match ONE of the virtualHosts entries.
- Joakim
On Thu, Mar 22, 2018 at 11:06 PM, Steve Sobol - Lobos Studios <
Post by Steve Sobol - Lobos Studios
Hello :)
https://stackoverflow.com/questions/26148418/jetty-9-setting
-up-handlers-and-connectors talks about setting up a handler that is
ServerConnector httpConnector = new ServerConnector(server);
httpConnector.setName("unsecured"); // named connector
httpConnector.setPort(80);
ContextHandler helloHandler = new ContextHandler();
helloHandler.setContextPath("/hello");
helloHandler.setHandler(new HelloHandler("Hello World"));
ServerConnector sslConnector = *new *ServerConnector(s,
*new *SslConnectionFactory(sslContextFactory, HttpVersion.*HTTP_1_1*.asString()),
*new *HttpConnectionFactory(sslHttpConfig));
sslConnector.setName(*"https"*);
sslConnector.setHost(*"0.0.0.0"*);
sslConnector.setPort(443);
ServerConnector nonSslConnector = *new *ServerConnector(s,
*new *HttpConnectionFactory(),
*new *HttpConnectionFactory(nonSslHttpConfig));
nonSslConnector.setName(*"http"*);
nonSslConnector.setHost(*"0.0.0.0"*);
nonSslConnector.setPort(80);
WebAppContext t1 = *new *WebAppContext();
t1.setContextPath(*"/"*);
t1.setDisplayName(*"abc"*);
t1.setWar(*"c:/TempWebapp-1.0.war"*);
WebAppContext t2 = *new *WebAppContext();
t2.setContextPath(*"/"*);
t2.setResourceBase(*"c:/TempWebapp2/"*);
t2.setParentLoaderPriority(*true*);
s.setConnectors(*new *Connector[]{nonSslConnector, sslConnector});
HandlerList list = *new *HandlerList();
list.addHandler(t1);
list.addHandler(t2);
s.setHandler(list);
If it’s supposed to work, it doesn’t seem to be working for me. T1 is
only supposed to be served via the SSL connector on port 443 and T2 is only
supposed to be served on the non-SSL connector on port 80.
Thanks
--Steve
--
Lobos Studios | Phone: 877.919.4WEB | LobosStudios.com |
Web Development - Mobile Development - Helpdesk/Tech Support -
Computer Sales & Service
Acer Authorized Reseller - Computers, Windows and Android Tablets, Accessories
Steve Sobol - CEO, Senior Developer and Server Jockey
_______________________________________________
jetty-users mailing list
To change your delivery options, retrieve your password, or
unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
To change your delivery options, retrieve your password, or unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
--
--
Greg Wilkins <***@webtide.com> CTO http://webtide.com
Joakim Erdfelt
2018-03-26 21:46:31 UTC
Permalink
The cookbook has a basic example to start with ...

https://github.com/jetty-project/embedded-jetty-cookbook/blob/master/src/main/java/org/eclipse/jetty/cookbook/ConnectorSpecificWebapps.java

.. modify that to show your issue please.
Post by Greg Wilkins
I just did a simple test based on the ManyServletContext example class and
it works fine for me.
If you are still having trouble with the mechanism, can you do a little
hello world style example to demonstrate the problem?
cheers
Post by Greg Wilkins
Steve,
I will test the name only shortly.... but at a certain point, if you want
a webapp to respond to just one connector, then it's simplest to create a
new server that just binds the two of them.
On 24 March 2018 at 02:07, Steve Sobol - Lobos Studios <
Post by Steve Sobol - Lobos Studios
It didn’t seem to work when I only used the connector names, either.
On Fri, Mar 23, 2018 at 7:38 AM -0700, "Steve Sobol - Lobos Studios" <
So if I want a WebAppContext to serve my app only for certain hostnames
Post by Steve Sobol - Lobos Studios
and only on one connector, that isn’t possible?
On Fri, Mar 23, 2018 at 2:59 AM -0700, "Joakim Erdfelt" <
virtualHosts are not AND logic, they are OR logic.
Post by Joakim Erdfelt
Said another way, if you have a context.virtualHosts, then the
incoming request MUST match ONE of the virtualHosts entries.
- Joakim
On Thu, Mar 22, 2018 at 11:06 PM, Steve Sobol - Lobos Studios <
Post by Steve Sobol - Lobos Studios
Hello :)
https://stackoverflow.com/questions/26148418/jetty-9-setting
-up-handlers-and-connectors talks about setting up a handler that is
ServerConnector httpConnector = new ServerConnector(server);
httpConnector.setName("unsecured"); // named connector
httpConnector.setPort(80);
ContextHandler helloHandler = new ContextHandler();
helloHandler.setContextPath("/hello");
helloHandler.setHandler(new HelloHandler("Hello World"));
ServerConnector sslConnector = *new *ServerConnector(s,
*new *SslConnectionFactory(sslContextFactory, HttpVersion.*HTTP_1_1*.asString()),
*new *HttpConnectionFactory(sslHttpConfig));
sslConnector.setName(*"https"*);
sslConnector.setHost(*"0.0.0.0"*);
sslConnector.setPort(443);
ServerConnector nonSslConnector = *new *ServerConnector(s,
*new *HttpConnectionFactory(),
*new *HttpConnectionFactory(nonSslHttpConfig));
nonSslConnector.setName(*"http"*);
nonSslConnector.setHost(*"0.0.0.0"*);
nonSslConnector.setPort(80);
WebAppContext t1 = *new *WebAppContext();
t1.setContextPath(*"/"*);
t1.setDisplayName(*"abc"*);
t1.setWar(*"c:/TempWebapp-1.0.war"*);
WebAppContext t2 = *new *WebAppContext();
t2.setContextPath(*"/"*);
t2.setResourceBase(*"c:/TempWebapp2/"*);
t2.setParentLoaderPriority(*true*);
s.setConnectors(*new *Connector[]{nonSslConnector, sslConnector});
HandlerList list = *new *HandlerList();
list.addHandler(t1);
list.addHandler(t2);
s.setHandler(list);
If it’s supposed to work, it doesn’t seem to be working for me. T1 is
only supposed to be served via the SSL connector on port 443 and T2 is only
supposed to be served on the non-SSL connector on port 80.
Thanks
--Steve
--
Lobos Studios | Phone: 877.919.4WEB | LobosStudios.com |
Web Development - Mobile Development - Helpdesk/Tech Support -
Computer Sales & Service
Acer Authorized Reseller - Computers, Windows and Android Tablets, Accessories
Steve Sobol - CEO, Senior Developer and Server Jockey
_______________________________________________
jetty-users mailing list
To change your delivery options, retrieve your password, or
unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
To change your delivery options, retrieve your password, or unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
--
--
_______________________________________________
jetty-users mailing list
To change your delivery options, retrieve your password, or unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
Steve Sobol - Lobos Studios
2018-03-26 23:00:15 UTC
Permalink
Actually, I came up with a solution. I subclassed WebAppContext and separated the check for the connector from the check for the virtual host names.

I can create a gist if you want to see what I did.



Thanks



--

Lobos Studios | Phone: 877.919.4WEB | LobosStudios.com | Facebook.com/LobosStudios | @LobosStudios

Web Development - Mobile Development - Helpdesk/Tech Support - Computer Sales & Service

Acer Authorized Reseller - Computers, Windows and Android Tablets, Accessories



Steve Sobol - CEO, Senior Developer and Server Jockey

***@LobosStudios.com



From: jetty-users-***@eclipse.org <jetty-users-***@eclipse.org> On Behalf Of Joakim Erdfelt
Sent: Monday, March 26, 2018 14:47
To: JETTY user mailing list <jetty-***@eclipse.org>
Subject: Re: [jetty-users] Binding a WebAppContext to a specific connector?



The cookbook has a basic example to start with ...



https://github.com/jetty-project/embedded-jetty-cookbook/blob/master/src/main/java/org/eclipse/jetty/cookbook/ConnectorSpecificWebapps.java



.. modify that to show your issue please.






Joakim Erdfelt / ***@webtide.com <mailto:***@webtide.com>



On Mon, Mar 26, 2018 at 4:44 PM, Greg Wilkins <***@webtide.com <mailto:***@webtide.com> > wrote:

I just did a simple test based on the ManyServletContext example class and it works fine for me.



If you are still having trouble with the mechanism, can you do a little hello world style example to demonstrate the problem?



cheers





On 27 March 2018 at 08:32, Greg Wilkins <***@webtide.com <mailto:***@webtide.com> > wrote:

Steve,



I will test the name only shortly.... but at a certain point, if you want a webapp to respond to just one connector, then it's simplest to create a new server that just binds the two of them.



On 24 March 2018 at 02:07, Steve Sobol - Lobos Studios <***@lobosstudios.com <mailto:***@lobosstudios.com> > wrote:

It didn’t seem to work when I only used the connector names, either.







On Fri, Mar 23, 2018 at 7:38 AM -0700, "Steve Sobol - Lobos Studios" <***@lobosstudios.com <mailto:***@lobosstudios.com> > wrote:

So if I want a WebAppContext to serve my app only for certain hostnames and only on one connector, that isn’t possible?







On Fri, Mar 23, 2018 at 2:59 AM -0700, "Joakim Erdfelt" <***@webtide.com <mailto:***@webtide.com> > wrote:

virtualHosts are not AND logic, they are OR logic.



Said another way, if you have a context.virtualHosts, then the incoming request MUST match ONE of the virtualHosts entries.



- Joakim




Joakim Erdfelt / ***@webtide.com <mailto:***@webtide.com>



On Thu, Mar 22, 2018 at 11:06 PM, Steve Sobol - Lobos Studios <***@lobosstudios.com <mailto:***@lobosstudios.com> > wrote:

Hello :)

https://stackoverflow.com/questions/26148418/jetty-9-setting-up-handlers-and-connectors talks about setting up a handler that is only used to respond to requests on a specific connector:



ServerConnector httpConnector = new ServerConnector(server);

httpConnector.setName("unsecured"); // named connector

httpConnector.setPort(80);



ContextHandler helloHandler = new ContextHandler();

helloHandler.setContextPath("/hello");

helloHandler.setHandler(new HelloHandler("Hello World"));

helloHandler.setVirtualHosts(new String[]{"@unsecured"});



Does this work out of the box for web app contexts? Part of my code follows:



ServerConnector sslConnector = new ServerConnector(s,
new SslConnectionFactory(sslContextFactory, HttpVersion.HTTP_1_1.asString()),
new HttpConnectionFactory(sslHttpConfig));
sslConnector.setName("https");
sslConnector.setHost("0.0.0.0");
sslConnector.setPort(443);



ServerConnector nonSslConnector = new ServerConnector(s,
new HttpConnectionFactory(),
new HttpConnectionFactory(nonSslHttpConfig));
nonSslConnector.setName("http");
nonSslConnector.setHost("0.0.0.0");
nonSslConnector.setPort(80);



WebAppContext t1 = new WebAppContext();
t1.setContextPath("/");
t1.setDisplayName("abc");
t1.setWar("c:/TempWebapp-1.0.war");
t1.setVirtualHosts(new String[] {"@https","admin.bamidbarconnect.com <http://admin.bamidbarconnect.com> ","test2.local"});
WebAppContext t2 = new WebAppContext();
t2.setContextPath("/");
t2.setResourceBase("c:/TempWebapp2/");
t2.setParentLoaderPriority(true);
t2.setVirtualHosts(new String[] {"@http","test1.local"});

s.setConnectors(new Connector[]{nonSslConnector, sslConnector});

HandlerList list = new HandlerList();
list.addHandler(t1);
list.addHandler(t2);

s.setHandler(list);



If it’s supposed to work, it doesn’t seem to be working for me. T1 is only supposed to be served via the SSL connector on port 443 and T2 is only supposed to be served on the non-SSL connector on port 80.



Thanks

--Steve



--

Lobos Studios | Phone: 877.919.4WEB | LobosStudios.com | Facebook.com/LobosStudios | @LobosStudios

Web Development - Mobile Development - Helpdesk/Tech Support - Computer Sales & Service

Acer Authorized Reseller - Computers, Windows and Android Tablets, Accessories



Steve Sobol - CEO, Senior Developer and Server Jockey

***@LobosStudios.com <mailto:***@LobosStudios.com>




_______________________________________________
jetty-users mailing list
jetty-***@eclipse.org <mailto:jetty-***@eclipse.org>
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users




_______________________________________________
jetty-users mailing list
jetty-***@eclipse.org <mailto:jetty-***@eclipse.org>
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
--
Greg Wilkins <***@webtide.com <mailto:***@webtide.com> > CTO http://webtide.com
--
Greg Wilkins <***@webtide.com <mailto:***@webtide.com> > CTO http://webtide.com
Jan Bartel
2018-03-26 22:59:38 UTC
Permalink
Steve,

Jetty version? What other configuration? What urls did you try? What output
did you get? Did you turn on debug?

I cut and pasted your code and tested against jetty-9.4.8, and it is
working fine. I actually used 2 http ports instead of one https port, but I
suspect that wouldn't make any difference.
I used port numbers 8080 (associated with the second context) and 9090
(associated with the first context), with these urls:

http://localhost:8080/ -> served only context two
http://localhost:9090/ -> served only context one

Jan

On 24 March 2018 at 02:07, Steve Sobol - Lobos Studios <
Post by Steve Sobol - Lobos Studios
It didn’t seem to work when I only used the connector names, either.
On Fri, Mar 23, 2018 at 7:38 AM -0700, "Steve Sobol - Lobos Studios" <
So if I want a WebAppContext to serve my app only for certain hostnames
Post by Steve Sobol - Lobos Studios
and only on one connector, that isn’t possible?
On Fri, Mar 23, 2018 at 2:59 AM -0700, "Joakim Erdfelt" <
virtualHosts are not AND logic, they are OR logic.
Post by Joakim Erdfelt
Said another way, if you have a context.virtualHosts, then the incoming
request MUST match ONE of the virtualHosts entries.
- Joakim
On Thu, Mar 22, 2018 at 11:06 PM, Steve Sobol - Lobos Studios <
Post by Steve Sobol - Lobos Studios
Hello :)
https://stackoverflow.com/questions/26148418/jetty-9-setting
-up-handlers-and-connectors talks about setting up a handler that is
ServerConnector httpConnector = new ServerConnector(server);
httpConnector.setName("unsecured"); // named connector
httpConnector.setPort(80);
ContextHandler helloHandler = new ContextHandler();
helloHandler.setContextPath("/hello");
helloHandler.setHandler(new HelloHandler("Hello World"));
ServerConnector sslConnector = *new *ServerConnector(s,
*new *SslConnectionFactory(sslContextFactory, HttpVersion.*HTTP_1_1*.asString()),
*new *HttpConnectionFactory(sslHttpConfig));
sslConnector.setName(*"https"*);
sslConnector.setHost(*"0.0.0.0"*);
sslConnector.setPort(443);
ServerConnector nonSslConnector = *new *ServerConnector(s,
*new *HttpConnectionFactory(),
*new *HttpConnectionFactory(nonSslHttpConfig));
nonSslConnector.setName(*"http"*);
nonSslConnector.setHost(*"0.0.0.0"*);
nonSslConnector.setPort(80);
WebAppContext t1 = *new *WebAppContext();
t1.setContextPath(*"/"*);
t1.setDisplayName(*"abc"*);
t1.setWar(*"c:/TempWebapp-1.0.war"*);
WebAppContext t2 = *new *WebAppContext();
t2.setContextPath(*"/"*);
t2.setResourceBase(*"c:/TempWebapp2/"*);
t2.setParentLoaderPriority(*true*);
s.setConnectors(*new *Connector[]{nonSslConnector, sslConnector});
HandlerList list = *new *HandlerList();
list.addHandler(t1);
list.addHandler(t2);
s.setHandler(list);
If it’s supposed to work, it doesn’t seem to be working for me. T1 is
only supposed to be served via the SSL connector on port 443 and T2 is only
supposed to be served on the non-SSL connector on port 80.
Thanks
--Steve
--
Lobos Studios | Phone: 877.919.4WEB | LobosStudios.com |
Web Development - Mobile Development - Helpdesk/Tech Support - Computer
Sales & Service
Acer Authorized Reseller - Computers, Windows and Android Tablets, Accessories
Steve Sobol - CEO, Senior Developer and Server Jockey
_______________________________________________
jetty-users mailing list
To change your delivery options, retrieve your password, or unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
To change your delivery options, retrieve your password, or unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
--
Jan Bartel <***@webtide.com>
www.webtide.com
*Expert assistance from the creators of Jetty and CometD*
Steve Sobol - Lobos Studios
2018-03-26 23:01:34 UTC
Permalink
I misspoke. If I just include the connector names, it works fine.

That still leaves the issue that I want to specify virtual hosts as well as connectors, but as I just mentioned, I came up with a solution for that, and can put my code online if anyone wants to see it.



Thanks



--

Lobos Studios | Phone: 877.919.4WEB | LobosStudios.com | Facebook.com/LobosStudios | @LobosStudios

Web Development - Mobile Development - Helpdesk/Tech Support - Computer Sales & Service

Acer Authorized Reseller - Computers, Windows and Android Tablets, Accessories



Steve Sobol - CEO, Senior Developer and Server Jockey

***@LobosStudios.com



From: jetty-users-***@eclipse.org <jetty-users-***@eclipse.org> On Behalf Of Jan Bartel
Sent: Monday, March 26, 2018 16:00
To: JETTY user mailing list <jetty-***@eclipse.org>
Subject: Re: [jetty-users] Binding a WebAppContext to a specific connector?



Steve,



Jetty version? What other configuration? What urls did you try? What output did you get? Did you turn on debug?



I cut and pasted your code and tested against jetty-9.4.8, and it is working fine. I actually used 2 http ports instead of one https port, but I suspect that wouldn't make any difference.

I used port numbers 8080 (associated with the second context) and 9090 (associated with the first context), with these urls:



http://localhost:8080/ -> served only context two

http://localhost:9090/ -> served only context one



Jan



On 24 March 2018 at 02:07, Steve Sobol - Lobos Studios <***@lobosstudios.com <mailto:***@lobosstudios.com> > wrote:

It didn’t seem to work when I only used the connector names, either.







On Fri, Mar 23, 2018 at 7:38 AM -0700, "Steve Sobol - Lobos Studios" <***@lobosstudios.com <mailto:***@lobosstudios.com> > wrote:

So if I want a WebAppContext to serve my app only for certain hostnames and only on one connector, that isn’t possible?







On Fri, Mar 23, 2018 at 2:59 AM -0700, "Joakim Erdfelt" <***@webtide.com <mailto:***@webtide.com> > wrote:

virtualHosts are not AND logic, they are OR logic.



Said another way, if you have a context.virtualHosts, then the incoming request MUST match ONE of the virtualHosts entries.



- Joakim




Joakim Erdfelt / ***@webtide.com <mailto:***@webtide.com>



On Thu, Mar 22, 2018 at 11:06 PM, Steve Sobol - Lobos Studios <***@lobosstudios.com <mailto:***@lobosstudios.com> > wrote:

Hello :)

https://stackoverflow.com/questions/26148418/jetty-9-setting-up-handlers-and-connectors talks about setting up a handler that is only used to respond to requests on a specific connector:



ServerConnector httpConnector = new ServerConnector(server);

httpConnector.setName("unsecured"); // named connector

httpConnector.setPort(80);



ContextHandler helloHandler = new ContextHandler();

helloHandler.setContextPath("/hello");

helloHandler.setHandler(new HelloHandler("Hello World"));

helloHandler.setVirtualHosts(new String[]{"@unsecured"});



Does this work out of the box for web app contexts? Part of my code follows:



ServerConnector sslConnector = new ServerConnector(s,
new SslConnectionFactory(sslContextFactory, HttpVersion.HTTP_1_1.asString()),
new HttpConnectionFactory(sslHttpConfig));
sslConnector.setName("https");
sslConnector.setHost("0.0.0.0");
sslConnector.setPort(443);



ServerConnector nonSslConnector = new ServerConnector(s,
new HttpConnectionFactory(),
new HttpConnectionFactory(nonSslHttpConfig));
nonSslConnector.setName("http");
nonSslConnector.setHost("0.0.0.0");
nonSslConnector.setPort(80);



WebAppContext t1 = new WebAppContext();
t1.setContextPath("/");
t1.setDisplayName("abc");
t1.setWar("c:/TempWebapp-1.0.war");
t1.setVirtualHosts(new String[] {"@https","admin.bamidbarconnect.com <http://admin.bamidbarconnect.com> ","test2.local"});
WebAppContext t2 = new WebAppContext();
t2.setContextPath("/");
t2.setResourceBase("c:/TempWebapp2/");
t2.setParentLoaderPriority(true);
t2.setVirtualHosts(new String[] {"@http","test1.local"});

s.setConnectors(new Connector[]{nonSslConnector, sslConnector});

HandlerList list = new HandlerList();
list.addHandler(t1);
list.addHandler(t2);

s.setHandler(list);



If it’s supposed to work, it doesn’t seem to be working for me. T1 is only supposed to be served via the SSL connector on port 443 and T2 is only supposed to be served on the non-SSL connector on port 80.



Thanks

--Steve



--

Lobos Studios | Phone: 877.919.4WEB | LobosStudios.com | Facebook.com/LobosStudios | @LobosStudios

Web Development - Mobile Development - Helpdesk/Tech Support - Computer Sales & Service

Acer Authorized Reseller - Computers, Windows and Android Tablets, Accessories



Steve Sobol - CEO, Senior Developer and Server Jockey

***@LobosStudios.com <mailto:***@LobosStudios.com>




_______________________________________________
jetty-users mailing list
jetty-***@eclipse.org <mailto:jetty-***@eclipse.org>
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users




_______________________________________________
jetty-users mailing list
jetty-***@eclipse.org <mailto:jetty-***@eclipse.org>
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
--
Jan Bartel <***@webtide.com <mailto:***@webtide.com> >

www.webtide.com <http://www.webtide.com>
Expert assistance from the creators of Jetty and CometD
Loading...