As far as I know, combining CDI's RequestScoped and SessionScoped beans
with websockets is stil not supported by the spec. You can find progress on
this here: https://issues.jboss.org/browse/CDI-370

Best regards,
Emond

On Fri, Oct 24, 2014 at 9:54 PM, John Sarman <[email protected]> wrote:

> Ok I was able to trigger a ContextNotActiveException.  This exception
> occurs in both M3 and snapshot.  What I did to create the issue was to
> create a SessionScoped service. This is the CDI part.  I then Injected that
> in to the HomePage.class.  The service was simple, has two methods
> increment and getCount.  When I call increment inside an overridden event
> method of the WebSocketBehavior such as onMessage, I
> get: org.jboss.weld.context.ContextNotActiveException: WELD-001303: No
> active contexts for scope type javax.enterprise.context.SessionScoped.
>
> This proves the divorce claim, that is an Injected Scope based service will
> not have an active context of said scope during a WebSocketEvent.
> Just to confirm this I changed the Service scope to ApplicationScoped and
> it works fine.  ApplicationScoped does not require a scope (request,
> session, or conversation).
>
> At the surface what I found is that either the wicket-native-websocket
> needs to depend on wicket-cdi-1.1 and setup the contexts during the
> events(not recommended), or wicket-cdi-1.1 needs to somehow intercept the
> websocket events and activate the contexts (not even sure if this is
> plausible), or (my recommendation) is that emond papegaaij and Igor
> Vaynberg
> look into this issue and come up with a proper solution.
>
> When cdi-1.1 was initially introduced into the codebase, the activation of
> scope was initially solved by requiring a dependency on weld.  Ultimately
> Emond simplified this in the current commit of cdi-1.1 and added code
> earlier in the cdi core to allow whatever cdi implementation framework to
> trigger the activation mechanism.
>
> Somehow this same triggering of context activation needs to occur in the
> websockets code so that if a javax.inject annotation service is called
> during a websocket event that the proper context has been activated.
>
> Input is definitely needed from the Wicket team to prevent the two packages
> from divorcing :)
>
>
> --
> John
>
>
>
>
>
> On Fri, Oct 24, 2014 at 3:02 PM, Sebastien <[email protected]> wrote:
>
> > Hi John, I will give you an example on monday...
> > On Oct 24, 2014 8:46 PM, "John Sarman" <[email protected]> wrote:
> >
> > > This works fine by overriding onMessage in your test class and adding
> > this
> > > crude html to your html.
> > >
> > > java:
> > > protected void onMessage(WebSocketRequestHandler handler, TextMessage
> > > message)
> > > {
> > >                         LOG.info(message.getText());
> > >
> > > }
> > >
> > > html:
> > >
> > > <button onclick="Wicket.WebSocket.send('message');">PRESS ME</button>
> > >
> > >
> > > Long story longer, I was able to use chrome console to hack a bad test,
> > > Martin or other contributors, is there an up to date example for the
> > native
> > > websockets, or a simple point me into the right direction to better
> > > understand how to implement a better real world use case, both to test
> > the
> > > WICKET-5733 and just to learn about the wicket way to implement native
> > > websocket code.
> > >
> > > Thanks,
> > > John
> > >
> > >
> > > On Fri, Oct 24, 2014 at 2:17 PM, John Sarman <[email protected]>
> > wrote:
> > >
> > > > Yeah, I am just trying to trigger the onMessage at this point mainly
> > just
> > > > to learn more about the native websocket package at the moment.  So I
> > am
> > > > just adding a button in html and adding some inline js to the
> onclick.
> > > > First attempt I copy pasted var ws = new Wicket.WebSocket();
> > > > ws.send('message'); from the wiki into the onclick and got a
> exception
> > in
> > > > the chrome console stating cannot send message while in the
> connecting
> > > > state.  Assuming I need to learn more here, but I will keep probing
> at
> > > this
> > > > mainly as an effort to learn how to use the wicket native websockets.
> > > >
> > > >
> > > >
> > > > On Fri, Oct 24, 2014 at 2:11 PM, Sebastien <[email protected]> wrote:
> > > >
> > > >> Hi John,
> > > >>
> > > >> If you get the "client connected" message and no stacktrace, we are
> > > good I
> > > >> guess :)
> > > >>
> > > >> I will investigate on my side given your previous answer...
> > > >>
> > > >> Thanks again,
> > > >> Sebastien
> > > >> On Oct 24, 2014 7:58 PM, "John Sarman" <[email protected]>
> wrote:
> > > >>
> > > >> > Sebastian,
> > > >> > Just updated my snapshots, clean built wicket, changed the
> > dependency
> > > to
> > > >> > 7.0.0-SNAPSHOT and all seems well running on Wildfly.  Is there
> > > >> something
> > > >> > else I need to do to trigger your error.  Currently page comes up
> > with
> > > >> the
> > > >> > label  7.0.0-SNAPSHOT. I even checked my .m2 repo to verify my jar
> > > files
> > > >> > had proper timestamp, which they did.  I went so far as to clone
> > > wicket,
> > > >> > build, and test app.  Is there a way to trigger the websocket
> push,
> > > >> because
> > > >> > currently log file only states:
> > > >> >
> > > >> > 13:40:19,258 ERROR [stderr] (default task-1)
> > > >> >
> ********************************************************************
> > > >> > 13:40:19,259 ERROR [stderr] (default task-1) *** WARNING: Wicket
> is
> > > >> running
> > > >> > in DEVELOPMENT mode.              ***
> > > >> > 13:40:19,259 ERROR [stderr] (default task-1) ***
> > > >> >     ^^^^^^^^^^^                    ***
> > > >> > 13:40:19,259 ERROR [stderr] (default task-1) *** Do NOT deploy to
> > your
> > > >> live
> > > >> > server(s) without changing this.  ***
> > > >> > 13:40:19,259 ERROR [stderr] (default task-1) *** See
> > > >> > Application#getConfigurationType() for more information. ***
> > > >> > 13:40:19,259 ERROR [stderr] (default task-1)
> > > >> >
> ********************************************************************
> > > >> > 13:40:21,592 INFO  [com.mycompany.HomePage] (default task-7)
> Client
> > > >> > connected
> > > >> >
> > > >> > where the relevant part is the last log statement stating
> websocket
> > is
> > > >> > connected to client.
> > > >> >
> > > >> > I would like to see if the log message from onPush works fine, but
> > > >> unsure
> > > >> > how to test this ATM.
> > > >> >
> > > >> > Hope this helps,
> > > >> > John
> > > >> >
> > > >> >
> > > >> >
> > > >> > On Fri, Oct 24, 2014 at 12:03 PM, Sebastien <[email protected]>
> > wrote:
> > > >> >
> > > >> > > Hi,
> > > >> > >
> > > >> > > On Fri, Oct 24, 2014 at 6:00 PM, Martin Grigorov <
> > > >> [email protected]>
> > > >> > > wrote:
> > > >> > >
> > > >> > > > John,
> > > >> > > >
> > > >> > > > The quickstart uses 7.0.0-M3.
> > > >> > > >
> > > >> > >
> > > >> > > Oops, right! I'm really sorry for that! I probably wanted to
> test
> > a
> > > >> last
> > > >> > > time it was not repro in -M3...
> > > >> > >
> > > >> > >
> > > >> > >
> > > >> > > > Sebastien said that the problem is in 7.0.0-SNAPSHOT.
> > > >> > > >
> > > >> > > > Martin Grigorov
> > > >> > > > Wicket Training and Consulting
> > > >> > > > https://twitter.com/mtgrigorov
> > > >> > > >
> > > >> > > > On Fri, Oct 24, 2014 at 6:51 PM, John Sarman <
> > > [email protected]>
> > > >> > > wrote:
> > > >> > > >
> > > >> > > > > Sebastian,
> > > >> > > > > I also deployed your quickstart in wildfly-8.0Final with no
> > > >> changes,
> > > >> > > and
> > > >> > > > > all seems well.  As for the quickstart test, you would need
> to
> > > use
> > > >> > > > cdi-unit
> > > >> > > > > as a test dependency to enable the cdi aspects for the
> > > >> wicket-tester.
> > > >> > > To
> > > >> > > > > successfully add that please look at the test section in the
> > > >> > > > wicket-cdi-1.1
> > > >> > > > > code.  In there you will find an extended version of
> > > WicketTester
> > > >> > that
> > > >> > > > > properly starts and stops the different contexts.  Without
> > > using a
> > > >> > > > package
> > > >> > > > > like cdi-unit or arquillian, I am afraid you will always
> get a
> > > >> > Context
> > > >> > > > > based exception because there is no cdi service provider
> > > >> activated.
> > > >> > > > >
> > > >> > > > > On Fri, Oct 24, 2014 at 11:15 AM, John Sarman <
> > > >> [email protected]>
> > > >> > > > > wrote:
> > > >> > > > >
> > > >> > > > > > I was able to start your test app in Glassfish4 without
> > > changes.
> > > >> > > > > >
> > > >> > > > > > For Tomcat I added
> > > >> > > > > >                  <dependency>
> > > >> > > > > > <groupId>org.jboss.weld</groupId>
> > > >> > > > > > <artifactId>weld-core</artifactId>
> > > >> > > > > > <version>2.1.2.Final</version>
> > > >> > > > > > </dependency>
> > > >> > > > > > <dependency>
> > > >> > > > > > <groupId>org.jboss.weld.servlet</groupId>
> > > >> > > > > > <artifactId>weld-servlet-core</artifactId>
> > > >> > > > > > <version>2.1.2.Final</version>
> > > >> > > > > > </dependency>
> > > >> > > > > > to the pom.
> > > >> > > > > >
> > > >> > > > > > I then added
> > > >> > > > > > <listener>
> > > >> > > > > > <!-- initialize Weld in servlet environment -->
> > > >> > > > > >
> > > >> > > > > >
> > > >> > > > >
> > > >> > > >
> > > >> > >
> > > >> >
> > > >>
> > >
> >
> <listener-class>org.jboss.weld.environment.servlet.Listener</listener-class>
> > > >> > > > > > </listener>
> > > >> > > > > >
> > > >> > > > > > to web.xml
> > > >> > > > > >
> > > >> > > > > > The homepage then loaded fine as well.  If you look in
> > > >> > > wicket-examples
> > > >> > > > > you
> > > >> > > > > > can find these CDI related additions to the pom.xml and
> the
> > > >> > web.xml.
> > > >> > > > > >
> > > >> > > > > > Hope this helps
> > > >> > > > > >
> > > >> > > > > > John Sarman
> > > >> > > > > >
> > > >> > > > > >
> > > >> > > > > >
> > > >> > > > > >
> > > >> > > > > > On Fri, Oct 24, 2014 at 4:12 AM, Sebastien <
> > [email protected]>
> > > >> > wrote:
> > > >> > > > > >
> > > >> > > > > >> Hi Martin,
> > > >> > > > > >>
> > > >> > > > > >> On Thu, Oct 23, 2014 at 8:27 PM, Martin Grigorov <
> > > >> > > > [email protected]>
> > > >> > > > > >> wrote:
> > > >> > > > > >>
> > > >> > > > > >> > Ticket please.
> > > >> > > > > >> > With quickstart will be processed sooner ;-)
> > > >> > > > > >> >
> > > >> > > > > >>
> > > >> > > > > >> Fair :)
> > > >> > > > > >> https://issues.apache.org/jira/browse/WICKET-5733
> > > >> > > > > >>
> > > >> > > > > >> Best regards,
> > > >> > > > > >> Sebastien.
> > > >> > > > > >>
> > > >> > > > > >
> > > >> > > > > >
> > > >> > > > >
> > > >> > > >
> > > >> > >
> > > >> >
> > > >>
> > > >
> > > >
> > >
> >
>

Reply via email to