Hi,

nice to see, that there are some solutions for using wicket in a cloud.
I will have a look on this.

If you are using spring with wicket you should also have a look on
https://github.com/spring-projects/spring-session . This project also
have a RedisSession handling for various app-serveres.
Also Wicketstuff has some libs for storing the pages in other datastores
like redis (or memcached, or others).

I'm using this in cloud-foundry also without sticky-session, but with
stateful wicketpages.

Martin

Am 18.02.2015 um 18:28 schrieb Bryan Holladay:
> As I mentioned, I felt my first iteration was more of a proof of concept
> since it relied on IP addresses. I've just committed an update that shows
> how to fully rely on the session id across all servers in wicket. It uses a
> custom persistent manager store for tomcat to keep track of the session
> ids. The instructions are in the README file.
>
> https://github.com/baholladay/WicketRedisSession
>
> Hopefully this will save some people many hours of work!
>
> -Bryan
>
> On Tue, Feb 10, 2015 at 2:14 PM, Tobias Soloschenko <
> tobiassolosche...@googlemail.com> wrote:
>
>> Hi,
>>
>> thanks a lot! Good to know where to look for such an implementation!
>>
>> kind regards
>>
>> Tobias
>>
>>> Am 10.02.2015 um 19:40 schrieb Bryan Holladay <holla...@longsight.com>:
>>>
>>> I love open source projects (Sakai guy here) and this ended up being
>> pretty
>>> simple code. I've created a GitHub project to share the code:
>>> https://github.com/baholladay/WicketRedisSession
>>>
>>> It essentially is a passthrough to storing data on Redis. It relies on
>> the
>>> Jedis library (dependency below) and you simply add the following lines
>> to
>>> your Application#init method:
>>>
>>> setSessionStoreProvider(new RedisSessionStoreProvider());
>>> setPageManagerProvider(new RedisPageManagerProvider(this));
>>>
>>> pom.xml:
>>> <dependency>
>>> <groupId>redis.clients</groupId>
>>> <artifactId>jedis</artifactId>
>>> <version>2.6.1</version>
>>> <type>jar</type>
>>> <scope>compile</scope>
>>> </dependency>
>>>
>>> I've tested this with ElasticLoadBalancer set to non-sticky sessions and
>>> Redis on 3 AWS tomcat nodes and it worked perfectly. Every request went
>> to
>>> a different server and never had any issues. I use a lot of ajax
>> components
>>> and have several nested pages and workflows too. Right now I consider
>> this
>>> still a proof of concept because I had to rely on the IP address as the
>>> session ID. I prefer to use JSESSIONID and will look into fixing this
>>> (please make a pull request if you have a solution). I think this has to
>> do
>>> with the fact that I do not rely on cookies in any situation since IE and
>>> Safari doesn' play nicely with IFrames and cross domains. I've have
>>> "getResourceSettings().setEncodeJSessionId(true);" set, it's not that.
>>>
>>> Thanks,
>>> Bryan
>>>
>>> On Tue, Feb 10, 2015 at 4:00 AM, Martijn Dashorst <
>>> martijn.dasho...@gmail.com> wrote:
>>>
>>>> I'm looking forward to hear more about this setup. It was my
>>>> understanding that Wicket can't run in a non-sticky cluster setup due
>>>> to the required pagemap locks to avoid concurrent updates to the
>>>> component hierarchy. But I'd be very happy to hear my understanding
>>>> being disproved.
>>>>
>>>> Martijn
>>>>
>>>>
>>>>
>>>> On Tue, Feb 10, 2015 at 2:51 AM, Bryan Holladay <holla...@longsight.com
>>>> wrote:
>>>>> Thank you Martin! I was able to get it to work really simply with
>> setting
>>>>> the following in my WebApplication:
>>>>>
>>>>> setSessionStoreProvider
>>>>> setPageManagerProvider
>>>>>
>>>>> The implementations just passively passed and retrieved the data to and
>>>>> from my Redis server.
>>>>>
>>>>> Thanks,
>>>>> Bryan
>>>>>
>>>>>
>>>>>
>>>>> On Mon, Feb 9, 2015 at 3:32 PM, Martin Grigorov <mgrigo...@apache.org>
>>>>> wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> Since I while I want to create an integration with
>>>>>> https://github.com/spring-projects/spring-session but I haven't had
>> the
>>>>>> time (and demand).
>>>>>> The way to do it is to create custom impl of ISessionStore interface.
>>>>>>
>>>>>> Otherwise I remember a user in the community successfully using
>>>> distributed
>>>>>> sessions with Jetty's JDBC session manager (
>> http://www.eclipse.org/jetty/documentation/current/session-clustering-jdbc.html
>>>>>> ).
>>>>>>
>>>>>> Martin Grigorov
>>>>>> Wicket Training and Consulting
>>>>>> https://twitter.com/mtgrigorov
>>>>>>
>>>>>> On Mon, Feb 9, 2015 at 7:51 PM, Bryan Holladay <
>> holla...@longsight.com>
>>>>>> wrote:
>>>>>>
>>>>>>> Has anyone setup wicket's AuthenticatedWebApplication sessions to use
>>>> a
>>>>>>> distributed memory cache (e.g. memcached, redis)? I would like to
>> make
>>>>>> the
>>>>>>> sticky sessions fail over to other tomcat's and allow non sticky load
>>>>>>> balancers.
>>>>>>>
>>>>>>> For example, I tested with
>>>>>>> https://github.com/magro/memcached-session-manager on tomcat 7 with
>>>>>>> memcached and both ELB and NGINX and it seems to not work with
>>>> Wicket. I
>>>>>>> also tested with redis by implementing
>>>>>>> AuthenticatedWebApplication#fetchCreateAndSetSession.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Bryan
>>>>
>>>>
>>>> --
>>>> Become a Wicket expert, learn from the best: http://wicketinaction.com
>>>>


Reply via email to