A push library for Tapestry5 based on CometD

Overview

Tapestry CometD

A push library for Tapestry5 based on CometD

Features:

Usage:

Page.tml

<html 
      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd"
      xmlns:p="tapestry:parameter">

	<t:zone t:id="formZone" id="formZone">
		<!-- type a chat message in this form -->
		<form t:id="ajaxForm" t:type="form" t:zone="formZone">
			Message: <input t:type="TextField" t:id="message" /><input type="submit" value="Send"/>
		</form>
	</t:zone>

	<!-- this PushTarget subscribes to the '/chatTopic' topic and appends received messages to itself -->
	<t:cometd.PushTarget topic="/chatTopic" event="chat" update="append" />

	<!-- this template is applied to each chat message when it is received -->
	<t:block t:id="messageBlock">
		<h2>${message}</h2>
	</t:block>
</html>

Page.java

public class PushDemo {
    @InjectComponent
	private Zone formZone;
	
	@Inject
	private Block messageBlock;

	@Property
	private String message;
	
	@Inject
	private PushManager pushManager;
	
	// this event is fired when a message is received on the 'chatTopic' topic
	Block onChat(String message) {
		this.message = message;
		return messageBlock;
	}

	// this event is fired when the form is posted
	Block onSuccess() {
		// broadcast the message on the 'chatTopic' topic
		pushManager.broadcast("/chatTopic", message);
		return formZone.getBody();
	}
}

Demo

See a live demo running here

Maven

<dependencies>
	<dependency>
		<groupId>org.lazan</groupId>
		<artifactId>tapestry-cometd</artifactId>
		<!-- 
			lookup latest version at 
			https://github.com/uklance/releases/tree/master/org/lazan/tapestry-cometd 
		-->
		<version>...</version> 
	</dependency>

	<dependency>
		<groupId>org.got5</groupId>
		<artifactId>tapestry5-jquery</artifactId>
		<version>3.0.0</version>
	</dependency>
</dependencies>

...

<repositories>
	<repository>
		<id>tapestry-cometd</id>
		<url>https://raw.github.com/uklance/releases/master</url>
	</repository>
	<repository>
		<id>devlab722-repo</id>
		<url>http://nexus.devlab722.net/nexus/content/repositories/releases</url>
		<snapshots>
			<enabled>false</enabled>
		</snapshots>
	</repository>
</repositories>

Links

Comments
  • CometD makes overkill of requests

    CometD makes overkill of requests

    I keep seeing strange message in the log files of my webapp.

    127.0.0.1 - - [15/Jan/2013:23:00:53 +0000] "POST /cometd/connect HTTP/1.1" 200 147
    

    This message is keep appearing in there and for the last few days I have seen in more then 20000 times in one hour so it managed to put my CPU to 100 utilization. Does anyone have idea what this is about?

    If I try to go to that address it throw a 400 Unknown Bayeux Transport Exception

    opened by bhorvat 10
  • onActivate: Could not find a coercion from type java.lang.String to type X

    onActivate: Could not find a coercion from type java.lang.String to type X

    onActivate(Foo foo) is in tapestry-cometd is acting differently to normal tapestry page rendering. It can't not coerce hibenrate entities for example.

    The ArrayEventContext does not seem to be finding / invoking the ValueEncoder in: eventContext.get(Class<T> type, in index)

    From debugging, the normal onActivate is invoked with:

    {org.apache.tapestry5.internal.*URLEventContext*@10311}"EventContext:
       null"
          - valueEncoder = {$ContextValueEncoder_9660c5cdf431@10618}""
          - values = {java.lang.String[1]@10619}
          - values = null
    

    Whereas tapestry-cometd is using:

      *ArrayEventContext*@10795}"EventContext: null"
          - typeCoercer = {$TypeCoercer_9660c5cdf3af@10797}""
          - values = {java.lang.Object[1]@10798}
          - values = null
    

    Questions:

    1. I assumed that the TypeCoercer can lookup ValueEncoder's. Check that this assumption is correct
    2. Check if ArrayEventContext is invoking the TypeCoercer
    3. Implement a custom EventContext if one of the core tapestry implementations does not suit (using URLEventContext as a guide)

    Discussion here

    opened by uklance 7
  • JettyAsyncSupportWithWebSocket has bad signature problem

    JettyAsyncSupportWithWebSocket has bad signature problem

    I have got a following problem that I am not sure how to solve. I believe that there is some dependency incompatiblity problem, but I dont know how to check.

    Does anyone have any idea where to start?

    I am using maven to manage my dependencies. The dependancy that I think is the root of the problem is

        <dependency>
            <groupId>org.lazan</groupId>
            <artifactId>tapestry-cometd</artifactId>
            <version>0.9.14</version> 
        </dependency>
    

    However I am not sure how to check underline problem.

    The logs can be seen bellow.

    SEVERE: Exception starting filter app
    java.lang.RuntimeException: Exception constructing service 'PushManager': Error invoking constructor public org.lazan.t5.cometd.services.internal.PushManagerImpl(org.cometd.bayeux.server.BayeuxServer,org.slf4j.Logger,org.lazan.t5.cometd.services.ComponentJSONRenderer,org.apache.tapestry5.ioc.services.TypeCoercer,javax.servlet.http.HttpServletRequest,org.lazan.t5.cometd.services.CometdGlobals): Exception constructing service 'BayeuxServer': Error invoking method public static org.cometd.bayeux.server.BayeuxServer org.lazan.t5.cometd.services.CometdModule.buildBayeuxServer(org.lazan.t5.cometd.web.BayeuxServerHttpServletRequestFilter,org.lazan.t5.cometd.services.Authorizers,org.lazan.t5.cometd.services.SubscriptionListeners,org.lazan.t5.cometd.services.CometdGlobals): Exception constructing service 'BayeuxServerHttpServletRequestFilter': Error invoking constructor public org.lazan.t5.cometd.web.CometdHttpServletRequestFilter(org.apache.tapestry5.services.ApplicationGlobals,java.util.Map,org.apache.tapestry5.ioc.services.RegistryShutdownHub,java.lang.String): javax.servlet.ServletException: java.lang.IllegalArgumentException: Comet support class org.atmosphere.container.JettyAsyncSupportWithWebSocket has bad signature.
        at org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.obtainObjectFromCreator(JustInTimeObjectCreator.java:75)
        at org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:54)
        at org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.eagerLoadService(JustInTimeObjectCreator.java:86)
        at org.apache.tapestry5.ioc.internal.RegistryImpl.performRegistryStartup(RegistryImpl.java:320)
        at org.apache.tapestry5.ioc.internal.RegistryWrapper.performRegistryStartup(RegistryWrapper.java:80)
        at org.apache.tapestry5.TapestryFilter.init(TapestryFilter.java:118)
        at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:277)
        at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258)
        at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:382)
        at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:103)
        at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4638)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5294)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)
        at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:649)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:530)
        at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1467)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
        at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:791)
        at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1436)
        at org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:856)
        at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:353)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
        at java.lang.Thread.run(Thread.java:722)
    Caused by: java.lang.RuntimeException: Error invoking constructor public org.lazan.t5.cometd.services.internal.PushManagerImpl(org.cometd.bayeux.server.BayeuxServer,org.slf4j.Logger,org.lazan.t5.cometd.services.ComponentJSONRenderer,org.apache.tapestry5.ioc.services.TypeCoercer,javax.servlet.http.HttpServletRequest,org.lazan.t5.cometd.services.CometdGlobals): Exception constructing service 'BayeuxServer': Error invoking method public static org.cometd.bayeux.server.BayeuxServer org.lazan.t5.cometd.services.CometdModule.buildBayeuxServer(org.lazan.t5.cometd.web.BayeuxServerHttpServletRequestFilter,org.lazan.t5.cometd.services.Authorizers,org.lazan.t5.cometd.services.SubscriptionListeners,org.lazan.t5.cometd.services.CometdGlobals): Exception constructing service 'BayeuxServerHttpServletRequestFilter': Error invoking constructor public org.lazan.t5.cometd.web.CometdHttpServletRequestFilter(org.apache.tapestry5.services.ApplicationGlobals,java.util.Map,org.apache.tapestry5.ioc.services.RegistryShutdownHub,java.lang.String): javax.servlet.ServletException: java.lang.IllegalArgumentException: Comet support class org.atmosphere.container.JettyAsyncSupportWithWebSocket has bad signature.
        at org.apache.tapestry5.ioc.internal.util.ConstructorInvoker.invoke(ConstructorInvoker.java:57)
        at org.apache.tapestry5.ioc.internal.util.LoggingInvokableWrapper.invoke(LoggingInvokableWrapper.java:42)
        at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
        at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
        at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121)
        at org.apache.tapestry5.ioc.internal.util.ConstructionPlan.createObject(ConstructionPlan.java:60)
        at org.apache.tapestry5.ioc.internal.ConstructorServiceCreator.createObject(ConstructorServiceCreator.java:61)
        at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45)
        at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
        at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
        at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121)
        at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49)
        at org.apache.tapestry5.ioc.internal.SingletonServiceLifecycle.createService(SingletonServiceLifecycle.java:29)
        at org.apache.tapestry5.ioc.internal.LifecycleWrappedServiceCreator.createObject(LifecycleWrappedServiceCreator.java:46)
        at org.apache.tapestry5.ioc.internal.AdvisorStackBuilder.createObject(AdvisorStackBuilder.java:63)
        at org.apache.tapestry5.ioc.internal.InterceptorStackBuilder.createObject(InterceptorStackBuilder.java:54)
        at org.apache.tapestry5.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject(RecursiveServiceCreationCheckWrapper.java:60)
        at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45)
        at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
        at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
        at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121)
        at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49)
        at org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.obtainObjectFromCreator(JustInTimeObjectCreator.java:66)
        ... 52 more
    Caused by: java.lang.RuntimeException: Exception constructing service 'BayeuxServer': Error invoking method public static org.cometd.bayeux.server.BayeuxServer org.lazan.t5.cometd.services.CometdModule.buildBayeuxServer(org.lazan.t5.cometd.web.BayeuxServerHttpServletRequestFilter,org.lazan.t5.cometd.services.Authorizers,org.lazan.t5.cometd.services.SubscriptionListeners,org.lazan.t5.cometd.services.CometdGlobals): Exception constructing service 'BayeuxServerHttpServletRequestFilter': Error invoking constructor public org.lazan.t5.cometd.web.CometdHttpServletRequestFilter(org.apache.tapestry5.services.ApplicationGlobals,java.util.Map,org.apache.tapestry5.ioc.services.RegistryShutdownHub,java.lang.String): javax.servlet.ServletException: java.lang.IllegalArgumentException: Comet support class org.atmosphere.container.JettyAsyncSupportWithWebSocket has bad signature.
        at org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.obtainObjectFromCreator(JustInTimeObjectCreator.java:75)
        at org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:54)
        at $BayeuxServer_20153764561c.delegate(Unknown Source)
        at $BayeuxServer_20153764561c.addListener(Unknown Source)
        at org.lazan.t5.cometd.services.internal.PushManagerImpl.<init>(PushManagerImpl.java:39)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
        at org.apache.tapestry5.ioc.internal.util.ConstructorInvoker.invoke(ConstructorInvoker.java:48)
        ... 74 more
    Caused by: java.lang.RuntimeException: Error invoking method public static org.cometd.bayeux.server.BayeuxServer org.lazan.t5.cometd.services.CometdModule.buildBayeuxServer(org.lazan.t5.cometd.web.BayeuxServerHttpServletRequestFilter,org.lazan.t5.cometd.services.Authorizers,org.lazan.t5.cometd.services.SubscriptionListeners,org.lazan.t5.cometd.services.CometdGlobals): Exception constructing service 'BayeuxServerHttpServletRequestFilter': Error invoking constructor public org.lazan.t5.cometd.web.CometdHttpServletRequestFilter(org.apache.tapestry5.services.ApplicationGlobals,java.util.Map,org.apache.tapestry5.ioc.services.RegistryShutdownHub,java.lang.String): javax.servlet.ServletException: java.lang.IllegalArgumentException: Comet support class org.atmosphere.container.JettyAsyncSupportWithWebSocket has bad signature.
        at org.apache.tapestry5.ioc.internal.util.MethodInvoker.invoke(MethodInvoker.java:61)
        at org.apache.tapestry5.ioc.internal.util.LoggingInvokableWrapper.invoke(LoggingInvokableWrapper.java:42)
        at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
        at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
        at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121)
        at org.apache.tapestry5.ioc.internal.util.ConstructionPlan.createObject(ConstructionPlan.java:60)
        at org.apache.tapestry5.ioc.internal.ServiceBuilderMethodInvoker.createObject(ServiceBuilderMethodInvoker.java:60)
        at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45)
        at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
        at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
        at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121)
        at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49)
        at org.apache.tapestry5.ioc.internal.SingletonServiceLifecycle.createService(SingletonServiceLifecycle.java:29)
        at org.apache.tapestry5.ioc.internal.LifecycleWrappedServiceCreator.createObject(LifecycleWrappedServiceCreator.java:46)
        at org.apache.tapestry5.ioc.internal.AdvisorStackBuilder.createObject(AdvisorStackBuilder.java:63)
        at org.apache.tapestry5.ioc.internal.InterceptorStackBuilder.createObject(InterceptorStackBuilder.java:54)
        at org.apache.tapestry5.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject(RecursiveServiceCreationCheckWrapper.java:60)
        at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45)
        at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
        at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
        at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121)
        at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49)
        at org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.obtainObjectFromCreator(JustInTimeObjectCreator.java:66)
        ... 83 more
    Caused by: java.lang.RuntimeException: Exception constructing service 'BayeuxServerHttpServletRequestFilter': Error invoking constructor public org.lazan.t5.cometd.web.CometdHttpServletRequestFilter(org.apache.tapestry5.services.ApplicationGlobals,java.util.Map,org.apache.tapestry5.ioc.services.RegistryShutdownHub,java.lang.String): javax.servlet.ServletException: java.lang.IllegalArgumentException: Comet support class org.atmosphere.container.JettyAsyncSupportWithWebSocket has bad signature.
        at org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.obtainObjectFromCreator(JustInTimeObjectCreator.java:75)
        at org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:54)
        at $BayeuxServerHttpServletRequestFilter_201537645620.delegate(Unknown Source)
        at $BayeuxServerHttpServletRequestFilter_201537645620.getBayeuxServer(Unknown Source)
        at org.lazan.t5.cometd.services.CometdModule.buildBayeuxServer(CometdModule.java:65)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at org.apache.tapestry5.ioc.internal.util.MethodInvoker.invoke(MethodInvoker.java:50)
        ... 105 more
    Caused by: org.apache.tapestry5.ioc.internal.OperationException: Error invoking constructor public org.lazan.t5.cometd.web.CometdHttpServletRequestFilter(org.apache.tapestry5.services.ApplicationGlobals,java.util.Map,org.apache.tapestry5.ioc.services.RegistryShutdownHub,java.lang.String): javax.servlet.ServletException: java.lang.IllegalArgumentException: Comet support class org.atmosphere.container.JettyAsyncSupportWithWebSocket has bad signature.
        at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.java:121)
        at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:88)
        at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
        at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121)
        at org.apache.tapestry5.ioc.internal.util.ConstructionPlan.createObject(ConstructionPlan.java:60)
        at org.apache.tapestry5.ioc.internal.ConstructorServiceCreator.createObject(ConstructorServiceCreator.java:61)
        at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45)
        at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
        at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
        at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121)
        at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49)
        at org.apache.tapestry5.ioc.internal.SingletonServiceLifecycle.createService(SingletonServiceLifecycle.java:29)
        at org.apache.tapestry5.ioc.internal.LifecycleWrappedServiceCreator.createObject(LifecycleWrappedServiceCreator.java:46)
        at org.apache.tapestry5.ioc.internal.AdvisorStackBuilder.createObject(AdvisorStackBuilder.java:63)
        at org.apache.tapestry5.ioc.internal.InterceptorStackBuilder.createObject(InterceptorStackBuilder.java:54)
        at org.apache.tapestry5.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject(RecursiveServiceCreationCheckWrapper.java:60)
        at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45)
        at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
        at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
        at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121)
        at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49)
        at org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.obtainObjectFromCreator(JustInTimeObjectCreator.java:66)
        ... 114 more
    Caused by: java.lang.RuntimeException: Error invoking constructor public org.lazan.t5.cometd.web.CometdHttpServletRequestFilter(org.apache.tapestry5.services.ApplicationGlobals,java.util.Map,org.apache.tapestry5.ioc.services.RegistryShutdownHub,java.lang.String): javax.servlet.ServletException: java.lang.IllegalArgumentException: Comet support class org.atmosphere.container.JettyAsyncSupportWithWebSocket has bad signature.
        at org.apache.tapestry5.ioc.internal.util.ConstructorInvoker.invoke(ConstructorInvoker.java:57)
        at org.apache.tapestry5.ioc.internal.util.LoggingInvokableWrapper.invoke(LoggingInvokableWrapper.java:42)
        at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
        ... 134 more
    Caused by: java.lang.RuntimeException: javax.servlet.ServletException: java.lang.IllegalArgumentException: Comet support class org.atmosphere.container.JettyAsyncSupportWithWebSocket has bad signature.
        at org.lazan.t5.cometd.web.ServletHttpServletRequestFilter.<init>(ServletHttpServletRequestFilter.java:36)
        at org.lazan.t5.cometd.web.CometdHttpServletRequestFilter.<init>(CometdHttpServletRequestFilter.java:24)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
        at org.apache.tapestry5.ioc.internal.util.ConstructorInvoker.invoke(ConstructorInvoker.java:48)
        ... 136 more
    Caused by: javax.servlet.ServletException: java.lang.IllegalArgumentException: Comet support class org.atmosphere.container.JettyAsyncSupportWithWebSocket has bad signature.
        at org.atmosphere.cpr.AtmosphereFramework.init(AtmosphereFramework.java:549)
        at org.atmosphere.cpr.AtmosphereServlet.init(AtmosphereServlet.java:191)
        at org.atmosphere.cometd.CometdServlet.init(CometdServlet.java:50)
        at org.lazan.t5.cometd.web.ServletHttpServletRequestFilter.<init>(ServletHttpServletRequestFilter.java:28)
        ... 142 more
    Caused by: java.lang.IllegalArgumentException: Comet support class org.atmosphere.container.JettyAsyncSupportWithWebSocket has bad signature.
        at org.atmosphere.cpr.DefaultAsyncSupportResolver.newCometSupport(DefaultAsyncSupportResolver.java:233)
        at org.atmosphere.cpr.DefaultAsyncSupportResolver.resolveWebSocket(DefaultAsyncSupportResolver.java:296)
        at org.atmosphere.cpr.DefaultAsyncSupportResolver.resolve(DefaultAsyncSupportResolver.java:284)
        at org.atmosphere.cpr.AtmosphereFramework.autoDetectContainer(AtmosphereFramework.java:1100)
        at org.atmosphere.cpr.AtmosphereFramework.init(AtmosphereFramework.java:500)
        ... 145 more
    Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
        at org.atmosphere.cpr.DefaultAsyncSupportResolver.newCometSupport(DefaultAsyncSupportResolver.java:229)
        ... 149 more
    Caused by: java.lang.InstantiationError: org.eclipse.jetty.io.ThreadLocalBuffers
        at org.eclipse.jetty.io.BuffersFactory.newBuffers(BuffersFactory.java:27)
        at org.eclipse.jetty.websocket.WebSocketBuffers.<init>(WebSocketBuffers.java:53)
        at org.eclipse.jetty.websocket.WebSocketFactory.<init>(WebSocketFactory.java:102)
        at org.eclipse.jetty.websocket.WebSocketFactory.<init>(WebSocketFactory.java:97)
        at org.atmosphere.container.JettyWebSocketUtil.getFactory(JettyWebSocketUtil.java:79)
        at org.atmosphere.container.JettyAsyncSupportWithWebSocket.<init>(JettyAsyncSupportWithWebSocket.java:55)
        ... 154 more
    

    I would also like to mention that this runs successfully whey I run it locally - that is using maven-jetty plugin but when I deploy it to Tomcat 7 it fails.

    Any ideas anyone?

    thank you and happy new year

    opened by bhorvat 7
  • CometD Server is failing to load during testing.

    CometD Server is failing to load during testing.

    Im using Appfuse-Tapestry 2.2.1 as the baseline system and have dropped the cometd dependency into maven even though I have integrated as of yet.

    this is using the pagetester functionality from tapestry-test

    Test:

    relevant:

    Exception constructing service 'CometdHttpServletRequestFilter': Error invoking constructor public org.lazan.t5.cometd.services.internal.CometdHttpServletRequestFilterImpl(org.apache.tapestry5.ioc.services.RegistryShutdownHub,org.apache.tapestry5.services.ApplicationGlobals,java.lang.String,java.util.Map): javax.servlet.ServletException: 
    

    full stack:

    INFO [MLog-Init-Reporter] MLog.run(124) | MLog clients using log4j logging.
    INFO [main] C3P0Registry.banner(216) | Initializing c3p0-0.9.5-pre6 [built 07-December-2013 02:33:38 +0000; debug? true; trace: 10]
    INFO [main] AbstractPoolBackedDataSource.getPoolManager(522) | Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, contextClassLoaderSource -> caller, dataSourceName -> z8kfsx8z1n3mjgcgj5h65|1b8b79b, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> org.postgresql.Driver, extensions -> {}, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> z8kfsx8z1n3mjgcgj5h65|1b8b79b, idleConnectionTestPeriod -> 0, initialPoolSize -> 3, jdbcUrl -> jdbc:postgresql://localhost/portal?ApplicationName=portal-.71, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 1800, maxIdleTimeExcessConnections -> 300, maxPoolSize -> 50, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 20, numHelperThreads -> 3, preferredTestQuery -> null, privilegeSpawnedThreads -> false, properties -> {user=******, password=******}, propertyCycle -> 0, statementCacheNumDeferredCloseThreads -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, userOverrides -> {}, usesTraditionalReflectiveProxies -> false ]
    ERROR [main] CometdHttpServletRequestFilter.createObject(64) | Construction of service CometdHttpServletRequestFilter failed: Error invoking constructor public org.lazan.t5.cometd.services.internal.CometdHttpServletRequestFilterImpl(org.apache.tapestry5.ioc.services.RegistryShutdownHub,org.apache.tapestry5.services.ApplicationGlobals,java.lang.String,java.util.Map): javax.servlet.ServletException: java.lang.NullPointerException
    org.apache.tapestry5.ioc.internal.OperationException: Error invoking constructor public org.lazan.t5.cometd.services.internal.CometdHttpServletRequestFilterImpl(org.apache.tapestry5.ioc.services.RegistryShutdownHub,org.apache.tapestry5.services.ApplicationGlobals,java.lang.String,java.util.Map): javax.servlet.ServletException: java.lang.NullPointerException
        at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.java:121)
        at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:88)
        at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
        at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1124)
        at org.apache.tapestry5.ioc.internal.util.ConstructionPlan.createObject(ConstructionPlan.java:60)
        at org.apache.tapestry5.ioc.internal.ConstructorServiceCreator.createObject(ConstructorServiceCreator.java:61)
        at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45)
        at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
        at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
        at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1124)
        at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49)
        at org.apache.tapestry5.ioc.internal.SingletonServiceLifecycle.createService(SingletonServiceLifecycle.java:29)
        at org.apache.tapestry5.ioc.internal.LifecycleWrappedServiceCreator.createObject(LifecycleWrappedServiceCreator.java:46)
        at org.apache.tapestry5.ioc.internal.AdvisorStackBuilder.createObject(AdvisorStackBuilder.java:63)
        at org.apache.tapestry5.ioc.internal.InterceptorStackBuilder.createObject(InterceptorStackBuilder.java:54)
        at org.apache.tapestry5.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject(RecursiveServiceCreationCheckWrapper.java:60)
        at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45)
        at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
        at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
        at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1124)
        at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49)
        at org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.obtainObjectFromCreator(JustInTimeObjectCreator.java:66)
        at org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:54)
        at $CometdHttpServletRequestFilter_1b22240e97.delegate(Unknown Source)
        at $CometdHttpServletRequestFilter_1b22240e97.getBayeuxServer(Unknown Source)
        at org.lazan.t5.cometd.services.CometdModule.buildBayeuxServer(CometdModule.java:64)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.tapestry5.ioc.internal.util.MethodInvoker.invoke(MethodInvoker.java:50)
        at org.apache.tapestry5.ioc.internal.util.LoggingInvokableWrapper.invoke(LoggingInvokableWrapper.java:42)
        at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
        at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
        at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1124)
        at org.apache.tapestry5.ioc.internal.util.ConstructionPlan.createObject(ConstructionPlan.java:60)
        at org.apache.tapestry5.ioc.internal.ServiceBuilderMethodInvoker.createObject(ServiceBuilderMethodInvoker.java:60)
        at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45)
        at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
        at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
        at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1124)
        at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49)
        at org.apache.tapestry5.ioc.internal.SingletonServiceLifecycle.createService(SingletonServiceLifecycle.java:29)
        at org.apache.tapestry5.ioc.internal.LifecycleWrappedServiceCreator.createObject(LifecycleWrappedServiceCreator.java:46)
        at org.apache.tapestry5.ioc.internal.AdvisorStackBuilder.createObject(AdvisorStackBuilder.java:63)
        at org.apache.tapestry5.ioc.internal.InterceptorStackBuilder.createObject(InterceptorStackBuilder.java:54)
        at org.apache.tapestry5.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject(RecursiveServiceCreationCheckWrapper.java:60)
        at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45)
        at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
        at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
        at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1124)
        at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49)
        at org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.obtainObjectFromCreator(JustInTimeObjectCreator.java:66)
        at org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:54)
        at $BayeuxServer_1b22240e94.delegate(Unknown Source)
        at $BayeuxServer_1b22240e94.addListener(Unknown Source)
        at org.lazan.t5.cometd.services.internal.PushManagerImpl.<init>(PushManagerImpl.java:32)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
        at org.apache.tapestry5.ioc.internal.util.ConstructorInvoker.invoke(ConstructorInvoker.java:48)
        at org.apache.tapestry5.ioc.internal.util.LoggingInvokableWrapper.invoke(LoggingInvokableWrapper.java:42)
        at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
        at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
        at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1124)
        at org.apache.tapestry5.ioc.internal.util.ConstructionPlan.createObject(ConstructionPlan.java:60)
        at org.apache.tapestry5.ioc.internal.ConstructorServiceCreator.createObject(ConstructorServiceCreator.java:61)
        at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45)
        at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
        at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
        at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1124)
        at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49)
        at org.apache.tapestry5.ioc.internal.SingletonServiceLifecycle.createService(SingletonServiceLifecycle.java:29)
        at org.apache.tapestry5.ioc.internal.LifecycleWrappedServiceCreator.createObject(LifecycleWrappedServiceCreator.java:46)
        at org.apache.tapestry5.ioc.internal.AdvisorStackBuilder.createObject(AdvisorStackBuilder.java:63)
        at org.apache.tapestry5.ioc.internal.InterceptorStackBuilder.createObject(InterceptorStackBuilder.java:54)
        at org.apache.tapestry5.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject(RecursiveServiceCreationCheckWrapper.java:60)
        at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45)
        at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
        at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
        at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1124)
        at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49)
        at org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.obtainObjectFromCreator(JustInTimeObjectCreator.java:66)
        at org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:54)
        at org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.eagerLoadService(JustInTimeObjectCreator.java:86)
        at org.apache.tapestry5.ioc.internal.RegistryImpl.performRegistryStartup(RegistryImpl.java:323)
        at org.apache.tapestry5.ioc.internal.RegistryWrapper.performRegistryStartup(RegistryWrapper.java:80)
        at org.apache.tapestry5.test.PageTester.<init>(PageTester.java:118)
        at com.theagategroup.webapp.pages.BasePageTestCase$1.<init>(BasePageTestCase.java:96)
        at com.theagategroup.webapp.pages.BasePageTestCase.onSetUp(BasePageTestCase.java:96)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
        at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
        at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
        at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83)
        at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
        at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:232)
        at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:89)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
        at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
        at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
        at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:175)
        at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
        at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:77)
        at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:195)
        at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:63)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
    Caused by: java.lang.RuntimeException: Error invoking constructor public org.lazan.t5.cometd.services.internal.CometdHttpServletRequestFilterImpl(org.apache.tapestry5.ioc.services.RegistryShutdownHub,org.apache.tapestry5.services.ApplicationGlobals,java.lang.String,java.util.Map): javax.servlet.ServletException: java.lang.NullPointerException
        at org.apache.tapestry5.ioc.internal.util.ConstructorInvoker.invoke(ConstructorInvoker.java:57)
        at org.apache.tapestry5.ioc.internal.util.LoggingInvokableWrapper.invoke(LoggingInvokableWrapper.java:42)
        at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
        ... 121 more
    Caused by: java.lang.RuntimeException: javax.servlet.ServletException: java.lang.NullPointerException
        at org.lazan.t5.cometd.services.internal.ServletHttpServletRequestFilter.<init>(ServletHttpServletRequestFilter.java:43)
        at org.lazan.t5.cometd.services.internal.CometdHttpServletRequestFilterImpl.<init>(CometdHttpServletRequestFilterImpl.java:32)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
        at org.apache.tapestry5.ioc.internal.util.ConstructorInvoker.invoke(ConstructorInvoker.java:48)
        ... 123 more
    Caused by: javax.servlet.ServletException: java.lang.NullPointerException
        at org.cometd.server.CometdServlet.init(CometdServlet.java:134)
        at javax.servlet.GenericServlet.init(GenericServlet.java:244)
        at org.lazan.t5.cometd.services.internal.ServletHttpServletRequestFilter.<init>(ServletHttpServletRequestFilter.java:35)
        ... 129 more
    Caused by: java.lang.NullPointerException
        at org.cometd.server.CometdServlet.init(CometdServlet.java:75)
        ... 131 more
    ERROR [main] BayeuxServer.createObject(64) | Construction of service BayeuxServer failed: Error invoking method public static org.cometd.bayeux.server.BayeuxServer org.lazan.t5.cometd.services.CometdModule.buildBayeuxServer(org.lazan.t5.cometd.services.CometdHttpServletRequestFilter,org.lazan.t5.cometd.services.Authorizers,org.lazan.t5.cometd.services.SubscriptionListeners,org.lazan.t5.cometd.services.CometdGlobals): Exception constructing service 'CometdHttpServletRequestFilter': Error invoking constructor public org.lazan.t5.cometd.services.internal.CometdHttpServletRequestFilterImpl(org.apache.tapestry5.ioc.services.RegistryShutdownHub,org.apache.tapestry5.services.ApplicationGlobals,java.lang.String,java.util.Map): javax.servlet.ServletException: java.lang.NullPointerException
    java.lang.RuntimeException: Error invoking method public static org.cometd.bayeux.server.BayeuxServer org.lazan.t5.cometd.services.CometdModule.buildBayeuxServer(org.lazan.t5.cometd.services.CometdHttpServletRequestFilter,org.lazan.t5.cometd.services.Authorizers,org.lazan.t5.cometd.services.SubscriptionListeners,org.lazan.t5.cometd.services.CometdGlobals): Exception constructing service 'CometdHttpServletRequestFilter': Error invoking constructor public org.lazan.t5.cometd.services.internal.CometdHttpServletRequestFilterImpl(org.apache.tapestry5.ioc.services.RegistryShutdownHub,org.apache.tapestry5.services.ApplicationGlobals,java.lang.String,java.util.Map): javax.servlet.ServletException: java.lang.NullPointerException
    
    opened by ebtalley 4
  • 0.9.16-SNAPSHOT is missing

    0.9.16-SNAPSHOT is missing

    I just want to test a demo and get this error:

    The POM for org.lazan:tapestry-cometd:jar:0.9.16-SNAPSHOT is missing, no dependency information available

    Failed to execute goal on project tapestry-cometd-demo: Could not resolve dependencies for project org.lazan:tapestry-cometd-demo:war:1.0-SNAPSHOT: Failure to find org.lazan:tapestry-cometd:jar:0.9.16-SNAPSHOT in https://github.com/uklance/releases/raw/master was cached in the local repository, resolution will not be reattempted until the update interval of uklance-github has elapsed or updates are forced -> [Help 1]

    opened by SeriousSem 2
  • Investigate atmosphere cometd

    Investigate atmosphere cometd

    Atmosphere claims to support all servlet containers and has a CometD servlet using the atmosphere framework. https://github.com/Atmosphere/atmosphere/wiki/Getting-started-with-Cometd http://atmosphere.github.com/atmosphere/apidocs/org/atmosphere/cometd/CometdServlet.html http://atmosphere-framework.2306103.n4.nabble.com/Using-CometD-with-Atmosphere-td4650724.html

    high priority 
    opened by uklance 2
  • Custom listeners / authorizers

    Custom listeners / authorizers

    • Abstract the singleton Maps from CometdPushManager into a separate service (CometdGlobals)
    • Support connect listeners (topic based)
    • Support disconnect listeners (topic based)
    • Support authorizer contributions (topic based)
    • Perhaps refactor CometdPushManager into listeners, delete the class and move everything to CometdModule.buildBayeuxServer()
    public interface SubscriptionListener {
       public void onSubscribe(String topic, ClientContext context);
       public void onUnsubscribe(String topic, ClientContext context);
       public String getTopic();
    }
    
    public interface SubscriptionListeners {
       public void addListener(SubscriptionListener listener);
       public void removeListener(SubscriptionListener listener);
       public List<SubscriptionListener> getListeners(String topic);
    }
    
    public interface Authorizer {
       public boolean authorize(String topic, ClientContext context);
       public String getTopic();
    }
    
    public interface Authorizers {
       public void addAuthorizer(Authorizer auth);
       public void removeAuthorizer(Authorizer auth);
       public List<Authorizer> getAuthorizers(String topic);
    }
    
    high priority 
    opened by uklance 2
  • Support JavaScriptSupport scripts when messages arrive

    Support JavaScriptSupport scripts when messages arrive

    Currently, only the html content is sent from the component event. Investigate running any javascript (added via JavascriptSupport) at the same time.

    @see PushManagerImpl.java:75

    Also see

    Tapestry.loadScriptsInReply: function (reply, callback) {
       ...
    }
    

    Related to #23

    high priority 
    opened by uklance 2
  • Allow IOC implementations for all FakeRequest / FakeResponse methods

    Allow IOC implementations for all FakeRequest / FakeResponse methods

    Requires a new IOC service

    public interface PushEnvironmentSource {
       public HttpSession createHttpSession(BayeuxContext bayeuxContext);
       public HttpServletRequest createHttpServletRequest(Map<String, String> headers, HttpSession session);
       public HttpServletResponse createHttpServletResponse(OutputStream out);
    }
    

    This service can then be invoked by AuthorizersImpl and ComponentJSONRendererImpl

    high priority 
    opened by uklance 1
  • Page activation context is always empty for push events

    Page activation context is always empty for push events

    PushManagerImpl always passes EMPTY_EVENT_CONTEXT as the page activation context for push events

    @see https://github.com/uklance/tapestry-cometd/blob/master/src/main/java/org/lazan/t5/cometd/services/internal/PushManagerImpl.java#L60

    To fix this, PushTarget needs to be changed to add the page activation context in getInitData() (https://github.com/uklance/tapestry-cometd/blob/master/src/main/java/org/lazan/t5/cometd/components/PushTarget.java#L109).

    The page activation context will need to be added to the ClientContext in AuthorizersImpl.getClientContext() (https://github.com/uklance/tapestry-cometd/blob/master/src/main/java/org/lazan/t5/cometd/services/internal/AuthorizersImpl.java#L74)

    The solution might require a PageRenderRequestFilter to be contributed to the start of the PageRenderRequestHandler pipeline. The filter will set a thread local for the page activation context (very similar to RequestGlobals).

    bug high priority 
    opened by uklance 1
  • Extract ComponentJSONRenderer into tapestry-offline

    Extract ComponentJSONRenderer into tapestry-offline

    Fork tapestry-cometd on github to a project named tapestry-offline and remove any push-specific code.

    The interface might look something like:

    public interface OfflineComponentRenderer {
       JSONObject renderComponent(ComponentEventRequestParameters params);
       JSONObject renderComponent(ComponentEventRequestParameters params, HTTPSession session);
       void renderComponent(ComponentEventRequestParameters params, OutputStream out);
       void renderComponent(ComponentEventRequestParameters params, OutputStream out, HTTPSession session);
       void renderPage(PageRenderRequestParameters params, OutputStream out);
       void renderPage(PageRenderRequestParameters params, OutputStream out, HTTPSession session);
    }
    
    high priority 
    opened by uklance 1
  • Publishing tapestry-cometd to maven

    Publishing tapestry-cometd to maven

    Hello, Due to security restrictions some organizations only trust official maven repositories. Is there any chance this artifact could be published to some official repository ? Thank you.

    opened by yazari-fa 0
  • SubscriptionListeners and  Authorizers should not extend CometD interfaces

    SubscriptionListeners and Authorizers should not extend CometD interfaces

    org.lazan.t5.cometd.services.Authorizers currently extends org.cometd.bayeux.server.Authorizer

    org.lazan.t5.cometd.services.SubscriptionListeners currently extends org.cometd.bayeux.server.BayeuxServer.SubscriptionListener

    these should be POJO interfaces, this might require the use of anonymous inner classes in CometdModule

    enhancement low priority 
    opened by uklance 0
  • Include jquery based on symbol

    Include jquery based on symbol

    The demo currently uses tapestry-jquery which is an unacceptable requirement. Tapestry CometD should instead include the jquery javascript based on a boolean symbol.

    wontfix 
    opened by uklance 0
  • Move DisconnectListener out of PushManager

    Move DisconnectListener out of PushManager

    Every time I try this I'm doing two things at once and I always seem to break things. Need to move the DisconnectListener from the PushManager constructor to CometdModule.

    I wonder if this has anything to do with eagerLoad() binder.bind(PushManager.class, PushManagerImpl.class).eagerLoad();

    high priority 
    opened by uklance 0
Owner
Lance
Lance
A web MVC action-based framework, on top of CDI, for fast and maintainable Java development.

A web MVC action-based framework, on top of CDI, for fast and maintainable Java development. Downloading For a quick start, you can use this snippet i

Caelum 347 Nov 15, 2022
Messenger(Chat app) is a real time one to one chat application with Push Notifications made using Firebase...

Messenger If you want a APK then create an issue, i'll send the link.. ChatApp is a real time one to one chat application with Push Notifications made

Tales 14 Apr 30, 2022
Jetserver is a high speed nio socket based multiplayer java game server written using Netty and Mike Rettig's Jetlang.It is specifically tuned for network based multiplayer games and supports TCP and UDP network protocols.

Note New version of Jetserver is called Nadron and is in a new netty 4 branch of this same repo. JetServer is a java nio based server specifically des

Abraham Menacherry 1.2k Dec 14, 2022
This app/widget is based on the work of Anthony (tonesto7), which is in turn based on the earlier work of David Schablowsky

Mustang Mach-E Widget for Android Intro This app/widget is based on the work of Anthony (tonesto7), which is in turn based on the earlier work of Davi

null 25 Nov 15, 2022
Team 5468's 2022 FRC robot code. This code is written in Java and is based off of WPILib's Java control system and utilizes a command based system

FRC 2022 Team 5468's 2022 FRC robot code. This code is written in Java and is based off of WPILib's Java control system and utilizes a command based s

null 4 Oct 4, 2022
Time-Based One-Time Password (RFC 6238) and HMAC-Based One-Time Password (RFC 4226) reference implementations and more.

Crypto Time-Based One-Time Password (RFC 6238) and HMAC-Based One-Time Password (RFC 4226) reference implementations and more. Getting Started TOTP ge

Oliver Yasuna 1 May 12, 2022
A GUI-based file manager based on a Java file management and I/O framework using object-oriented programming ideas.

FileManager A GUI-based file manager based on a Java file management and I/O framework using object-oriented programming ideas. Enables folder creatio

Zongyu Wu 4 Feb 7, 2022
A maven-based JavaFX Asteroids game based on a tutorial from Lee Stemkoski

JavaFX Asteroids About This is a maven-based project which implements a JavaFX Asteroids Game. The code is based on a tutorial from Lee Stemkoski whic

null 2 Mar 2, 2022
A Text Based, Turn-Based, Strategy Game to be played in console

ConsoleGame A Text Based, Turn-Based, Strategy Game to be played in console. Feel free to fix any retardation in my code (meaning bugs, stupid/spaghet

Bertrahm 2 Jul 17, 2022
Duck Library is a library for developers who don't want to spend their time to write same library consistently.

Duck Library is a library for developers who don't want to spend their time to write same library consistently. It has almost every useful feature to

null 5 Jul 28, 2022
Java library for creating text-based GUIs

Lanterna Lanterna is a Java library allowing you to write easy semi-graphical user interfaces in a text-only environment, very similar to the C librar

null 2k Dec 31, 2022
TCP/UDP client/server library for Java, based on Kryo

KryoNet can be downloaded on the releases page. Please use the KryoNet discussion group for support. Overview KryoNet is a Java library that provides

Esoteric Software 1.7k Jan 2, 2023
An annotation-based Java library for creating Thrift serializable types and services.

Drift Drift is an easy-to-use, annotation-based Java library for creating Thrift clients and serializable types. The client library is similar to JAX-

null 225 Dec 24, 2022
An HTML to PDF library for the JVM. Based on Flying Saucer and Apache PDF-BOX 2. With SVG image support. Now also with accessible PDF support (WCAG, Section 508, PDF/UA)!

OPEN HTML TO PDF OVERVIEW Open HTML to PDF is a pure-Java library for rendering arbitrary well-formed XML/XHTML (and even HTML5) using CSS 2.1 for lay

null 1.6k Dec 29, 2022
Microserver is a Java 8 native, zero configuration, standards based, battle hardened library to run Java Rest Microservices via a standard Java main class. Supporting pure Microservice or Micro-monolith styles.

Microserver A convenient modular engine for Microservices. Microserver plugins offer seamless integration with Spring (core), Jersey, Guava, Tomcat, G

AOL 936 Dec 19, 2022
Java rate limiting library based on token/leaky-bucket algorithm.

Java rate-limiting library based on token-bucket algorithm. Advantages of Bucket4j Implemented on top of ideas of well known algorithm, which are by d

Vladimir Bukhtoyarov 1.7k Jan 8, 2023
RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM.

RxJava: Reactive Extensions for the JVM RxJava is a Java VM implementation of Reactive Extensions: a library for composing asynchronous and event-base

ReactiveX 46.7k Dec 30, 2022
Microserver is a Java 8 native, zero configuration, standards based, battle hardened library to run Java Rest Microservices via a standard Java main class. Supporting pure Microservice or Micro-monolith styles.

Microserver is a Java 8 native, zero configuration, standards based, battle hardened library to run Java Rest Microservices via a standard Java main class. Supporting pure Microservice or Micro-monolith styles.

AOL 936 Dec 19, 2022
A Java library designed to make making decisions based on the current operating system easier.

Java OS Independence ...or JOSI for short, is a simple and lightweight Java library designed to make making decisions based on the current operating s

null 38 Dec 30, 2022