All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.glassfish.jersey.server.internal.monitoring.MonitoringContainerListener Maven / Gradle / Ivy

Go to download

A bundle project producing JAX-RS RI bundles. The primary artifact is an "all-in-one" OSGi-fied JAX-RS RI bundle (jaxrs-ri.jar). Attached to that are two compressed JAX-RS RI archives. The first archive (jaxrs-ri.zip) consists of binary RI bits and contains the API jar (under "api" directory), RI libraries (under "lib" directory) as well as all external RI dependencies (under "ext" directory). The secondary archive (jaxrs-ri-src.zip) contains buildable JAX-RS RI source bundle and contains the API jar (under "api" directory), RI sources (under "src" directory) as well as all external RI dependencies (under "ext" directory). The second archive also contains "build.xml" ANT script that builds the RI sources. To build the JAX-RS RI simply unzip the archive, cd to the created jaxrs-ri directory and invoke "ant" from the command line.

There is a newer version: 3.1.6
Show newest version
/*
 * Copyright (c) 2013, 2020 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0, which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the
 * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
 * version 2 with the GNU Classpath Exception, which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 */

package org.glassfish.jersey.server.internal.monitoring;

import jakarta.inject.Singleton;

import org.glassfish.jersey.internal.inject.AbstractBinder;
import org.glassfish.jersey.server.monitoring.ApplicationEvent;
import org.glassfish.jersey.server.monitoring.ApplicationEventListener;
import org.glassfish.jersey.server.spi.Container;
import org.glassfish.jersey.server.spi.ContainerLifecycleListener;

/**
 * Container listener that listens to container events and trigger the {@link ApplicationEvent application events}
 * and call them on supplied {@link org.glassfish.jersey.server.monitoring.RequestEventListener}.
 * 

* This listener must be registered as a standard provider in Jersey runtime. * * @author Miroslav Fuksa */ public final class MonitoringContainerListener implements ContainerLifecycleListener { private volatile ApplicationEvent initFinishedEvent; private volatile ApplicationEventListener listener; /** * Initializes the instance with listener that must be called and initialization event. If this method * is not called then events cannot not be triggered which might be needed when no * {@link ApplicationEventListener} is registered in Jersey runtime. * * @param listener Listener that should be called. * @param initFinishedEvent Event of type {@link ApplicationEvent.Type#INITIALIZATION_START}. */ public void init(ApplicationEventListener listener, ApplicationEvent initFinishedEvent) { this.listener = listener; this.initFinishedEvent = initFinishedEvent; } @Override public void onStartup(Container container) { if (listener != null) { listener.onEvent(getApplicationEvent(ApplicationEvent.Type.INITIALIZATION_FINISHED)); } } @Override public void onReload(Container container) { if (listener != null) { listener.onEvent(getApplicationEvent(ApplicationEvent.Type.RELOAD_FINISHED)); } } private ApplicationEvent getApplicationEvent(ApplicationEvent.Type type) { return new ApplicationEventImpl(type, initFinishedEvent.getResourceConfig(), initFinishedEvent.getProviders(), initFinishedEvent.getRegisteredClasses(), initFinishedEvent.getRegisteredInstances(), initFinishedEvent.getResourceModel()); } @Override public void onShutdown(Container container) { if (listener != null) { listener.onEvent(getApplicationEvent(ApplicationEvent.Type.DESTROY_FINISHED)); } } /** * A binder that binds the {@link MonitoringContainerListener}. */ public static class Binder extends AbstractBinder { @Override protected void configure() { bindAsContract(MonitoringContainerListener.class) .to(ContainerLifecycleListener.class).in(Singleton.class); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy