uklance / tapestry-atmosphere Goto Github PK
View Code? Open in Web Editor NEWAsynchronous WebSocket/Comet Support in Tapestry
License: Other
Asynchronous WebSocket/Comet Support in Tapestry
License: Other
Test that session is garbage collected when client connection is closed.
Hi,
can someone help me with this? Unfortunately, I do not really know what to ask. I use gradle to integrate the repository here from github.
maven {
url 'https://jitpack.io'
}
dependencies {
implementation 'com.github.uklance: tapestry-atmosphere: master-SNAPSHOT'
}
ERROR [org.apache.catalina.core.ContainerBase.[myApp].[localhost].[/path]] [main ] Exception starting filter [myApp] - [org.apache.catalina.core.StandardContext] java.lang.NoClassDefFoundError: org/apache/tapestry5/ioc/ServiceBinder at java.base/java.lang.Class.getDeclaredMethods0(Native Method) at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3167) at java.base/java.lang.Class.privateGetPublicMethods(Class.java:3192) at java.base/java.lang.Class.getMethods(Class.java:1905) at org.apache.tapestry5.ioc.internal.DefaultModuleDefImpl.<init>(DefaultModuleDefImpl.java:126) at org.apache.tapestry5.ioc.RegistryBuilder.add(RegistryBuilder.java:123) at org.apache.tapestry5.ioc.RegistryBuilder.add(RegistryBuilder.java:161) at org.apache.tapestry5.ioc.IOCUtilities.addModulesInList(IOCUtilities.java:132) at org.apache.tapestry5.ioc.IOCUtilities.addModulesInManifest(IOCUtilities.java:105) at org.apache.tapestry5.ioc.IOCUtilities.addDefaultModules(IOCUtilities.java:76) at org.apache.tapestry5.internal.TapestryAppInitializer.<init>(TapestryAppInitializer.java:97) at org.apache.tapestry5.TapestryFilter.init(TapestryFilter.java:112) at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:262) at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:251) at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:102) at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4530) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5169) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909) at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:841) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909) at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.core.StandardService.startInternal(StandardService.java:421) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:932) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.startup.Tomcat.start(Tomcat.java:456) at com.john.smith.web.EclipseMain.run(EclipseMain.java:279) at com.john.smith.web.EclipseMain.main(EclipseMain.java:123) Caused by: java.lang.ClassNotFoundException: org.apache.tapestry5.ioc.ServiceBinder at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ... 41 more 15:35:57.479 ERROR [org.apache.catalina.core.StandardContext] [main ] One or more Filters failed to start. Full details will be found in the appropriate container log file - [org.apache.catalina.core.StandardContext] 15:35:57.479 ERROR [org.apache.catalina.core.StandardContext] [main ] Context [/path] startup failed due to previous errors - [org.apache.catalina.core.StandardContext]
I'm not entirely sure how this happened but I'm pretty sure I'm using the wrong version of atmosphere.js
.
The version here states var version = "2.1.2-javascript"
.
Whereas the bundled js here states var version = "2.0.9-javascript"
Investigate if it's possible to get the file from maven org.atmosphere.client:javascript
http://mvnrepository.com/artifact/org.atmosphere.client/javascript
Need to copy the isSecure() flag from the async request to the OfflineRequestContext
that is passed to tapestry-offline
Details here
[ERROR] 2014-09-09 17:18:39,077 - internal.PerRequestBroadcastFilterImpl -
Error rendering ComponentEventParameters[page=Home
component=Home:mainlayout.pushtarget event=notificationEvent]
java.util.concurrent.ExecutionException:
java.lang.UnsupportedOperationException: sendRedirect
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:188)
at
org.lazan.t5.offline.services.internal.OfflineComponentRendererImpl$1.get(OfflineComponentRendererImpl.java:84)
at
org.lazan.t5.offline.services.internal.OfflineComponentRendererImpl$1.get(OfflineComponentRendererImpl.java:79)
at
org.lazan.t5.atmosphere.services.internal.PerRequestBroadcastFilterImpl.filter(PerRequestBroadcastFilterImpl.java:59)
at org.atmosphere.cpr.BroadcasterConfig.filter(BroadcasterConfig.java:483)
at
org.atmosphere.cpr.DefaultBroadcaster.perRequestFilter(DefaultBroadcaster.java:850)
at
org.atmosphere.cpr.DefaultBroadcaster.deliverPush(DefaultBroadcaster.java:740)
at org.atmosphere.cpr.DefaultBroadcaster.push(DefaultBroadcaster.java:646)
at org.atmosphere.cpr.DefaultBroadcaster$2.run(DefaultBroadcaster.java:504)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.UnsupportedOperationException: sendRedirect
at
org.lazan.t5.offline.internal.OfflineResponse.sendRedirect(OfflineResponse.java:49)
at $Response_f3566ba200b.sendRedirect(Unknown Source)
at $Response_f3566ba1f6f.sendRedirect(Unknown Source)
at
org.apache.tapestry5.internal.services.RequestSecurityManagerImpl.checkForInsecureComponentEventRequest(RequestSecurityManagerImpl.java:61)
at
$RequestSecurityManager_f3566ba1fcb.checkForInsecureComponentEventRequest(Unknown
Source)
at
org.apache.tapestry5.services.TapestryModule$41.handle(TapestryModule.java:2473)
at $ComponentEventRequestHandler_f3566ba208c.handle(Unknown Source)
at $ComponentEventRequestHandler_f3566ba1ff3.handle(Unknown Source)
at
org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handleComponentEvent(ComponentRequestHandlerTerminator.java:43)
at
org.tynamo.security.SecurityComponentRequestFilter.handleComponentEvent(SecurityComponentRequestFilter.java:41)
at $ComponentRequestHandler_f3566ba1ff5.handleComponentEvent(Unknown Source)
at
org.apache.tapestry5.services.InitializeActivePageName.handleComponentEvent(InitializeActivePageName.java:39)
at $ComponentRequestHandler_f3566ba1ff5.handleComponentEvent(Unknown Source)
at
de.betterbits.comp.services.OfflineRendererRequestFilter.handleComponentEvent(OfflineRendererRequestFilter.java:44)
at $ComponentRequestFilter_f3566ba1ff2.handleComponentEvent(Unknown Source)
at $ComponentRequestHandler_f3566ba1ff5.handleComponentEvent(Unknown Source)
at
org.lazan.t5.atmosphere.services.internal.PageGlobalsComponentRequestFilter.handleComponentEvent(PageGlobalsComponentRequestFilter.java:22)
at $ComponentRequestHandler_f3566ba1ff5.handleComponentEvent(Unknown Source)
at
$ComponentRequestHandler_f3566ba1ff9.advised$handleComponentEvent_f3566ba1ffb(Unknown
Source)
at
$ComponentRequestHandler_f3566ba1ff9$Invocation_handleComponentEvent_f3566ba1ffa.proceedToAdvisedMethod(Unknown
Source)
at
org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:84)
at
org.apache.tapestry5.ioc.internal.util.InternalUtils$21$1.proceed(InternalUtils.java:1386)
at
org.tynamo.conversations.services.RequestHandlerDecoratorImpl$1.advise(RequestHandlerDecoratorImpl.java:26)
at
org.apache.tapestry5.ioc.internal.util.InternalUtils$21.advise(InternalUtils.java:1455)
at
org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:86)
at $ComponentRequestHandler_f3566ba1ff9.handleComponentEvent(Unknown Source)
at $ComponentRequestHandler_f3566ba1fbd.handleComponentEvent(Unknown Source)
at
org.lazan.t5.offline.services.internal.OfflineComponentRendererImpl$2.invoke(OfflineComponentRendererImpl.java:126)
at
org.apache.tapestry5.ioc.internal.services.ParallelExecutorImpl$1.call(ParallelExecutorImpl.java:58)
... 4 more
[ERROR] 2014-09-09 17:20:03,134 - internal.PerRequestBroadcastFilterImpl -
Error rendering ComponentEventParameters[page=Home
component=Home:mainlayout.pushtarget event=notificationEvent]
java.util.concurrent.ExecutionException:
java.lang.UnsupportedOperationException: sendRedirect
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:188)
at
org.lazan.t5.offline.services.internal.OfflineComponentRendererImpl$1.get(OfflineComponentRendererImpl.java:84)
at
org.lazan.t5.offline.services.internal.OfflineComponentRendererImpl$1.get(OfflineComponentRendererImpl.java:79)
at
org.lazan.t5.atmosphere.services.internal.PerRequestBroadcastFilterImpl.filter(PerRequestBroadcastFilterImpl.java:59)
at org.atmosphere.cpr.BroadcasterConfig.filter(BroadcasterConfig.java:483)
at
org.atmosphere.cpr.DefaultBroadcaster.perRequestFilter(DefaultBroadcaster.java:850)
at
org.atmosphere.cpr.DefaultBroadcaster.deliverPush(DefaultBroadcaster.java:740)
at org.atmosphere.cpr.DefaultBroadcaster.push(DefaultBroadcaster.java:646)
at org.atmosphere.cpr.DefaultBroadcaster$2.run(DefaultBroadcaster.java:504)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.UnsupportedOperationException: sendRedirect
at
org.lazan.t5.offline.internal.OfflineResponse.sendRedirect(OfflineResponse.java:49)
at $Response_f3566ba200b.sendRedirect(Unknown Source)
at $Response_f3566ba1f6f.sendRedirect(Unknown Source)
at
org.apache.tapestry5.internal.services.RequestSecurityManagerImpl.checkForInsecureComponentEventRequest(RequestSecurityManagerImpl.java:61)
at
$RequestSecurityManager_f3566ba1fcb.checkForInsecureComponentEventRequest(Unknown
Source)
at
org.apache.tapestry5.services.TapestryModule$41.handle(TapestryModule.java:2473)
at $ComponentEventRequestHandler_f3566ba208c.handle(Unknown Source)
at $ComponentEventRequestHandler_f3566ba1ff3.handle(Unknown Source)
at
org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handleComponentEvent(ComponentRequestHandlerTerminator.java:43)
at
org.tynamo.security.SecurityComponentRequestFilter.handleComponentEvent(SecurityComponentRequestFilter.java:41)
at $ComponentRequestHandler_f3566ba1ff5.handleComponentEvent(Unknown Source)
at
org.apache.tapestry5.services.InitializeActivePageName.handleComponentEvent(InitializeActivePageName.java:39)
at $ComponentRequestHandler_f3566ba1ff5.handleComponentEvent(Unknown Source)
at
de.betterbits.comp.services.OfflineRendererRequestFilter.handleComponentEvent(OfflineRendererRequestFilter.java:44)
at $ComponentRequestFilter_f3566ba1ff2.handleComponentEvent(Unknown Source)
at $ComponentRequestHandler_f3566ba1ff5.handleComponentEvent(Unknown Source)
at
org.lazan.t5.atmosphere.services.internal.PageGlobalsComponentRequestFilter.handleComponentEvent(PageGlobalsComponentRequestFilter.java:22)
at $ComponentRequestHandler_f3566ba1ff5.handleComponentEvent(Unknown Source)
at
$ComponentRequestHandler_f3566ba1ff9.advised$handleComponentEvent_f3566ba1ffb(Unknown
Source)
at
$ComponentRequestHandler_f3566ba1ff9$Invocation_handleComponentEvent_f3566ba1ffa.proceedToAdvisedMethod(Unknown
Source)
at
org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:84)
at
org.apache.tapestry5.ioc.internal.util.InternalUtils$21$1.proceed(InternalUtils.java:1386)
at
org.tynamo.conversations.services.RequestHandlerDecoratorImpl$1.advise(RequestHandlerDecoratorImpl.java:26)
at
org.apache.tapestry5.ioc.internal.util.InternalUtils$21.advise(InternalUtils.java:1455)
at
org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:86)
at $ComponentRequestHandler_f3566ba1ff9.handleComponentEvent(Unknown Source)
at $ComponentRequestHandler_f3566ba1fbd.handleComponentEvent(Unknown Source)
at
org.lazan.t5.offline.services.internal.OfflineComponentRendererImpl$2.invoke(OfflineComponentRendererImpl.java:126)
at
org.apache.tapestry5.ioc.internal.services.ParallelExecutorImpl$1.call(ParallelExecutorImpl.java:58)
... 4 more
I'm trying to use the demo application with Tapestry 5.4.5 and Atmosphere 2.5.9. When I do so, I get this error:
There is no suitable serializer for class org.lazan.t5.atmosphere.model.TopicMessage
It happens in Chrome and Firebox. I do have Hazelcast enabled, so further down the error page appears to be the source of the issue:
com.hazelcast.nio.serialization.HazelcastSerializationException
There is no suitable serializer for class org.lazan.t5.atmosphere.model.TopicMessage
Here is what is dumped to the console:
[WARN] cpr.AsynchronousProcessor Websocket protocol not supported
[INFO] hazelcast.HazelcastBroadcaster Added message listener to topic
[ERROR] ioc.Registry There is no suitable serializer for class org.lazan.t5.atmosphere.model.TopicMessage
[ERROR] ioc.Registry Operations trace:
[ERROR] ioc.Registry [ 1] Handling Ajax 'action' component event request for ChatDemo:chatform.
[ERROR] ioc.Registry [ 2] Triggering event 'action' on ChatDemo:chatform
[ERROR] ioc.Registry [ 3] Triggering event 'success' on ChatDemo:chatform
[ERROR] TapestryModule.RequestExceptionHandler Processing of request failed with uncaught exception: org.apache.tapestry5.runtime.ComponentEventException: There is no suitable serializer for class org.lazan.t5.atmosphere.model.TopicMessage [at classpath:org/lazan/t5/atmosphere/demo/pages/ChatDemo.tml, line 50]
org.apache.tapestry5.runtime.ComponentEventException: There is no suitable serializer for class org.lazan.t5.atmosphere.model.TopicMessage [at classpath:org/lazan/t5/atmosphere/demo/pages/ChatDemo.tml, line 50]
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.processEventTriggering(ComponentPageElementImpl.java:1126)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$3100(ComponentPageElementImpl.java:57)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1047)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1044)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:82)
at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:72)
at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1260)
at org.apache.tapestry5.internal.structure.ComponentPageElementResourcesImpl.invoke(ComponentPageElementResourcesImpl.java:154)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1043)
at org.apache.tapestry5.internal.services.AjaxComponentEventRequestHandler.handle(AjaxComponentEventRequestHandler.java:110)
at org.apache.tapestry5.internal.services.ajax.AjaxFormUpdateFilter.handle(AjaxFormUpdateFilter.java:56)
at $ComponentEventRequestHandler_1dc5846bb0e7b4.handle(Unknown Source)
at $ComponentEventRequestHandler_1dc5846bb0e761.handle(Unknown Source)
at org.apache.tapestry5.internal.services.AjaxFilter.handle(AjaxFilter.java:42)
at $ComponentEventRequestHandler_1dc5846bb0e762.handle(Unknown Source)
at org.apache.tapestry5.modules.TapestryModule$37.handle(TapestryModule.java:2218)
at $ComponentEventRequestHandler_1dc5846bb0e762.handle(Unknown Source)
at $ComponentEventRequestHandler_1dc5846bb0e66d.handle(Unknown Source)
at org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handleComponentEvent(ComponentRequestHandlerTerminator.java:43)
at org.apache.tapestry5.internal.services.DeferredResponseRenderer.handleComponentEvent(DeferredResponseRenderer.java:45)
at $ComponentRequestHandler_1dc5846bb0e66f.handleComponentEvent(Unknown Source)
at org.apache.tapestry5.services.InitializeActivePageName.handleComponentEvent(InitializeActivePageName.java:39)
at $ComponentRequestHandler_1dc5846bb0e66f.handleComponentEvent(Unknown Source)
at org.apache.tapestry5.internal.services.RequestOperationTracker$1.perform(RequestOperationTracker.java:55)
at org.apache.tapestry5.internal.services.RequestOperationTracker$1.perform(RequestOperationTracker.java:52)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.perform(OperationTrackerImpl.java:110)
at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.perform(PerThreadOperationTracker.java:84)
at org.apache.tapestry5.ioc.internal.RegistryImpl.perform(RegistryImpl.java:1266)
at org.apache.tapestry5.internal.services.RequestOperationTracker.handleComponentEvent(RequestOperationTracker.java:47)
at $ComponentRequestHandler_1dc5846bb0e66f.handleComponentEvent(Unknown Source)
at org.lazan.t5.atmosphere.services.internal.PageGlobalsComponentRequestFilter.handleComponentEvent(PageGlobalsComponentRequestFilter.java:22)
at $ComponentRequestHandler_1dc5846bb0e66f.handleComponentEvent(Unknown Source)
at $ComponentRequestHandler_1dc5846bb0e642.handleComponentEvent(Unknown Source)
at org.apache.tapestry5.internal.services.ComponentEventDispatcher.dispatch(ComponentEventDispatcher.java:48)
at $Dispatcher_1dc5846bb0e644.dispatch(Unknown Source)
at $Dispatcher_1dc5846bb0e639.dispatch(Unknown Source)
at org.apache.tapestry5.modules.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:305)
at org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)
at $RequestHandler_1dc5846bb0e63a.service(Unknown Source)
at org.apache.tapestry5.modules.TapestryModule$3.service(TapestryModule.java:848)
at $RequestHandler_1dc5846bb0e63a.service(Unknown Source)
at org.apache.tapestry5.modules.TapestryModule$2.service(TapestryModule.java:838)
at $RequestHandler_1dc5846bb0e63a.service(Unknown Source)
at org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:89)
at $RequestHandler_1dc5846bb0e63a.service(Unknown Source)
at org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:105)
at org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:95)
at org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:83)
at org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:119)
at $RequestHandler_1dc5846bb0e63a.service(Unknown Source)
at $RequestHandler_1dc5846bb0e62f.service(Unknown Source)
at org.apache.tapestry5.modules.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:256)
at org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:59)
at $HttpServletRequestHandler_1dc5846bb0e631.service(Unknown Source)
at org.lazan.t5.atmosphere.services.internal.HttpServletHttpServletRequestFilter.service(HttpServletHttpServletRequestFilter.java:72)
at org.lazan.t5.atmosphere.services.internal.AtmosphereHttpServletRequestFilter.service(AtmosphereHttpServletRequestFilter.java:50)
at $HttpServletRequestHandler_1dc5846bb0e631.service(Unknown Source)
at org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
at $HttpServletRequestFilter_1dc5846bb0e62c.service(Unknown Source)
at $HttpServletRequestHandler_1dc5846bb0e631.service(Unknown Source)
at org.apache.tapestry5.modules.TapestryModule$1.service(TapestryModule.java:798)
at $HttpServletRequestHandler_1dc5846bb0e631.service(Unknown Source)
at $HttpServletRequestHandler_1dc5846bb0e62b.service(Unknown Source)
at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:166)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:190)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1253)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1155)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.Server.handle(Server.java:530)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:347)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:256)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:247)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:140)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:382)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:708)
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:626)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.tapestry5.ioc.internal.OperationException: There is no suitable serializer for class org.lazan.t5.atmosphere.model.TopicMessage [at classpath:org/lazan/t5/atmosphere/demo/pages/ChatDemo.tml, line 50]
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.java:186)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:90)
at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:72)
at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1260)
at org.apache.tapestry5.internal.structure.ComponentPageElementResourcesImpl.invoke(ComponentPageElementResourcesImpl.java:154)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1043)
at org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl.triggerContextEvent(InternalComponentResourcesImpl.java:288)
at org.apache.tapestry5.corelib.components.Form.onAction(Form.java:549)
at org.apache.tapestry5.corelib.components.Form.dispatchComponentEvent(Form.java)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.dispatchEvent(ComponentPageElementImpl.java:917)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.processEventTriggering(ComponentPageElementImpl.java:1102)
... 92 more
Caused by: org.apache.tapestry5.runtime.ComponentEventException: There is no suitable serializer for class org.lazan.t5.atmosphere.model.TopicMessage [at classpath:org/lazan/t5/atmosphere/demo/pages/ChatDemo.tml, line 50]
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.processEventTriggering(ComponentPageElementImpl.java:1126)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$3100(ComponentPageElementImpl.java:57)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1047)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1044)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:82)
... 101 more
Caused by: com.hazelcast.nio.serialization.HazelcastSerializationException: There is no suitable serializer for class org.lazan.t5.atmosphere.model.TopicMessage
at com.hazelcast.nio.serialization.SerializationServiceImpl.toData(SerializationServiceImpl.java:215)
at com.hazelcast.nio.serialization.SerializationServiceImpl.toData(SerializationServiceImpl.java:200)
at com.hazelcast.spi.impl.NodeEngineImpl.toData(NodeEngineImpl.java:180)
at com.hazelcast.topic.impl.TopicProxy.publish(TopicProxy.java:33)
at org.atmosphere.plugin.hazelcast.HazelcastBroadcaster.outgoingBroadcast(HazelcastBroadcaster.java:137)
at org.atmosphere.util.AbstractBroadcasterProxy.b(AbstractBroadcasterProxy.java:134)
at org.atmosphere.util.AbstractBroadcasterProxy.broadcast(AbstractBroadcasterProxy.java:121)
at org.lazan.t5.atmosphere.services.internal.AtmosphereBroadcasterImpl.broadcast(AtmosphereBroadcasterImpl.java:20)
at $AtmosphereBroadcaster_1dc5846bb0e75b.broadcast(Unknown Source)
at org.lazan.t5.atmosphere.demo.services.ChatManagerImpl.sendRoomMessage(ChatManagerImpl.java:89)
at $ChatManager_1dc5846bb0e75a.sendRoomMessage(Unknown Source)
at $ChatManager_1dc5846bb0e6d1.sendRoomMessage(Unknown Source)
at org.lazan.t5.atmosphere.demo.pages.ChatDemo.onSuccessFromChatForm(ChatDemo.java:74)
at org.lazan.t5.atmosphere.demo.pages.ChatDemo.advised$dispatchComponentEvent_1dc5846bb0e6d3(ChatDemo.java)
at org.lazan.t5.atmosphere.demo.pages.ChatDemo$Invocation_dispatchComponentEvent_1dc5846bb0e6d2.proceedToAdvisedMethod(Unknown Source)
at org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:90)
at org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl$EventMethodAdvice.advise(ComponentInstantiatorSourceImpl.java:484)
at org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:92)
at org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl$EventMethodAdvice.advise(ComponentInstantiatorSourceImpl.java:484)
at org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:92)
at org.lazan.t5.atmosphere.demo.pages.ChatDemo.dispatchComponentEvent(ChatDemo.java)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.dispatchEvent(ComponentPageElementImpl.java:917)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.processEventTriggering(ComponentPageElementImpl.java:1102)
... 105 more
[WARN] TapestryModule.ExceptionReporter Wrote exception report to file:/C:/Projects/tap-at/chat/build/exceptions/2019-11-11/15/18/exception-20191111-151856-875.5.txt
Mechanism to add / remove topics and pushTargets dynamically after first initialization
Atmosphere hits TapestryAtmosphereObjectFactory every time it wants to instantiate an object. Many of these objects aren't in the tapestry registry which causes an exception to be thrown / caught.
Need to keep a cache of registry misses to avoid unnecessary exceptions (expensive)
I think it should be better with atmosphere.util.stringifyJSON() and atmosphere.util.parseJSON() instead of Object.toJSON() and Object.evalJSON() in tapestry-atmosphere.js
Test encoding
Atmosphere/atmosphere#1424
Add apache headers to source files
In javascript, append and prepend is a simple string concatenation.
element.innerHTML += newHtml
This causes previous messages to be re-rendered, losing any listeners that might have been attached previously (eg ajax eventlinks).
Need to do a proper DOM addition (similar to jquery's append or prepend
More info here
An unexpected application exception has occurred.
org.apache.tapestry5.ioc.internal.OperationException
trace
Triggering event 'logout' on ChatDemo
org.apache.tapestry5.runtime.ComponentEventException
context
eventType
logout
java.lang.NullPointerException
Filter stack frames Stack trace
java.util.concurrent.ConcurrentHashMap.hash(Unknown Source)
java.util.concurrent.ConcurrentHashMap.remove(Unknown Source)
java.util.Collections$SetFromMap.remove(Unknown Source)
org.lazan.t5.atmosphere.demo.services.ChatManagerImpl.leaveRoom(ChatManagerImpl.java:60)
org.lazan.t5.atmosphere.demo.pages.ChatDemo.onLogout(ChatDemo.java:77)
org.lazan.t5.atmosphere.demo.pages.ChatDemo.advised$dispatchComponentEvent_64cece502c577a(ChatDemo.java)
org.lazan.t5.atmosphere.demo.pages.ChatDemo$Invocation_dispatchComponentEvent_64cece502c5779.proceedToAdvisedMethod(Unknown Source)
org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:84)
org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl$EventMethodAdvice.advise(ComponentInstantiatorSourceImpl.java:475)
org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:86)
org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl$EventMethodAdvice.advise(ComponentInstantiatorSourceImpl.java:475)
org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:86)
org.lazan.t5.atmosphere.demo.pages.ChatDemo.dispatchComponentEvent(ChatDemo.java)
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.dispatchEvent(ComponentPageElementImpl.java:932)
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.processEventTriggering(ComponentPageElementImpl.java:1117)
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$3100(ComponentPageElementImpl.java:61)
org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1062)
org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1059)
org.apache.tapestry5.internal.structure.ComponentPageElementResourcesImpl.invoke(ComponentPageElementResourcesImpl.java:146)
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1058)
org.apache.tapestry5.internal.services.ComponentEventRequestHandlerImpl.handle(ComponentEventRequestHandlerImpl.java:81)
org.apache.tapestry5.internal.services.ImmediateActionRenderResponseFilter.handle(ImmediateActionRenderResponseFilter.java:42)
org.apache.tapestry5.internal.services.AjaxFilter.handle(AjaxFilter.java:42)
org.apache.tapestry5.services.TapestryModule$41.handle(TapestryModule.java:2476)
org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handleComponentEvent(ComponentRequestHandlerTerminator.java:43)
org.apache.tapestry5.services.InitializeActivePageName.handleComponentEvent(InitializeActivePageName.java:39)
org.lazan.t5.atmosphere.services.internal.PageGlobalsComponentRequestFilter.handleComponentEvent(PageGlobalsComponentRequestFilter.java:22)
org.apache.tapestry5.internal.services.ComponentEventDispatcher.dispatch(ComponentEventDispatcher.java:46)
org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:302)
org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)
org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:902)
org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:892)
org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:90)
org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:105)
org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:95)
org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:119)
org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:253)
org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53)
org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
org.lazan.t5.atmosphere.services.internal.HttpServletHttpServletRequestFilter.service(HttpServletHttpServletRequestFilter.java:72)
org.lazan.t5.atmosphere.services.internal.AtmosphereHttpServletRequestFilter.service(AtmosphereHttpServletRequestFilter.java:50)
org.apache.tapestry5.services.TapestryModule$1.service(TapestryModule.java:852)
org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:171)
In a similar way to tapestry-cometd
See gist here for server log + access log
TODO: Investigate AtmosphereFramework.doCometSupport(AtmosphereFramework.java:1757)
See here also
2014-01-06 09:35:33.056:WARN:oejs.ServletHandler:qtp24933519-16: /atmosphere/
java.lang.IllegalStateException: Not a 'WebSocket: Upgrade' request
at org.eclipse.jetty.websocket.server.WebSocketServerFactory.upgrade(WebSocketServerFactory.java:444)
at org.eclipse.jetty.websocket.server.WebSocketServerFactory.acceptWebSocket(WebSocketServerFactory.java:185)
at org.eclipse.jetty.websocket.server.WebSocketServerFactory.acceptWebSocket(WebSocketServerFactory.java:147)
at org.atmosphere.container.Jetty9AsyncSupportWithWebSocket$1.acceptWebSocket(Jetty9AsyncSupportWithWebSocket.java:145)
at org.atmosphere.container.Jetty9AsyncSupportWithWebSocket.service(Jetty9AsyncSupportWithWebSocket.java:174)
at org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:1757)
at org.atmosphere.cpr.AtmosphereServlet.doPost(AtmosphereServlet.java:201)
at org.atmosphere.cpr.AtmosphereServlet.doGet(AtmosphereServlet.java:187)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.lazan.t5.atmosphere.services.internal.HttpServletHttpServletRequestFilter.service(HttpServletHttpServletRequestFilter.java:66)
at org.lazan.t5.atmosphere.services.internal.AtmosphereHttpServletRequestFilter.service(AtmosphereHttpServletRequestFilter.java:50)
at $HttpServletRequestHandler_2ac54b9df74ebb.service(Unknown Source)
at org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
at $HttpServletRequestFilter_2ac54b9df74eb7.service(Unknown Source)
at $HttpServletRequestHandler_2ac54b9df74ebb.service(Unknown Source)
at org.apache.tapestry5.services.TapestryModule$1.service(TapestryModule.java:852)
at $HttpServletRequestHandler_2ac54b9df74ebb.service(Unknown Source)
at $HttpServletRequestHandler_2ac54b9df74eb6.service(Unknown Source)
at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:171)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1539)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:524)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:568)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1110)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:453)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1044)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:199)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.server.Server.handle(Server.java:459)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:280)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:229)
at org.eclipse.jetty.io.AbstractConnection$1.run(AbstractConnection.java:505)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:607)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:536)
at java.lang.Thread.run(Unknown Source)
193.108.78.10 - - [06/Jan/2014:09:35:33 +0000] "GET /atmosphere/?X-Atmosphere-tracking-id=0&X-Atmosphere-Framework=2.0.9-javascript&X-Atmosphere-Transport=long-polling&X-Cache-Date=0&Content-Type=application/json&X-atmo-protocol=true&_=1389000932966 HTTP/1.1" 500 3818 "http://tapestry-atmosphere.uklance.cloudbees.net/chatdemo/cars" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17"
Invoking executeWebSocket atmosphere.js:2868
Using URL: ws://tapestry-atmosphere.uklance.cloudbees.net/atmosphere/?X-Atmosphere-tracking-id=0&X-Atmosphere-Framework=2.0.9-javascript&X-Atmosphere-Transport=websocket&X-Cache-Date=0&Content-Type=application/json&X-atmo-protocol=true atmosphere.js:2868
Unexpected response code: 500 :1
Websocket failed. Downgrading to Comet and resending atmosphere.js:2868
Failed to load resource: the server responded with a status of 500 (Server Error) http://tapestry-atmosphere.uklance.cloudbees.net/atmosphere/?X-Atmosphere-t…-Date=0&Content-Type=application/json&X-atmo-protocol=true&_=1389000932041
Failed to load resource: the server responded with a status of 500 (Server Error) http://tapestry-atmosphere.uklance.cloudbees.net/atmosphere/?X-Atmosphere-t…-Date=0&Content-Type=application/json&X-atmo-protocol=true&_=1389000932248
Failed to load resource: the server responded with a status of 500 (Server Error) http://tapestry-atmosphere.uklance.cloudbees.net/atmosphere/?X-Atmosphere-t…-Date=0&Content-Type=application/json&X-atmo-protocol=true&_=1389000932526
Failed to load resource: the server responded with a status of 500 (Server Error) http://tapestry-atmosphere.uklance.cloudbees.net/atmosphere/?X-Atmosphere-t…-Date=0&Content-Type=application/json&X-atmo-protocol=true&_=1389000932688
Failed to load resource: the server responded with a status of 500 (Server Error) http://tapestry-atmosphere.uklance.cloudbees.net/atmosphere/?X-Atmosphere-t…-Date=0&Content-Type=application/json&X-atmo-protocol=true&_=1389000932800
Failed to load resource: the server responded with a status of 500 (Server Error) http://tapestry-atmosphere.uklance.cloudbees.net/atmosphere/?X-Atmosphere-t…-Date=0&Content-Type=application/json&X-atmo-protocol=true&_=1389000932966
Create jetty based integration tests for all transports
sse|websocket|long-polling|streaming|ajax|jsonp
I am trying to use the chat demo of tapestry-atmosphere in tapestry 5.4.0. after a little struggle to put the javascript modules in the right directories I have come to a situation where the chat demo works, but does not push the new messages to the client. the webdeveloper console shows that requirejs could not find atmosphere. this turns out to be triggered by the statement atmosphere.subscribe call in the javascript file.
any idea how I can fix this?
thanks, g.
Chat demo is not working on Android default browser. Atmosphere claims that it supports android browser via long polling. Possibly only supported with atmosphere.jquery.js
Atmosphere/atmosphere#400
https://code.google.com/p/android/issues/detail?id=13044
https://groups.google.com/d/msg/atmosphere-framework/dTBAsd8VAgc/a682Hzo4P2QJ
Atmosphere/atmosphere@2b45bc8
Not sure if this will be a separate js file or if it can be done as one file with function tests.
Server log
[WARN] cpr.AtmosphereFramework Failed using comet support: org.atmosphere.container.Tomcat7AsyncSupportWithWebSocket, error: Tomcat failed to detect this is a Comet application because context.xml is missing or the Http11NioProtocol Connector is not enabled.You must use the atmosphere-native-runtime dependency in order to use native Comet Support
If that's not the case, you can also remove META-INF/context.xml and WEB-INF/lib/atmosphere-compat-tomcat7.jar Is the NIO or APR Connector enabled?
[ERROR] cpr.AtmosphereFramework If you have more than one Connector enabled, make sure they both use the same protocol, e.g NIO/APR or HTTP for all. If not, org.atmosphere.container.BlockingIOCometSupport will be used and cannot be changed.
[WARN] cpr.AtmosphereFramework Using org.atmosphere.container.Tomcat7BIOSupportWithWebSocket
JS log
Invoking executeWebSocket atmosphere.js:2873
Using URL: ws://tapestry-atmosphere.uklance.cloudbees.net/atmosphere/?X-Atmosphere-tracking-id=0&X-Atmosphere-Framework=2.1.2-javascript&X-Atmosphere-Transport=websocket&X-Cache-Date=0application%252Fjson&X-atmo-protocol=true atmosphere.js:2873
Websocket failed. Downgrading to Comet and resending
<async-supported>true</async-supported>
to TapestryFilter)Hi. Can you update tapestry-offline dependency to latest version?
Tapestry 5.4 has entered the beta phase. Eventually, tapestry-atmosphere will like have to support that.
For example, the current version produces client-side errors when using the jQuery infrastructure.
It's highly likely that this tapestry-cometd issue also occurs in tapestry-atmosphere
uklance/tapestry-cometd#62
Currently, devs must decorate TopicAuthorizer and TopicListener to provide custom logic because of circular dependencies caused by @Contribute ServiceOverrides.
Possibly the best way to solve this is to @Contribute to a @primary implementation.
Hi,
i've posted this question.
https://stackoverflow.com/questions/58517267/how-to-use-tapestry-ioc-services-on-websocket-endpoints-events-like-onopen
Maybe you can help me to understand the problem. That would be nice.
In my default setup with Eclipse Kepler, Eclipse complains that:
The content of element type "filter" must match "(icon?,filter-name,display-name?,description?,filter-class,init-param*)".
When it encounters the <async-supported>true</async-supported>
in the filter declaration. Could this be stored as a context-param instead of directly with the filter's declaration? Or is there an updated DTD that would cause validation to pass?
I'm using the demo application and I see this error in the logs. WebSocket doesn't work and the chat demo doesn't work, meaning two connected peers can't see each other's messages. I can see in the Chrome console that it gets a 501 when trying to initiate a WebSocket connection. This happens in Tomcat and Jetty.
[INFO] cpr.AtmosphereFramework Installed WebSocketProtocol org.atmosphere.websocket.protocol.SimpleHttpProtocol
[ERROR] util.IOUtils
java.lang.IllegalStateException: Unable to configure jsr356 at that stage. No Servlet associated with atmosphere
at org.atmosphere.util.IOUtils.guestRawServletPath(IOUtils.java:274)
at org.atmosphere.util.IOUtils.guestServletPath(IOUtils.java:248)
at org.atmosphere.container.JSR356AsyncSupport.<init>(JSR356AsyncSupport.java:63)
at org.atmosphere.container.JSR356AsyncSupport.<init>(JSR356AsyncSupport.java:40)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.atmosphere.cpr.DefaultAsyncSupportResolver.newCometSupport(DefaultAsyncSupportResolver.java:234)
at org.atmosphere.cpr.DefaultAsyncSupportResolver.resolveWebSocket(DefaultAsyncSupportResolver.java:306)
at org.atmosphere.cpr.DefaultAsyncSupportResolver.resolve(DefaultAsyncSupportResolver.java:292)
at org.atmosphere.cpr.AtmosphereFramework.autoDetectContainer(AtmosphereFramework.java:2080)
at org.atmosphere.cpr.AtmosphereFramework.init(AtmosphereFramework.java:914)
at org.atmosphere.cpr.AtmosphereFramework.init(AtmosphereFramework.java:838)
at org.atmosphere.cpr.AtmosphereFrameworkInitializer.configureFramework(AtmosphereFrameworkInitializer.java:75)
at org.atmosphere.cpr.AtmosphereServlet.configureFramework(AtmosphereServlet.java:84)
at org.atmosphere.cpr.AtmosphereServlet.configureFramework(AtmosphereServlet.java:80)
at org.atmosphere.cpr.AtmosphereServlet.init(AtmosphereServlet.java:75)
at org.lazan.t5.atmosphere.services.internal.HttpServletHttpServletRequestFilter.<init>(HttpServletHttpServletRequestFilter.java:48)
at org.lazan.t5.atmosphere.services.internal.AtmosphereHttpServletRequestFilter.<init>(AtmosphereHttpServletRequestFilter.java:45)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.apache.tapestry5.ioc.internal.util.ConstructorInvoker.invoke(ConstructorInvoker.java:50)
at org.apache.tapestry5.ioc.internal.util.LoggingInvokableWrapper.invoke(LoggingInvokableWrapper.java:43)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:82)
at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:72)
at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1260)
at org.apache.tapestry5.ioc.internal.util.ConstructionPlan.createObject(ConstructionPlan.java:61)
at org.apache.tapestry5.ioc.internal.ConstructorServiceCreator.createObject(ConstructorServiceCreator.java:62)
at org.apache.tapestry5.ioc.internal.ModuleImpl$4.invoke(ModuleImpl.java:295)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:82)
at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:72)
at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1260)
at org.apache.tapestry5.ioc.internal.ModuleImpl.create(ModuleImpl.java:344)
at org.apache.tapestry5.ioc.internal.ModuleImpl.access$100(ModuleImpl.java:40)
at org.apache.tapestry5.ioc.internal.ModuleImpl$1.invoke(ModuleImpl.java:198)
at org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withWrite(ConcurrentBarrier.java:139)
at org.apache.tapestry5.ioc.internal.ModuleImpl$2.invoke(ModuleImpl.java:215)
at org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:83)
at org.apache.tapestry5.ioc.internal.ModuleImpl.findOrCreate(ModuleImpl.java:221)
at org.apache.tapestry5.ioc.internal.ModuleImpl.getService(ModuleImpl.java:112)
at org.apache.tapestry5.ioc.internal.RegistryImpl.getService(RegistryImpl.java:497)
at org.apache.tapestry5.ioc.internal.RegistryImpl.getServiceByTypeAlone(RegistryImpl.java:783)
at org.apache.tapestry5.ioc.internal.RegistryImpl.getServiceByTypeAndMarkers(RegistryImpl.java:797)
at org.apache.tapestry5.ioc.internal.RegistryImpl.getService(RegistryImpl.java:755)
at org.apache.tapestry5.ioc.internal.ObjectLocatorImpl.getService(ObjectLocatorImpl.java:49)
at org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl$1.invoke(MasterObjectProviderImpl.java:62)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:82)
at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:72)
at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1260)
at org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl.provide(MasterObjectProviderImpl.java:46)
at $MasterObjectProvider_1dcd7720f04093.provide(Unknown Source)
at org.apache.tapestry5.ioc.internal.RegistryImpl.getObject(RegistryImpl.java:991)
at org.apache.tapestry5.ioc.internal.ObjectLocatorImpl.getObject(ObjectLocatorImpl.java:61)
at org.apache.tapestry5.ioc.internal.util.InternalUtils.calculateInjection(InternalUtils.java:225)
at org.apache.tapestry5.ioc.internal.util.InternalUtils.access$000(InternalUtils.java:50)
at org.apache.tapestry5.ioc.internal.util.InternalUtils$4.invoke(InternalUtils.java:258)
at org.apache.tapestry5.ioc.internal.util.InternalUtils$4.invoke(InternalUtils.java:254)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:82)
at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:72)
at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1260)
at org.apache.tapestry5.ioc.internal.util.InternalUtils.calculateParameters(InternalUtils.java:262)
at org.apache.tapestry5.ioc.internal.util.InternalUtils.calculateParametersForMethod(InternalUtils.java:232)
at org.apache.tapestry5.ioc.internal.util.InternalUtils$25.invoke(InternalUtils.java:1571)
at org.apache.tapestry5.ioc.internal.util.InternalUtils$25.invoke(InternalUtils.java:1567)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:82)
at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:72)
at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1260)
at org.apache.tapestry5.ioc.internal.util.InternalUtils.createMethodInvocationPlan(InternalUtils.java:1566)
at org.apache.tapestry5.ioc.internal.ServiceBuilderMethodInvoker.getPlan(ServiceBuilderMethodInvoker.java:49)
at org.apache.tapestry5.ioc.internal.ServiceBuilderMethodInvoker.createObject(ServiceBuilderMethodInvoker.java:61)
at org.apache.tapestry5.ioc.internal.ModuleImpl$4.invoke(ModuleImpl.java:295)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:82)
at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:72)
at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1260)
at org.apache.tapestry5.ioc.internal.ModuleImpl.create(ModuleImpl.java:344)
at org.apache.tapestry5.ioc.internal.ModuleImpl.access$100(ModuleImpl.java:40)
at org.apache.tapestry5.ioc.internal.ModuleImpl$1.invoke(ModuleImpl.java:198)
at org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withWrite(ConcurrentBarrier.java:139)
at org.apache.tapestry5.ioc.internal.ModuleImpl$2.invoke(ModuleImpl.java:215)
at org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:83)
at org.apache.tapestry5.ioc.internal.ModuleImpl.findOrCreate(ModuleImpl.java:221)
at org.apache.tapestry5.ioc.internal.ModuleImpl.getService(ModuleImpl.java:112)
at org.apache.tapestry5.ioc.internal.RegistryImpl.getService(RegistryImpl.java:497)
at org.apache.tapestry5.ioc.internal.RegistryImpl.getServiceByTypeAlone(RegistryImpl.java:783)
at org.apache.tapestry5.ioc.internal.RegistryImpl.getServiceByTypeAndMarkers(RegistryImpl.java:797)
at org.apache.tapestry5.ioc.internal.RegistryImpl.getService(RegistryImpl.java:755)
at org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl$1.invoke(MasterObjectProviderImpl.java:62)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:82)
at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:72)
at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1260)
at org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl.provide(MasterObjectProviderImpl.java:46)
at $MasterObjectProvider_1dcd7720f04093.provide(Unknown Source)
at org.apache.tapestry5.ioc.internal.RegistryImpl.getObject(RegistryImpl.java:991)
at org.apache.tapestry5.ioc.internal.RegistryImpl.getObject(RegistryImpl.java:1100)
at org.apache.tapestry5.ioc.internal.util.InternalUtils.calculateInjection(InternalUtils.java:225)
at org.apache.tapestry5.ioc.internal.util.InternalUtils.access$000(InternalUtils.java:50)
at org.apache.tapestry5.ioc.internal.util.InternalUtils$4.invoke(InternalUtils.java:258)
at org.apache.tapestry5.ioc.internal.util.InternalUtils$4.invoke(InternalUtils.java:254)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:82)
at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:72)
at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1260)
at org.apache.tapestry5.ioc.internal.util.InternalUtils.calculateParameters(InternalUtils.java:262)
at org.apache.tapestry5.ioc.internal.util.InternalUtils.calculateParametersForMethod(InternalUtils.java:232)
at org.apache.tapestry5.ioc.internal.StartupDefImpl$1.run(StartupDefImpl.java:67)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:56)
at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:60)
at org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.java:1254)
at org.apache.tapestry5.ioc.internal.StartupDefImpl.invoke(StartupDefImpl.java:48)
at org.apache.tapestry5.ioc.internal.RegistryImpl$2.run(RegistryImpl.java:230)
at org.apache.tapestry5.ioc.internal.RegistryImpl.performRegistryStartup(RegistryImpl.java:361)
at org.apache.tapestry5.ioc.internal.RegistryWrapper.performRegistryStartup(RegistryWrapper.java:89)
at org.apache.tapestry5.TapestryFilter.init(TapestryFilter.java:110)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:285)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:266)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4590)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5233)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
How can I get logging into this application? (yes it's a newbie question but I can't find a useful example elsewhere)
e.g. in AppModule.java I put this:
@Inject
public static Logger logger = LoggerFactory.getLogger(AppModule.class);
public static void bind(ServiceBinder binder) {
logger.info("bind()...");
binder.bind(ChatManager.class, ChatManagerImpl.class);
}
It ran but nothing appeared.
Then I tried:
@Inject
public static Logger logger;
The tapestry documentation says that "the appropriate logger will be injected"
But then I got a null pointer exception at the logger.info() live above.
Thanks,
-ssimm
JSONP, long-polling, websocket, streaming
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.