Code Monkey home page Code Monkey logo

tapestry-atmosphere's People

Contributors

jochenberger avatar uklance avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

tapestry-atmosphere's Issues

There is no suitable serializer

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

Eclipse's web.xml DOCTYPE validation doesn't like async-supported parameter

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?

pushtarget append and prepend removes js listeners

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

Logging in services

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

async-supported in web.xml does not seem to have any effect in tapestry 5.4.0

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.

Copy isSecure() flag from async request

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

jQuery support

Not sure if this will be a separate js file or if it can be done as one file with function tests.

Compatibility

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

Exception in demo. Logout after session timeout

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)

WebSocket not being enabled

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)

Cloudbees / jetty issue - Not a 'WebSocket: Upgrade' request

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

Documentation

  • Container component (parameters)
  • PushTarget component (parameters)
  • Supported browsers
  • HttpSession support
  • TopicAuthorizer
  • TopicListener
  • Pushing javascript
  • Servlet config
  • Client config
  • TapestryAtmosphereObjectFactory
  • pom.xml
  • web.xml (add <async-supported>true</async-supported> to TapestryFilter)
  • Supported servers / browsers (link to amosphere documentation)
  • Tomcat / jboss additional jars
  • Apache async support
  • ...

Support for Tapestry 5.4

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.

TapestryAtmosphereObjectFactory cache registry misses

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)

Problem on startup

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]

cloudbees - Failed using comet support

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 

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.