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

Reply via email to