Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Failed using comet support with runtime-native #1651

Closed
bill2004158 opened this issue Jun 30, 2014 · 3 comments
Closed

Failed using comet support with runtime-native #1651

bill2004158 opened this issue Jun 30, 2014 · 3 comments

Comments

@bill2004158
Copy link

used jar:
atmosphere-runtime-native-2.1.1.jar
atmosphere-compat-tomcat-2.0.1.jar
atmosphere-compat-jbossweb-2.0.1.jar
and running tomcat: tomcat-7.0.42
with context.xml

and connector:
protocol="org.apache.coyote.http11.Http11NioProtocol"

the logs:
02:44:44,332 INFO [localhost-startStop-1][AtmosphereFramework:145] Installed AtmosphereHandler com.rivetlogic.portlet.whiteboard.atmosphere.WhiteboardHandler mapped to context-path / and Broadcaster Class org.atmosphere.util.SimpleBroadcaster
02:44:44,332 INFO [localhost-startStop-1][AtmosphereFramework:156] Installed AtmosphereInterceptor [Atmosphere LifeCycle, Track Message Size Interceptor using |, org.atmosphere.interceptor.BroadcastOnPostAtmosphereInterceptor, UUID Tracking Interceptor] mapped to AtmosphereHandler com.rivetlogic.portlet.whiteboard.atmosphere.WhiteboardHandler
02:44:44,335 INFO [localhost-startStop-1][AtmosphereFramework:134] Auto detecting WebSocketHandler in /WEB-INF/classes/
02:44:44,338 INFO [localhost-startStop-1][AtmosphereFramework:134] Installed WebSocketProtocol org.atmosphere.websocket.protocol.SimpleHttpProtocol
02:44:44,345 INFO [localhost-startStop-1][AtmosphereFramework:125] Installing Default AtmosphereInterceptor
02:44:44,345 INFO [localhost-startStop-1][AtmosphereFramework:156] org.atmosphere.interceptor.CorsInterceptor : CORS Interceptor Support
02:44:44,346 INFO [localhost-startStop-1][AtmosphereFramework:156] org.atmosphere.interceptor.CacheHeadersInterceptor : Default Response's Headers Interceptor
02:44:44,346 INFO [localhost-startStop-1][AtmosphereFramework:156] org.atmosphere.interceptor.PaddingAtmosphereInterceptor : Browser Padding Interceptor Support
02:44:44,346 INFO [localhost-startStop-1][AtmosphereFramework:156] org.atmosphere.interceptor.AndroidAtmosphereInterceptor : Android Interceptor Support
02:44:44,347 INFO [localhost-startStop-1][AtmosphereFramework:156] org.atmosphere.interceptor.HeartbeatInterceptor : Heartbeat Interceptor Support
02:44:44,347 INFO [localhost-startStop-1][AtmosphereFramework:156] org.atmosphere.interceptor.SSEAtmosphereInterceptor : SSE Interceptor Support
02:44:44,347 INFO [localhost-startStop-1][AtmosphereFramework:156] org.atmosphere.interceptor.JSONPAtmosphereInterceptor : JSONP Interceptor Support
02:44:44,349 INFO [localhost-startStop-1][AtmosphereFramework:156] org.atmosphere.interceptor.JavaScriptProtocol : Atmosphere JavaScript Protocol
02:44:44,349 INFO [localhost-startStop-1][AtmosphereFramework:156] org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor : org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor
02:44:44,349 INFO [localhost-startStop-1][AtmosphereFramework:156] org.atmosphere.interceptor.OnDisconnectInterceptor : Browser disconnection detection
02:44:44,349 INFO [localhost-startStop-1][AtmosphereFramework:156] org.atmosphere.interceptor.IdleResourceInterceptor : org.atmosphere.interceptor.IdleResourceInterceptor
02:44:44,350 INFO [localhost-startStop-1][AtmosphereFramework:156] Set org.atmosphere.cpr.AtmosphereInterceptor.disableDefaults to disable them.
02:44:44,351 INFO [localhost-startStop-1][AtmosphereFramework:134] Using EndpointMapper class org.atmosphere.util.DefaultEndpointMapper
02:44:44,352 WARN [localhost-startStop-1][AtmosphereFramework:284] No BroadcasterCache configured. Broadcasted message between client reconnection will be LOST. It is recommended to configure the org.atmosphere.cache.UUIDBroadcasterCache
02:44:44,352 INFO [localhost-startStop-1][AtmosphereFramework:134] Default Broadcaster Class: org.atmosphere.cpr.DefaultBroadcaster
02:44:44,352 INFO [localhost-startStop-1][AtmosphereFramework:134] Broadcaster Polling Wait Time 100
02:44:44,352 INFO [localhost-startStop-1][AtmosphereFramework:134] Shared ExecutorService supported: true
02:44:44,354 INFO [localhost-startStop-1][AtmosphereFramework:134] Messaging Thread Pool Size: Unlimited
02:44:44,354 INFO [localhost-startStop-1][AtmosphereFramework:134] Async I/O Thread Pool Size: 200
02:44:44,354 INFO [localhost-startStop-1][AtmosphereFramework:134] Using BroadcasterFactory: org.atmosphere.cpr.DefaultBroadcasterFactory
02:44:44,354 INFO [localhost-startStop-1][AtmosphereFramework:134] Using WebSocketProcessor: org.atmosphere.websocket.DefaultWebSocketProcessor
02:44:44,354 INFO [localhost-startStop-1][AtmosphereFramework:134] HttpSession supported: true
02:44:44,354 INFO [localhost-startStop-1][AtmosphereFramework:134] Atmosphere is using DefaultAtmosphereObjectFactory for dependency injection and object creation
02:44:44,354 INFO [localhost-startStop-1][AtmosphereFramework:156] Atmosphere is using async support: org.atmosphere.container.Tomcat7AsyncSupportWithWebSocket running under container: Apache Tomcat/7.0.42
02:44:44,361 INFO [localhost-startStop-1][AtmosphereFramework:134] Atmosphere Framework 2.1.1 started.
02:44:44,361 INFO [localhost-startStop-1][AtmosphereFramework:156] __ For Atmosphere Framework Commercial Support, visit _ http://www.async-io.org/ or send an email to support@async-io.org_ [Sanitized]
02:44:44,361 INFO [localhost-startStop-1][AtmosphereServlet:125] AtmosphereServlet with native support for Tomcat 6/7 and JBossWeb Installed.

02:46:18,294 WARN [http-nio-8443-exec-5][AtmosphereFramework:306] 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? [Sanitized]
02:46:18,296 ERROR [http-nio-8443-exec-5][AtmosphereFramework:113] 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.
java.lang.IllegalStateException: 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 [Sanitized]
at org.atmosphere.container.Tomcat7CometSupport.(Tomcat7CometSupport.java:56)
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.atmosphere.cpr.DefaultAsyncSupportResolver.newCometSupport(DefaultAsyncSupportResolver.java:225)
at org.atmosphere.cpr.DefaultAsyncSupportResolver.resolveWebSocket(DefaultAsyncSupportResolver.java:288)
at org.atmosphere.cpr.DefaultAsyncSupportResolver.resolve(DefaultAsyncSupportResolver.java:274)
at org.atmosphere.cpr.AtmosphereFramework.autoDetectContainer(AtmosphereFramework.java:1579)
at org.atmosphere.cpr.AtmosphereFramework.init(AtmosphereFramework.java:717)
at org.atmosphere.cpr.AtmosphereFramework.init(AtmosphereFramework.java:614)
at org.atmosphere.cpr.AtmosphereServlet.init(AtmosphereServlet.java:86)
at com.liferay.portal.kernel.servlet.PortalDelegateServlet.doPortalInit(PortalDelegateServlet.java:64)
at com.liferay.portal.kernel.util.BasePortalLifecycle.portalInit(BasePortalLifecycle.java:44)
at com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:64)
at com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:56)
at com.liferay.portal.kernel.util.BasePortalLifecycle.registerPortalLifecycle(BasePortalLifecycle.java:54)
at com.liferay.portal.kernel.servlet.SecureServlet.init(SecureServlet.java:76)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1193)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1088)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5176)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5460)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1113)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1671)
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:745)

@bill2004158
Copy link
Author

already enable NIO and used native lib, why still get this msg?

@bill2004158
Copy link
Author

it seems because of this line:
https://github.com/Atmosphere/atmosphere/blob/master/modules/native/src/main/java/org/atmosphere/cpr/AtmosphereServlet.java#L190

doPost havn't set CometEvent and called framework.doCometSupport() directly.
then framework throw that exception.

@bill2004158
Copy link
Author

tomcat will enable commet if servlet is CometProcessor.
while in my project the DelegatorServlet hasn't impl that interface.
and then it called doPost().
so it seems it is not problem of AtmosphereFramework.
just close this issue?

        // Identify if the request is Comet related now that the servlet has been allocated
        boolean comet = false;
        if (servlet instanceof CometProcessor && request.getAttribute(
                Globals.COMET_SUPPORTED_ATTR) == Boolean.TRUE) {
            comet = true;
            request.setComet(true);
        }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant