|
Glassfish example source code file (OSGiServletWrapper.java)
The Glassfish OSGiServletWrapper.java source code/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright (c) 2009-2010 Oracle and/or its affiliates. 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_1_1.html * or packager/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 packager/legal/LICENSE.txt. * * GPL Classpath Exception: * Oracle designates this particular file as subject to the "Classpath" * exception as provided by Oracle in the GPL Version 2 section of the License * file that accompanied this code. * * Modifications: * If applicable, add the following below the License Header, with the fields * enclosed by brackets [] replaced by your own identifying information: * "Portions Copyright [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 org.glassfish.osgihttp; import org.apache.catalina.Wrapper; import org.apache.catalina.core.StandardWrapper; import org.glassfish.web.valve.GlassFishValve; import javax.servlet.Servlet; import javax.servlet.ServletException; import java.util.Enumeration; /** * Unlike Java EE Web Application model, there is no notion of "context path" * in OSGi HTTP service spec. Here the servlets can specify which context they * belong to by passing a {@link org.osgi.service.http.HttpContext} object. * Those HttpContext objects don't have any "path" attribute. As a result, * all the OSGi/HTTP servlets belonging to the same servlet context may not * have any of the path common to them. Internally, we register all the OSGi * servlets (actually we register {@link OSGiServletWrapper} * with the same {@link org.apache.catalina.Context} object. So we need a way to * demultiplex the OSGi servlet context. * * @author Sanjeeb.Sahoo@Sun.COM */ public class OSGiServletWrapper extends StandardWrapper implements Wrapper { // TODO(Sahoo): Logging private Servlet servlet; private OSGiServletConfig config; public OSGiServletWrapper(String name, Servlet servlet, OSGiServletConfig config, String urlMapping) { this.servlet = servlet; this.config = config; setOSGi(true); setServlet(servlet); setName(name); addMapping(urlMapping); } public Servlet getServlet() { return servlet; } /* package */ void initializeServlet() throws ServletException { servlet.init(config); } /* package */ void destroyServlet() { servlet.destroy(); } // BEGIN: Override ServletConfig methods @Override public String getServletName() { return config.getServletName(); } @Override public OSGiServletContext getServletContext() { // We can't use super.getServletContext, as that would get us the // ServletContext that's common for all OSGi/HTTP servlets, where as // we need the servlet context registered for each HttpContext. return config.getServletContext(); } @Override public String getInitParameter(String name) { return config.getInitParameter(name); } @Override public Enumeration getInitParameterNames() { return config.getInitParameterNames(); } // END: Override ServletConfig methods // BEGIN: Override lifecycle methods of StandardWrapper... @Override public Servlet allocate() throws ServletException { return servlet; } @Override public synchronized void load() throws ServletException { // NOOP: We already have the Servlet instance. } @Override public synchronized void unload() throws ServletException { // NOOP: We don't have to do anything, as HttpService calls // destroServlet method directly from unregister() method. return; } // END: Override lifecycle methods of StandardWrapper... // Override addValve as StandardWrapper has put in an optimisation // and does not support adding any valve (see issue #1343). @Override public synchronized void addValve(GlassFishValve valve) { getPipeline().addValve(valve); } } Other Glassfish examples (source code examples)Here is a short list of links related to this Glassfish OSGiServletWrapper.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.