com.sun.enterprise.web.connector.grizzly.comet.CometEngine Maven / Gradle / Ivy
/*
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
*
* The contents of this file are subject to the terms of either the GNU
* General Public License Version 2 only ("GPL") or the Common Development
* and Distribution License("CDDL") (collectively, the "License"). You
* may not use this file except in compliance with the License. You can obtain
* a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
* or glassfish/bootstrap/legal/LICENSE.txt. See the License for the specific
* language governing permissions and limitations under the License.
*
* When distributing the software, include this License Header Notice in each
* file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
* Sun designates this particular file as subject to the "Classpath" exception
* as provided by Sun in the GPL Version 2 section of the License file that
* accompanied this code. If applicable, add the following below the License
* Header, with the fields enclosed by brackets [] replaced by your own
* identifying information: "Portions Copyrighted [year]
* [name of copyright owner]"
*
* Contributor(s):
*
* If you wish your version of this file to be governed by only the CDDL or
* only the GPL Version 2, indicate your decision by adding "[Contributor]
* elects to include this software in this distribution under the [CDDL or GPL
* Version 2] license." If you don't indicate a single choice of license, a
* recipient has the option to distribute your version of this file under
* either the CDDL, the GPL Version 2 or to extend the choice of license to
* its licensees as provided above. However, if you add GPL Version 2 code
* and therefore, elected the GPL Version 2 license, then the option applies
* only if the new code is made subject to such option by the copyright
* holder.
*
*/
package com.sun.enterprise.web.connector.grizzly.comet;
/**
* Main class allowing Comet support on top of Grizzly Asynchronous
* Request Processing mechanism. This class is the entry point to any
* component interested to execute Comet request style. Components can be
* Servlets, JSP, JSF or pure Java class. A component interested to support
* Comet request must do:
*
* (1) First, register the cometContext path on which Comet support will be applied:
* CometEngine cometEngine = CometEngine.getEngine()
* CometContext cometContext = cometEngine.register(contextPath)
* (2) Second, add an instance of {@link CometHandler} to the
* {@link CometContext} returned by the register method:
* cometContext.addCometHandler(handler);
* (3) Finally, you can invokeCometHandler other {@link CometHandler} by doing:
* cometContext.invokeCometHandler(Object)(handler);
*
* You can also select the stage where the request polling happens when
* registering the cometContext path (see register(String,int);
*
*
* @author Jeanfrancois Arcand
* @deprecated - Use {@link CometEngine}
*/
public class CometEngine extends com.sun.grizzly.comet.CometEngine {
private static CometEngine cometEngine;
/**
* {@inheritDoc}
*/
public synchronized static CometEngine getEngine(){
if (cometEngine == null) {
cometEngine = new CometEngine();
notificationHandlerClassName =
DefaultNotificationHandler.class.getName();
}
return cometEngine;
}
/**
* {@inheritDoc}
*/
@Override
public CometContext register(String contextPath){
return register(contextPath,AFTER_SERVLET_PROCESSING);
}
/**
* {@inheritDoc}
*/
@Override
public CometContext register(String contextPath, int type){
CometContext cometContext = (CometContext)
activeContexts.get(contextPath);
if (cometContext == null){
cometContext = (com.sun.enterprise.web.connector.grizzly.comet.CometContext)
cometContexts.poll();
if (cometContext == null){
cometContext = new CometContext(contextPath,type);
cometContext.setCometSelector(cometSelector);
NotificationHandler notificationHandler
= (NotificationHandler)
loadNotificationHandlerInstance
(notificationHandlerClassName);
cometContext.setNotificationHandler(notificationHandler);
if (notificationHandler instanceof DefaultNotificationHandler){
((DefaultNotificationHandler)notificationHandler)
.setThreadPool(threadPool);
}
}
activeContexts.put(contextPath,cometContext);
}
return cometContext;
}
/**
* {@inheritDoc}
*/
@Override
public CometContext getCometContext(String contextPath){
return (CometContext)activeContexts.get(contextPath);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy