Thank you very much Martin, I'll try this asap! :) On Tue, Oct 28, 2014 at 3:38 PM, Martin Grigorov <[email protected]> wrote:
> I've applied the improvement. > > Martin Grigorov > Wicket Training and Consulting > https://twitter.com/mtgrigorov > > On Tue, Oct 28, 2014 at 12:05 PM, Martin Grigorov <[email protected]> > wrote: > > > Same for org.apache.wicket.atmosphere.AtmosphereRequestHandler > > > > Martin Grigorov > > Wicket Training and Consulting > > https://twitter.com/mtgrigorov > > > > On Tue, Oct 28, 2014 at 11:59 AM, Martin Grigorov <[email protected]> > > wrote: > > > >> Hi, > >> > >> I see a simple way to improve this. > >> At > >> > https://github.com/apache/wicket/blob/master/wicket-cdi-1.1/src/main/java/org/apache/wicket/cdi/ConversationPropagator.java#L207 > >> there is a logic to not activate conversation > >> for BufferedResponseRequestHandler. > >> > >> With the following check we can disable it for WebSocketRequestHandler > >> too: > >> > >> diff --git > >> > i/wicket-cdi-1.1/src/main/java/org/apache/wicket/cdi/ConversationPropagator.java > >> > w/wicket-cdi-1.1/src/main/java/org/apache/wicket/cdi/ConversationPropagator.java > >> index 7a85d98..738a7bc 100644 > >> --- > >> > i/wicket-cdi-1.1/src/main/java/org/apache/wicket/cdi/ConversationPropagator.java > >> +++ > >> > w/wicket-cdi-1.1/src/main/java/org/apache/wicket/cdi/ConversationPropagator.java > >> @@ -36,6 +36,7 @@ import > >> > org.apache.wicket.request.handler.resource.ResourceReferenceRequestHandle > >> import org.apache.wicket.request.mapper.parameter.PageParameters; > >> import org.apache.wicket.request.resource.PackageResourceReference; > >> import org.apache.wicket.util.lang.Args; > >> +import org.apache.wicket.util.lang.Classes; > >> import org.slf4j.Logger; > >> import org.slf4j.LoggerFactory; > >> > >> @@ -209,6 +210,8 @@ public class ConversationPropagator extends > >> AbstractRequestCycleListener > >> // we do not care about pages that are > >> being rendered from a > >> // buffer > >> return false; > >> + } else if > >> > ("org.apache.wicket.protocol.ws.api.WebSocketRequestHandler".equals(Classes.name(handler.getClass()))) > >> { > >> + return false; > >> } > >> } > >> return true; > >> > >> It is error prone for refactoring but there won't be dependency to > >> websocket-core.jar. I don't expect renaming WSRH anytime soon! > >> > >> WDYT ? > >> > >> > >> Martin Grigorov > >> Wicket Training and Consulting > >> https://twitter.com/mtgrigorov > >> > >> On Sat, Oct 25, 2014 at 8:09 AM, Martin Grigorov <[email protected]> > >> wrote: > >> > >>> Hi, > >>> > >>> Thanks for the investigation, John! > >>> > >>> WebSocket communication is not intercepted by servlet filters and DI > >>> frameworks cannot prepare their proxies for request and session scoped > >>> beans. > >>> > >>> This is documented in the guide. > >>> > >>> With ver. 4.1.0 Spring introduced support for scoped beans in their > impl > >>> of web sockets. But it works on a higher level... > >>> On Oct 24, 2014 11:17 PM, "John Sarman" <[email protected]> wrote: > >>> > >>>> The last comment on that issue states: > >>>> It’s the responsibility of Websocket spec to implement these scopes. > We > >>>> should ensure they take the point before closing the ticket. > >>>> > >>>> I personally would down vote the suggestion that > wicket-native-websocket > >>>> should assume responsibility to implement the scopes, and just > >>>> explicitly > >>>> state this feature is not supported. > >>>> Thanks for the current status of why this does not work. > >>>> > >>>> John > >>>> > >>>> On Fri, Oct 24, 2014 at 4:05 PM, Emond Papegaaij < > >>>> [email protected]> > >>>> wrote: > >>>> > >>>> > 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. > >>>> > > > > >> > > > > >> > >>>> > > > > >> > > > > > > >>>> > > > > >> > > > > > > >>>> > > > > >> > > > > > >>>> > > > > >> > > > > >>>> > > > > >> > > > >>>> > > > > >> > > >>>> > > > > >> > >>>> > > > > > > >>>> > > > > > > >>>> > > > > > >>>> > > > > >>>> > > > >>>> > > >>>> > >>> > >> > > >
