Search in sources :

Example 56 with Valve

use of org.apache.catalina.Valve in project spring-boot by spring-projects.

the class TomcatServletWebServerFactoryTests method valve.

@Test
void valve() {
    TomcatServletWebServerFactory factory = getFactory();
    Valve valve = mock(Valve.class);
    factory.addContextValves(valve);
    this.webServer = factory.getWebServer();
    then(valve).should().setNext(any(Valve.class));
}
Also used : Valve(org.apache.catalina.Valve) RemoteIpValve(org.apache.catalina.valves.RemoteIpValve) Test(org.junit.jupiter.api.Test)

Example 57 with Valve

use of org.apache.catalina.Valve in project tomcat-cluster-redis-session-manager by ran-jit.

the class SessionManager method startInternal.

/**
 * {@inheritDoc}
 */
@Override
protected synchronized void startInternal() throws LifecycleException {
    super.startInternal();
    super.setState(LifecycleState.STARTING);
    boolean initializedValve = false;
    Context context = getContextIns();
    for (Valve valve : context.getPipeline().getValves()) {
        if (valve instanceof SessionHandlerValve) {
            SessionHandlerValve handlerValve = (SessionHandlerValve) valve;
            handlerValve.setSessionManager(this);
            initializedValve = true;
            break;
        }
    }
    if (!initializedValve) {
        throw new LifecycleException("Session handling valve is not initialized..");
    }
    initialize();
    LOGGER.info("The sessions will expire after " + (getSessionTimeout(null)) + " seconds.");
    context.setDistributable(true);
}
Also used : SessionContext(tomcat.request.session.model.SessionContext) Context(org.apache.catalina.Context) LifecycleException(org.apache.catalina.LifecycleException) Valve(org.apache.catalina.Valve)

Example 58 with Valve

use of org.apache.catalina.Valve in project meecrowave by apache.

the class Meecrowave method start.

public Meecrowave start() {
    final Map<String, String> systemPropsToRestore = new HashMap<>();
    if (configuration.getMeecrowaveProperties() != null && !"meecrowave.properties".equals(configuration.getMeecrowaveProperties())) {
        configuration.loadFrom(configuration.getMeecrowaveProperties());
    }
    if (configuration.isUseLog4j2JulLogManager() && Log4j2s.IS_PRESENT) {
        // /!\ don't move this line or add anything before without checking log setup
        System.setProperty("java.util.logging.manager", "org.apache.logging.log4j.jul.LogManager");
    }
    if (configuration.isLoggingGlobalSetup() && Log4j2s.IS_PRESENT) {
        setSystemProperty(systemPropsToRestore, "log4j.shutdownHookEnabled", "false");
        setSystemProperty(systemPropsToRestore, "openwebbeans.logging.factory", Log4j2LoggerFactory.class.getName());
        setSystemProperty(systemPropsToRestore, "org.apache.cxf.Logger", Log4j2Logger.class.getName());
        setSystemProperty(systemPropsToRestore, "org.apache.tomcat.Logger", Log4j2Log.class.getName());
        postTask = () -> {
            if (Log4j2s.IS_PRESENT) {
                new Log4j2Shutdown().shutdown();
            }
            systemPropsToRestore.forEach((key, value) -> {
                if (value == null) {
                    System.clearProperty(key);
                } else {
                    System.setProperty(key, value);
                }
            });
        };
    }
    setupJmx(configuration.isTomcatNoJmx());
    clearCatalinaSystemProperties = System.getProperty("catalina.base") == null && System.getProperty("catalina.home") == null;
    tomcat = new InternalTomcat();
    {
        // setup
        base = new File(newBaseDir());
        // create the temp dir folder.
        File tempDir;
        if (configuration.getTempDir() == null || configuration.getTempDir().length() == 0) {
            tempDir = createDirectory(base, "temp");
        } else {
            tempDir = new File(configuration.getTempDir());
            if (!tempDir.exists()) {
                tempDir.mkdirs();
            }
        }
        try {
            workDir = createDirectory(base, "work");
        } catch (final IllegalStateException ise) {
            // in case we could not create that directory we create it in the temp dir folder
            workDir = createDirectory(tempDir, "work");
        }
        synchronize(new File(base, "conf"), configuration.getConf());
    }
    final Properties props = configuration.getProperties();
    Substitutor substitutor = null;
    for (final String s : props.stringPropertyNames()) {
        final String v = props.getProperty(s);
        if (v != null && v.contains("${")) {
            if (substitutor == null) {
                final Map<String, String> placeHolders = new HashMap<>();
                placeHolders.put("meecrowave.embedded.http", Integer.toString(configuration.getHttpPort()));
                placeHolders.put("meecrowave.embedded.https", Integer.toString(configuration.getHttpsPort()));
                placeHolders.put("meecrowave.embedded.stop", Integer.toString(configuration.getStopPort()));
                substitutor = new Substitutor(placeHolders);
            }
            props.put(s, substitutor.replace(v));
        }
    }
    final File conf = new File(base, "conf");
    tomcat.setBaseDir(base.getAbsolutePath());
    tomcat.setHostname(configuration.getHost());
    final boolean initialized;
    if (configuration.getServerXml() != null) {
        final File file = new File(conf, "server.xml");
        if (!file.equals(configuration.getServerXml())) {
            try (final InputStream is = new FileInputStream(configuration.getServerXml());
                final FileOutputStream fos = new FileOutputStream(file)) {
                IO.copy(is, fos);
            } catch (final IOException e) {
                throw new IllegalStateException(e);
            }
        }
        // respect config (host/port) of the Configuration
        final QuickServerXmlParser ports = QuickServerXmlParser.parse(file);
        if (configuration.isKeepServerXmlAsThis()) {
            configuration.setHttpPort(Integer.parseInt(ports.http()));
            configuration.setStopPort(Integer.parseInt(ports.stop()));
        } else {
            final Map<String, String> replacements = new HashMap<>();
            replacements.put(ports.http(), String.valueOf(configuration.getHttpPort()));
            replacements.put(ports.https(), String.valueOf(configuration.getHttpsPort()));
            replacements.put(ports.stop(), String.valueOf(configuration.getStopPort()));
            String serverXmlContent;
            try (final InputStream stream = new FileInputStream(file)) {
                serverXmlContent = IO.toString(stream);
                for (final Map.Entry<String, String> pair : replacements.entrySet()) {
                    serverXmlContent = serverXmlContent.replace(pair.getKey(), pair.getValue());
                }
            } catch (final IOException e) {
                throw new IllegalStateException(e);
            }
            try (final OutputStream os = new FileOutputStream(file)) {
                os.write(serverXmlContent.getBytes(StandardCharsets.UTF_8));
            } catch (final IOException e) {
                throw new IllegalStateException(e);
            }
        }
        tomcat.server(createServer(file.getAbsolutePath()));
        initialized = true;
    } else {
        tomcat.getServer().setPort(configuration.getStopPort());
        initialized = false;
    }
    ofNullable(configuration.getSharedLibraries()).map(File::new).filter(File::isDirectory).ifPresent(libRoot -> {
        final Collection<URL> libs = new ArrayList<>();
        try {
            libs.add(libRoot.toURI().toURL());
        } catch (final MalformedURLException e) {
            throw new IllegalStateException(e);
        }
        libs.addAll(ofNullable(libRoot.listFiles((dir, name) -> name.endsWith(".jar") || name.endsWith(".zip"))).map(Stream::of).map(s -> s.map(f -> {
            try {
                return f.toURI().toURL();
            } catch (final MalformedURLException e) {
                throw new IllegalStateException(e);
            }
        }).collect(toList())).orElse(emptyList()));
        tomcat.getServer().setParentClassLoader(new MeecrowaveContainerLoader(libs.toArray(new URL[libs.size()]), Thread.currentThread().getContextClassLoader()));
    });
    if (!initialized) {
        tomcat.setHostname(configuration.getHost());
        tomcat.getEngine().setDefaultHost(configuration.getHost());
        final StandardHost host = new StandardHost();
        host.setName(configuration.getHost());
        try {
            final File webapps = createDirectory(base, "webapps");
            host.setAppBase(webapps.getAbsolutePath());
        } catch (final IllegalStateException ise) {
        // never an issue since the webapps are deployed being put in webapps - so no dynamic folder
        // or through their path - so don't need webapps folder
        }
        // forced for now cause OWB doesn't support war:file:// urls
        host.setUnpackWARs(true);
        try {
            host.setWorkDir(workDir.getCanonicalPath());
        } catch (final IOException e) {
            host.setWorkDir(workDir.getAbsolutePath());
        }
        tomcat.setHost(host);
    }
    ofNullable(configuration.getTomcatAccessLogPattern()).ifPresent(pattern -> tomcat.getHost().getPipeline().addValve(new LoggingAccessLogPattern(pattern)));
    final List<Valve> valves = buildValves();
    if (!valves.isEmpty()) {
        final Pipeline pipeline = tomcat.getHost().getPipeline();
        valves.forEach(pipeline::addValve);
    }
    if (configuration.getRealm() != null) {
        tomcat.getEngine().setRealm(configuration.getRealm());
    }
    if (tomcat.getRawConnector() == null && !configuration.isSkipHttp()) {
        final Connector connector = createConnector();
        connector.setPort(configuration.getHttpPort());
        if (connector.getProperty("connectionTimeout") == null) {
            connector.setProperty("connectionTimeout", "3000");
        }
        tomcat.getService().addConnector(connector);
        tomcat.setConnector(connector);
    }
    // create https connector
    if (configuration.isSsl()) {
        final Connector httpsConnector = createConnector();
        httpsConnector.setPort(configuration.getHttpsPort());
        httpsConnector.setSecure(true);
        httpsConnector.setScheme("https");
        httpsConnector.setProperty("SSLEnabled", "true");
        if (configuration.getSslProtocol() != null) {
            configuration.getProperties().setProperty("connector.sslhostconfig.sslProtocol", configuration.getSslProtocol());
        }
        if (configuration.getProperties().getProperty("connector.sslhostconfig.hostName") != null) {
            httpsConnector.setProperty("defaultSSLHostConfigName", configuration.getProperties().getProperty("connector.sslhostconfig.hostName"));
        }
        if (configuration.getKeystoreFile() != null) {
            configuration.getProperties().setProperty("connector.sslhostconfig.certificateKeystoreFile", configuration.getKeystoreFile());
        }
        if (configuration.getKeystorePass() != null) {
            configuration.getProperties().setProperty("connector.sslhostconfig.certificateKeystorePassword", configuration.getKeystorePass());
        }
        configuration.getProperties().setProperty("connector.sslhostconfig.certificateKeystoreType", configuration.getKeystoreType());
        if (configuration.getClientAuth() != null) {
            httpsConnector.setProperty("clientAuth", configuration.getClientAuth());
        }
        if (configuration.getKeyAlias() != null) {
            configuration.getProperties().setProperty("connector.sslhostconfig.certificateKeyAlias", configuration.getKeyAlias());
        }
        if (configuration.isHttp2()) {
            httpsConnector.addUpgradeProtocol(new Http2Protocol());
        }
        final List<SSLHostConfig> buildSslHostConfig = buildSslHostConfig();
        if (!buildSslHostConfig.isEmpty()) {
            createDirectory(base, "conf");
        }
        buildSslHostConfig.forEach(sslHostConf -> {
            if (isCertificateFromClasspath(sslHostConf.getCertificateKeystoreFile())) {
                copyCertificateToConfDir(sslHostConf.getCertificateKeystoreFile());
                sslHostConf.setCertificateKeystoreFile(base.getAbsolutePath() + "/conf/" + sslHostConf.getCertificateKeystoreFile());
            }
            if (isCertificateFromClasspath(sslHostConf.getCertificateKeyFile())) {
                copyCertificateToConfDir(sslHostConf.getCertificateKeyFile());
                sslHostConf.setCertificateKeyFile(base.getAbsolutePath() + "/conf/" + sslHostConf.getCertificateKeyFile());
                copyCertificateToConfDir(sslHostConf.getCertificateFile());
                sslHostConf.setCertificateFile(base.getAbsolutePath() + "/conf/" + sslHostConf.getCertificateFile());
            }
            if (isCertificateFromClasspath(sslHostConf.getTruststoreFile())) {
                copyCertificateToConfDir(sslHostConf.getTruststoreFile());
                sslHostConf.setTruststoreFile(base.getAbsolutePath() + "/conf/" + sslHostConf.getTruststoreFile());
            }
            if (isCertificateFromClasspath(sslHostConf.getCertificateChainFile())) {
                copyCertificateToConfDir(sslHostConf.getCertificateChainFile());
                sslHostConf.setCertificateChainFile(base.getAbsolutePath() + "/conf/" + sslHostConf.getCertificateChainFile());
            }
        });
        buildSslHostConfig.forEach(httpsConnector::addSslHostConfig);
        if (configuration.getDefaultSSLHostConfigName() != null) {
            httpsConnector.setProperty("defaultSSLHostConfigName", configuration.getDefaultSSLHostConfigName());
        }
        tomcat.getService().addConnector(httpsConnector);
        if (configuration.isSkipHttp()) {
            tomcat.setConnector(httpsConnector);
        }
    }
    for (final Connector c : configuration.getConnectors()) {
        tomcat.getService().addConnector(c);
    }
    if (!configuration.isSkipHttp() && !configuration.isSsl() && !configuration.getConnectors().isEmpty()) {
        tomcat.setConnector(configuration.getConnectors().iterator().next());
    }
    if (configuration.getUsers() != null) {
        for (final Map.Entry<String, String> user : configuration.getUsers().entrySet()) {
            tomcat.addUser(user.getKey(), user.getValue());
        }
    }
    if (configuration.getRoles() != null) {
        for (final Map.Entry<String, String> user : configuration.getRoles().entrySet()) {
            for (final String role : user.getValue().split(" *, *")) {
                tomcat.addRole(user.getKey(), role);
            }
        }
    }
    StreamSupport.stream(ServiceLoader.load(Meecrowave.InstanceCustomizer.class).spliterator(), false).peek(i -> {
        if (MeecrowaveAwareInstanceCustomizer.class.isInstance(i)) {
            MeecrowaveAwareInstanceCustomizer.class.cast(i).setMeecrowave(this);
        }
    }).sorted(Priotities::sortByPriority).forEach(c -> c.accept(tomcat));
    configuration.getInstanceCustomizers().forEach(c -> c.accept(tomcat));
    StreamSupport.stream(ServiceLoader.load(Meecrowave.ContextCustomizer.class).spliterator(), false).peek(i -> {
        if (MeecrowaveAwareContextCustomizer.class.isInstance(i)) {
            MeecrowaveAwareContextCustomizer.class.cast(i).setMeecrowave(this);
        }
    }).sorted(Priotities::sortByPriority).forEach(configuration::addGlobalContextCustomizer);
    beforeStart();
    if (configuration.isInitializeClientBus() && Cxfs.IS_PRESENT && !Cxfs.hasDefaultBus()) {
        clientBus = new ConfigurableBus();
        clientBus.initProviders(configuration, ofNullable(Thread.currentThread().getContextClassLoader()).orElseGet(ClassLoader::getSystemClassLoader));
        clientBus.addClientLifecycleListener();
    }
    try {
        if (!initialized) {
            tomcat.init();
        }
        tomcat.getHost().addLifecycleListener(event -> {
            if (!Host.class.isInstance(event.getSource())) {
                return;
            }
            broadcastHostEvent(event.getType(), Host.class.cast(event.getSource()));
        });
        tomcat.start();
    } catch (final LifecycleException e) {
        throw new IllegalStateException(e);
    }
    ofNullable(configuration.getPidFile()).ifPresent(pidFile -> {
        if (pidFile.getParentFile() != null && !pidFile.getParentFile().isDirectory() && !pidFile.getParentFile().mkdirs()) {
            throw new IllegalArgumentException("Can't create " + pidFile);
        }
        final String pid = ManagementFactory.getRuntimeMXBean().getName();
        final int at = pid.indexOf('@');
        try (final Writer w = new FileWriter(pidFile)) {
            w.write(at > 0 ? pid.substring(0, at) : pid);
        } catch (final IOException e) {
            throw new IllegalStateException("Can't write the pid in " + pid, e);
        }
    });
    if (configuration.isUseShutdownHook()) {
        hook = new Thread(() -> {
            // prevent close to remove the hook which would throw an exception
            hook = null;
            close();
        }, "meecrowave-stop-hook");
        Runtime.getRuntime().addShutdownHook(hook);
    }
    return this;
}
Also used : MeecrowaveContextConfig(org.apache.meecrowave.tomcat.MeecrowaveContextConfig) ProvidedLoader(org.apache.meecrowave.tomcat.ProvidedLoader) SessionCookieConfig(javax.servlet.SessionCookieConfig) SecurityCollection(org.apache.tomcat.util.descriptor.web.SecurityCollection) SecretKeySpec(javax.crypto.spec.SecretKeySpec) ServerSocket(java.net.ServerSocket) URLClassLoader(java.net.URLClassLoader) Host(org.apache.catalina.Host) StopListening(org.apache.meecrowave.api.StopListening) Map(java.util.Map) SAXParser(javax.xml.parsers.SAXParser) Path(java.nio.file.Path) Log4j2Log(org.apache.meecrowave.logging.tomcat.Log4j2Log) LifecycleException(org.apache.catalina.LifecycleException) Set(java.util.Set) CDI(javax.enterprise.inject.spi.CDI) CDIInstanceManager(org.apache.meecrowave.tomcat.CDIInstanceManager) StandardCharsets(java.nio.charset.StandardCharsets) WebBeansContext(org.apache.webbeans.config.WebBeansContext) ResourceFinder(org.apache.xbean.finder.ResourceFinder) Stream(java.util.stream.Stream) ConfigurableBus(org.apache.meecrowave.cxf.ConfigurableBus) JarScanFilter(org.apache.tomcat.JarScanFilter) Log4j2s(org.apache.meecrowave.logging.log4j2.Log4j2s) TomcatAutoInitializer(org.apache.meecrowave.tomcat.TomcatAutoInitializer) Log4j2Logger(org.apache.meecrowave.logging.jul.Log4j2Logger) Connector(org.apache.catalina.connector.Connector) StandardHost(org.apache.catalina.core.StandardHost) AnnotatedType(javax.enterprise.inject.spi.AnnotatedType) StandardCopyOption(java.nio.file.StandardCopyOption) ArrayList(java.util.ArrayList) CreationalContext(javax.enterprise.context.spi.CreationalContext) SecurityConstraint(org.apache.tomcat.util.descriptor.web.SecurityConstraint) ThreadLocalRandom(java.util.concurrent.ThreadLocalRandom) StreamSupport(java.util.stream.StreamSupport) SSLHostConfig(org.apache.tomcat.util.net.SSLHostConfig) ManagementFactory(java.lang.management.ManagementFactory) Properties(java.util.Properties) LogFacade(org.apache.meecrowave.logging.tomcat.LogFacade) Files(java.nio.file.Files) Cxfs(org.apache.meecrowave.cxf.Cxfs) FileOutputStream(java.io.FileOutputStream) IOException(java.io.IOException) ValueTransformer(org.apache.meecrowave.service.ValueTransformer) Field(java.lang.reflect.Field) File(java.io.File) ObjectRecipe(org.apache.xbean.recipe.ObjectRecipe) DefaultHandler(org.xml.sax.helpers.DefaultHandler) StringReader(java.io.StringReader) TreeMap(java.util.TreeMap) Paths(java.nio.file.Paths) Pipeline(org.apache.catalina.Pipeline) BeanManager(javax.enterprise.inject.spi.BeanManager) URL(java.net.URL) Lifecycle(org.apache.catalina.Lifecycle) Priotities(org.apache.meecrowave.service.Priotities) Catalina(org.apache.catalina.startup.Catalina) OWBJarScanner(org.apache.meecrowave.tomcat.OWBJarScanner) Http2Protocol(org.apache.coyote.http2.Http2Protocol) IO(org.apache.meecrowave.io.IO) LifecycleState(org.apache.catalina.LifecycleState) Collectors.toSet(java.util.stream.Collectors.toSet) Server(org.apache.catalina.Server) StartListening(org.apache.meecrowave.api.StartListening) Collections.emptyList(java.util.Collections.emptyList) Collection(java.util.Collection) StandardSessionIdGenerator(org.apache.catalina.util.StandardSessionIdGenerator) ServiceLoader(java.util.ServiceLoader) Substitutor(org.apache.meecrowave.lang.Substitutor) Objects(java.util.Objects) Base64(java.util.Base64) List(java.util.List) Realm(org.apache.catalina.Realm) SAXException(org.xml.sax.SAXException) Writer(java.io.Writer) StandardContext(org.apache.catalina.core.StandardContext) OWBAutoSetup(org.apache.meecrowave.openwebbeans.OWBAutoSetup) LoginConfig(org.apache.tomcat.util.descriptor.web.LoginConfig) SAXParserFactory(javax.xml.parsers.SAXParserFactory) Valve(org.apache.catalina.Valve) HashMap(java.util.HashMap) AtomicReference(java.util.concurrent.atomic.AtomicReference) Function(java.util.function.Function) Cipher(javax.crypto.Cipher) Option(org.apache.xbean.recipe.Option) BiPredicate(java.util.function.BiPredicate) ServletContainerInitializer(javax.servlet.ServletContainerInitializer) Log4j2Shutdown(org.apache.meecrowave.logging.log4j2.Log4j2Shutdown) Attributes(org.xml.sax.Attributes) Comparator.comparing(java.util.Comparator.comparing) ROOT(java.util.Locale.ROOT) InjectionTarget(javax.enterprise.inject.spi.InjectionTarget) CxfCdiAutoSetup(org.apache.meecrowave.cxf.CxfCdiAutoSetup) OutputStream(java.io.OutputStream) Collections.emptySet(java.util.Collections.emptySet) MalformedURLException(java.net.MalformedURLException) Log4j2LoggerFactory(org.apache.meecrowave.logging.openwebbeans.Log4j2LoggerFactory) Optional.ofNullable(java.util.Optional.ofNullable) LoggingAccessLogPattern(org.apache.meecrowave.tomcat.LoggingAccessLogPattern) FileWriter(java.io.FileWriter) Globals(org.apache.catalina.Globals) Configuration(org.apache.meecrowave.configuration.Configuration) StandardManager(org.apache.catalina.session.StandardManager) FileInputStream(java.io.FileInputStream) Context(org.apache.catalina.Context) Registry(org.apache.tomcat.util.modeler.Registry) Consumer(java.util.function.Consumer) Tomcat(org.apache.catalina.startup.Tomcat) Collectors.toList(java.util.stream.Collectors.toList) InputStream(java.io.InputStream) MalformedURLException(java.net.MalformedURLException) HashMap(java.util.HashMap) Substitutor(org.apache.meecrowave.lang.Substitutor) FileOutputStream(java.io.FileOutputStream) OutputStream(java.io.OutputStream) ArrayList(java.util.ArrayList) Log4j2Shutdown(org.apache.meecrowave.logging.log4j2.Log4j2Shutdown) Valve(org.apache.catalina.Valve) Http2Protocol(org.apache.coyote.http2.Http2Protocol) FileInputStream(java.io.FileInputStream) Log4j2Log(org.apache.meecrowave.logging.tomcat.Log4j2Log) FileOutputStream(java.io.FileOutputStream) File(java.io.File) Map(java.util.Map) TreeMap(java.util.TreeMap) HashMap(java.util.HashMap) LoggingAccessLogPattern(org.apache.meecrowave.tomcat.LoggingAccessLogPattern) Connector(org.apache.catalina.connector.Connector) Log4j2Logger(org.apache.meecrowave.logging.jul.Log4j2Logger) Log4j2LoggerFactory(org.apache.meecrowave.logging.openwebbeans.Log4j2LoggerFactory) FileWriter(java.io.FileWriter) Properties(java.util.Properties) ConfigurableBus(org.apache.meecrowave.cxf.ConfigurableBus) URL(java.net.URL) LifecycleException(org.apache.catalina.LifecycleException) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) Host(org.apache.catalina.Host) StandardHost(org.apache.catalina.core.StandardHost) IOException(java.io.IOException) SecurityConstraint(org.apache.tomcat.util.descriptor.web.SecurityConstraint) Pipeline(org.apache.catalina.Pipeline) StandardHost(org.apache.catalina.core.StandardHost) SSLHostConfig(org.apache.tomcat.util.net.SSLHostConfig) Writer(java.io.Writer) FileWriter(java.io.FileWriter)

Example 59 with Valve

use of org.apache.catalina.Valve in project Payara by payara.

the class DynamicWebServletRegistrationImpl method addValve.

/**
 * Constructs a <tt>Valve</tt> from the given <tt>valveDescriptor</tt>
 * and adds it to the <tt>Pipeline</tt> of this WebModule.
 * @param valveDescriptor the object containing the information to
 * create the valve.
 */
protected void addValve(org.glassfish.web.deployment.runtime.Valve valveDescriptor) {
    String valveName = valveDescriptor.getAttributeValue(WebPropertyContainer.NAME);
    String className = valveDescriptor.getAttributeValue(org.glassfish.web.deployment.runtime.Valve.CLASS_NAME);
    if (valveName == null) {
        logger.log(Level.WARNING, LogFacade.VALVE_MISSING_NAME, getName());
        return;
    }
    if (className == null) {
        logger.log(Level.WARNING, LogFacade.VALVE_MISSING_CLASS_NAME, new Object[] { valveName, getName() });
        return;
    }
    Object valve = loadInstance(className);
    if (valve == null) {
        return;
    }
    if (!(valve instanceof GlassFishValve) && !(valve instanceof Valve)) {
        logger.log(Level.WARNING, LogFacade.VALVE_CLASS_NAME_NO_VALVE, className);
        return;
    }
    WebProperty[] props = valveDescriptor.getWebProperty();
    if (props != null && props.length > 0) {
        for (WebProperty property : props) {
            String propName = getSetterName(property.getAttributeValue(WebProperty.NAME));
            if (propName != null && propName.length() != 0) {
                String value = property.getAttributeValue(WebProperty.VALUE);
                try {
                    Method method = valve.getClass().getMethod(propName, String.class);
                    method.invoke(valve, value);
                } catch (NoSuchMethodException ex) {
                    String msg = rb.getString(LogFacade.VALVE_SPECIFIED_METHOD_MISSING);
                    msg = MessageFormat.format(msg, new Object[] { propName, valveName, getName() });
                    logger.log(Level.SEVERE, msg, ex);
                } catch (Throwable t) {
                    String msg = rb.getString(LogFacade.VALVE_SETTER_CAUSED_EXCEPTION);
                    msg = MessageFormat.format(msg, new Object[] { propName, valveName, getName() });
                    logger.log(Level.SEVERE, msg, t);
                }
            } else {
                logger.log(Level.WARNING, LogFacade.VALVE_MISSING_PROPERTY_NAME, new Object[] { valveName, getName() });
                return;
            }
        }
    }
    if (valve instanceof Valve) {
        super.addValve((Valve) valve);
    } else if (valve instanceof GlassFishValve) {
        super.addValve((GlassFishValve) valve);
    }
}
Also used : WebProperty(org.glassfish.web.deployment.runtime.WebProperty) GlassFishValve(org.glassfish.web.valve.GlassFishValve) Valve(org.apache.catalina.Valve) Method(java.lang.reflect.Method) GlassFishValve(org.glassfish.web.valve.GlassFishValve)

Example 60 with Valve

use of org.apache.catalina.Valve in project tomcat by apache.

the class StandardHost method getValveNames.

// -------------------- JMX  --------------------
/**
 * @return the MBean Names of the Valves associated with this Host
 *
 * @exception Exception if an MBean cannot be created or registered
 */
public String[] getValveNames() throws Exception {
    Valve[] valves = this.getPipeline().getValves();
    String[] mbeanNames = new String[valves.length];
    for (int i = 0; i < valves.length; i++) {
        if (valves[i] instanceof JmxEnabled) {
            ObjectName oname = ((JmxEnabled) valves[i]).getObjectName();
            if (oname != null) {
                mbeanNames[i] = oname.toString();
            }
        }
    }
    return mbeanNames;
}
Also used : ErrorReportValve(org.apache.catalina.valves.ErrorReportValve) Valve(org.apache.catalina.Valve) JmxEnabled(org.apache.catalina.JmxEnabled) ObjectName(javax.management.ObjectName)

Aggregations

Valve (org.apache.catalina.Valve)72 ArrayList (java.util.ArrayList)15 Lifecycle (org.apache.catalina.Lifecycle)14 Container (org.apache.catalina.Container)13 LifecycleException (org.apache.catalina.LifecycleException)13 Pipeline (org.apache.catalina.Pipeline)11 ObjectName (javax.management.ObjectName)9 Realm (org.apache.catalina.Realm)8 AccessLogValve (org.apache.catalina.valves.AccessLogValve)8 Contained (org.apache.catalina.Contained)7 LifecycleListener (org.apache.catalina.LifecycleListener)7 Request (org.apache.catalina.connector.Request)7 ClusterValve (org.apache.catalina.ha.ClusterValve)7 RemoteIpValve (org.apache.catalina.valves.RemoteIpValve)7 Test (org.junit.Test)7 Context (org.apache.catalina.Context)6 JmxEnabled (org.apache.catalina.JmxEnabled)6 Response (org.apache.catalina.connector.Response)6 IOException (java.io.IOException)5 ContainerBase (org.apache.catalina.core.ContainerBase)5