Hi Jan,
That is the issue I am facing. Until 9.3 I was able to share the
SessionManger between contexts. In 9.4 I am not able to share the
SessionHandler between contexts. Sharing make the only one of the contexts
available and all other contexts become unavailable (or requests return null
context)
I solved it by
1. setting cookie path to root ("/")
2. extending the getSession() function of SessionHandler to loop through all
the contexts to check if session is created for the cookie id in any other
context and return the session from any one of the contexts
It doesn’t look efficient so wanted to know if there is any other recommended
way of achieving this.
Thanks & Regards,
Aravind.
From: Jan Bartel [mailto:[email protected]]
Sent: Tuesday, September 12, 2017 11:49 AM
To: Raghavan, Aravind <[email protected]>
Subject: Re: jetty-users Digest, Vol 100, Issue 9
Well, I would recommend that you use cookies to maintain a single-sign-on
solution instead.
However, have you tried just sharing the same SessionHandler across both
ServletContexts? Something like:
Server server = new Server(8080);
ContextHandlerCollection contexts = new ContextHandlerCollection();
server.setHandler(contexts);
ServletContextHandler context = new ServletContextHandler(
ServletContextHandler.SESSIONS);
context.setContextPath("/");
context.setResourceBase(System.getProperty("java.io.tmpdir"));
contexts.addHandler(context);
// Access the SessionHandler from the context.
SessionHandler sessions = context.getSessionHandler();
SessionCache cache = new DefaultSessionCache(sessions);
cache.setSessionDataStore(new NullSessionDataStore());
sessions.setSessionCache(cache);
context.addServlet(HelloSessionServlet.class, "/hello");
//Second ServletContext, sharing same SessionHandler
ServletContextHandler two = new ServletContextHandler();
two.setContextPath("/two");
two.addServlet(HelloSessionServlet.class, "/hello");
two.setSessionHandler(sessions);
contexts.addHandler(two);
server.start();
server.join();
Jan
On 11 September 2017 at 16:03, Raghavan, Aravind
<[email protected]<mailto:[email protected]>> wrote:
Hi Jan,
Thanks for taking time to looking into this issue. My Initial post did not
address the problem correctly. After further investigation I have found out
the exact issue but the solution still eludes me. Hope you will be able to
help me with that.
The reason I was receiving null servletContext was because I was sharing a
single SessionHandler object among many WebAppContexts.
In < Jetty 9.4 I used to share a HashSessionManager object between
WebAppContexts as a way of sharing session objects among them so that users
don't have to re-authenticate. The strategy seemed to work fine without any
issues.
In Jetty 9.4 due to changes to Session Management, I am not able to implement
similar strategy. SessionCache are specific to contexts and I am not able to
share sessions between contexts. Is there a way to implement global sessions
(server level rather than context level) in Jetty 9.4 ?
Thanks & Regards,
Aravind.
-----Original Message-----
From: [email protected]<mailto:[email protected]>
[mailto:[email protected]<mailto:[email protected]>]
On Behalf Of
[email protected]<mailto:[email protected]>
Sent: Friday, September 08, 2017 1:08 PM
To: [email protected]<mailto:[email protected]>
Subject: jetty-users Digest, Vol 100, Issue 9
Send jetty-users mailing list submissions to
[email protected]<mailto:[email protected]>
To subscribe or unsubscribe via the World Wide Web, visit
https://urldefense.proofpoint.com/v2/url?u=https-3A__dev.eclipse.org_mailman_listinfo_jetty-2Dusers&d=DwICAg&c=3v6EBbtpnn9A7jIZYjOw6KN7Pe17WoimzcinOq2Xztg&r=YbS3Xf40CmAQ12d73dX0bv-TPzDJnSuxn9AFms1fOWg&m=3EtJu1ppbjOzJ_v-OwhfrxLvSX0DZks9P4rZrXYXMgE&s=RvIeN8HbsO4LJBVcUHpSc5W1dLA4pLTzZV6ZsOpK35o&e=
or, via email, send a message with subject or body 'help' to
[email protected]<mailto:[email protected]>
You can reach the person managing the list at
[email protected]<mailto:[email protected]>
When replying, please edit your Subject line so it is more specific than "Re:
Contents of jetty-users digest..."
Today's Topics:
1. jetty 9.4.6 - getting null servletcontext in servlets
(Raghavan, Aravind)
2. Re: jetty 9.4.6 - getting null servletcontext in servlets
(Jan Bartel)
----------------------------------------------------------------------
Message: 1
Date: Fri, 8 Sep 2017 03:05:10 +0000
From: "Raghavan, Aravind"
<[email protected]<mailto:[email protected]>>
To: "'[email protected]<mailto:[email protected]>'"
<[email protected]<mailto:[email protected]>>
Subject: [jetty-users] jetty 9.4.6 - getting null servletcontext in
servlets
Message-ID:
<[email protected]<mailto:[email protected]>>
Content-Type: text/plain; charset="us-ascii"
Hi All,
I recently upgraded from jetty 9.3.11 to 9.4.6 . And after upgrade none of my
servlets are able to get servlet context. getServletContext() always returns
null. Can you please help me figure out what I am doing wrong?
Relevant section of code:
handlers_ = new HandlerCollection(true); chc_ = new ContextHandlerCollection();
for(WebAppConfig wap: webAppConfigs) //webappconfig a POJO from where I am
getting webapp configs
{
String path = wap.getPath();
String warFile = wap.getWarFile();
WebAppContext context =
new WebAppContext(chc_, warFile, path);
chc_.addHandler(context);
context.setContextPath(path);
for (ServletConfig servletConfig: wap.getServletConfigs()) //ServletConfig
is another POJO to get servlet configs
{
String servletName = servletConfig.getName();
String servletPath = servletConfig.getPath();
Servlet servlet = servletConfig.getServlet();
ServletHolder servletHolder = new ServletHolder(servlet);
context.addServlet(servletHolder, servletPath);
}
}
handlers_.setHandlers(new Handler[] { chc_, new DefaultHandler()});
server_.setHandler(handlers_);
Note the same code worked fined with 9.3.11. Getting null context only after
upgrading to 9.4.6. I am not sure what has changed in 9.4.x to cause this
issue. I can't find any changes (other than Session Management) in
documentation.
Thanks,
Aravind.
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<https://urldefense.proofpoint.com/v2/url?u=https-3A__dev.eclipse.org_mailman_private_jetty-2Dusers_attachments_20170908_dc9bb395_attachment.html&d=DwICAg&c=3v6EBbtpnn9A7jIZYjOw6KN7Pe17WoimzcinOq2Xztg&r=YbS3Xf40CmAQ12d73dX0bv-TPzDJnSuxn9AFms1fOWg&m=3EtJu1ppbjOzJ_v-OwhfrxLvSX0DZks9P4rZrXYXMgE&s=uXSeFQ--5DZ_eEs5QQQ2vRjxbnpdypym5CKG62YtgHM&e=
>
------------------------------
Message: 2
Date: Fri, 8 Sep 2017 15:08:20 +1000
From: Jan Bartel <[email protected]<mailto:[email protected]>>
To: JETTY user mailing list
<[email protected]<mailto:[email protected]>>
Subject: Re: [jetty-users] jetty 9.4.6 - getting null servletcontext
in servlets
Message-ID:
<CAEHc-316ZN2MCtR2mQ0jv=rwohofkl85dml51p7kkpmur2g...@mail.gmail.com<mailto:[email protected]>>
Content-Type: text/plain; charset="utf-8"
Aravind,
There's not enough info in your post to pinpoint the problem. I've whipped up a
small example based on your code, and it runs with no problems:
Server server = new Server(8080);
HandlerCollection handlers_ = new HandlerCollection(true);
ContextHandlerCollection chc_ = new ContextHandlerCollection();
String path = "/blah";
WebAppContext context =
new WebAppContext(chc_,
"/path/to/distro/demo-base/webapps/test.war", path);
//needed for the test webapp
HashLoginService loginService = new HashLoginService();
loginService.setName( "Test Realm" );
loginService.setConfig(
"/path/to/distro/demo-base/etc/realm.properties" );
server.addBean( loginService );
chc_.addHandler(context);
context.setContextPath(path);
String servletPath = "/blah/*";
Servlet servlet = new HelloServlet("blah-hello");
ServletHolder servletHolder = new ServletHolder(servlet);
context.addServlet(servletHolder, servletPath);
handlers_.setHandlers(new Handler[] { chc_, new DefaultHandler()});
server.setHandler(handlers_);
server.start();
server.join();
Perhaps you have old jetty-9.3 jars on the classpath?
In the absence of more info, I can only suggest that you turn on full debug to
give a clue. Maybe also try a server.setDumpAfterStart(true) as well to see
more.
Jan
On 8 September 2017 at 13:05, Raghavan, Aravind
<[email protected]<mailto:[email protected]>
> wrote:
> Hi All,
>
>
>
> I recently upgraded from jetty 9.3.11 to 9.4.6 . And after upgrade
> none of my servlets are able to get servlet context.
> getServletContext() always returns null. Can you please help me figure out
> what I am doing wrong?
>
>
>
> Relevant section of code:
>
>
>
> handlers_ = *new* HandlerCollection(*true*);
>
> chc_ = *new* ContextHandlerCollection();
>
> *for*(WebAppConfig wap: webAppConfigs) //webappconfig a POJO from where
> I am getting webapp configs
>
> {
>
> String path = wap.getPath();
>
> String warFile = wap.getWarFile();
>
> WebAppContext context =
>
> *new* WebAppContext(chc_, warFile, path);
>
> chc_.addHandler(context);
>
> context.setContextPath(path);
>
> *for* (ServletConfig servletConfig: wap.getServletConfigs())
> //ServletConfig is another POJO to get servlet configs
>
> {
>
> String servletName = servletConfig.getName();
>
> String servletPath = servletConfig.getPath();
>
> Servlet servlet = servletConfig.getServlet();
>
> ServletHolder servletHolder = *new* ServletHolder(servlet);
>
> context.addServlet(servletHolder, servletPath);
>
> }
>
> }
>
> handlers_.setHandlers(*new* Handler[] { chc_, *new*
> DefaultHandler()});
>
> server_.setHandler(handlers_);
>
>
>
>
>
> Note the same code worked fined with 9.3.11. Getting null context
> only after upgrading to 9.4.6. I am not sure what has changed in
> 9.4.x to cause this issue. I can?t find any changes (other than
> Session Management) in documentation.
>
>
>
>
>
> *Thanks,*
>
> *Aravind.*
>
>
>
>
>
> _______________________________________________
> jetty-users mailing list
> [email protected]<mailto:[email protected]>
> To change your delivery options, retrieve your password, or
> unsubscribe from this list, visit
> https://urldefense.proofpoint.com/v2/url?u=https-3A__dev.eclipse.org_m
> ailman_listinfo_jetty-2Dusers&d=DwICAg&c=3v6EBbtpnn9A7jIZYjOw6KN7Pe17W
> oimzcinOq2Xztg&r=YbS3Xf40CmAQ12d73dX0bv-TPzDJnSuxn9AFms1fOWg&m=3EtJu1p
> pbjOzJ_v-OwhfrxLvSX0DZks9P4rZrXYXMgE&s=RvIeN8HbsO4LJBVcUHpSc5W1dLA4pLT
> zZV6ZsOpK35o&e=
>
--
Jan Bartel <[email protected]<mailto:[email protected]>>
www.webtide.com<https://urldefense.proofpoint.com/v2/url?u=http-3A__www.webtide.com&d=DwMFaQ&c=3v6EBbtpnn9A7jIZYjOw6KN7Pe17WoimzcinOq2Xztg&r=YbS3Xf40CmAQ12d73dX0bv-TPzDJnSuxn9AFms1fOWg&m=qQPO_fhOyF9rFsQleBdbtPy3Ir8YjZ95Bl7ye5Jrzfw&s=Nrf6sD8GtaVdWcLDvxQEoqSP3sSrDfZwheg9QXue4G4&e=>
*Expert assistance from the creators of Jetty and CometD*
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<https://urldefense.proofpoint.com/v2/url?u=https-3A__dev.eclipse.org_mailman_private_jetty-2Dusers_attachments_20170908_85398a13_attachment.html&d=DwICAg&c=3v6EBbtpnn9A7jIZYjOw6KN7Pe17WoimzcinOq2Xztg&r=YbS3Xf40CmAQ12d73dX0bv-TPzDJnSuxn9AFms1fOWg&m=3EtJu1ppbjOzJ_v-OwhfrxLvSX0DZks9P4rZrXYXMgE&s=itXXamuZkZTco7DCOqWPAcHLxz54wS64UirsH4ZcZJ0&e=
>
------------------------------
_______________________________________________
jetty-users mailing list
[email protected]<mailto:[email protected]>
To change your delivery options, retrieve your password, or unsubscribe from
this list, visit
https://urldefense.proofpoint.com/v2/url?u=https-3A__dev.eclipse.org_mailman_listinfo_jetty-2Dusers&d=DwICAg&c=3v6EBbtpnn9A7jIZYjOw6KN7Pe17WoimzcinOq2Xztg&r=YbS3Xf40CmAQ12d73dX0bv-TPzDJnSuxn9AFms1fOWg&m=3EtJu1ppbjOzJ_v-OwhfrxLvSX0DZks9P4rZrXYXMgE&s=RvIeN8HbsO4LJBVcUHpSc5W1dLA4pLTzZV6ZsOpK35o&e=
End of jetty-users Digest, Vol 100, Issue 9
*******************************************
--
Jan Bartel <[email protected]<mailto:[email protected]>>
www.webtide.com<https://urldefense.proofpoint.com/v2/url?u=http-3A__www.webtide.com&d=DwMFaQ&c=3v6EBbtpnn9A7jIZYjOw6KN7Pe17WoimzcinOq2Xztg&r=YbS3Xf40CmAQ12d73dX0bv-TPzDJnSuxn9AFms1fOWg&m=qQPO_fhOyF9rFsQleBdbtPy3Ir8YjZ95Bl7ye5Jrzfw&s=Nrf6sD8GtaVdWcLDvxQEoqSP3sSrDfZwheg9QXue4G4&e=>
Expert assistance from the creators of Jetty and CometD
_______________________________________________
jetty-users mailing list
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from
this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users