/* * Copyright (c) 2008, Rickard Öberg. All Rights Reserved. * Copyright (c) 2011, Paul Merlin. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.qi4j.library.http; import org.qi4j.api.common.Optional; import org.qi4j.api.common.UseDefaults; import org.qi4j.api.configuration.ConfigurationComposite; import org.qi4j.api.property.Property; import org.qi4j.library.constraints.annotation.GreaterThan; import org.qi4j.library.constraints.annotation.Range; /** * Configuration of the JettyService. * * The only mandatory property is port. * Other properties are provided with a sensible default respecting the original Jetty defaults. */ // START SNIPPET: config public interface JettyConfiguration extends ConfigurationComposite { // ## Connector Configuration Properties ################################## /** * @return Port on which the {@link JettyService} will listen for incomming requests. */ @Range( min = 0, max = 65535 ) Property<Integer> port(); /** * Name or ip representing the interface on which the {@link JettyService} will bind the server socket. * * If not set the {@link JettyService} will be bound to all interfaces. * * @return Name or ip representing the interface on which the {@link JettyService} will bind the server socket. */ @Optional Property<String> hostName(); /** * Defaults to false. * * @return If the {@link JettyService} should collect statistics. */ @UseDefaults Property<Boolean> statistics(); /** * @return Maximum Idle time for connections in milliseconds. */ @Optional Property<Integer> maxIdleTime(); /** * @return Maximum Idle time for connections in milliseconds when resources are low. */ @Optional Property<Integer> lowResourceMaxIdleTime(); /** * @return The size of the buffer to be used for request headers in bytes. */ @Optional @GreaterThan( 0 ) Property<Integer> requestHeaderSize(); /** * Size of the content buffer for receiving requests in bytes. * * These buffers are only used for active connections that have requests with bodies that will not fit within the * header buffer. * * @return The size of the content buffer for receiving requests in bytes. */ @Optional @GreaterThan( 0 ) Property<Integer> requestBufferSize(); /** * @return The size of the buffer to be used for response headers in bytes. */ @Optional @GreaterThan( 0 ) Property<Integer> responseHeaderSize(); /** * Size of the content buffer for sending responses in bytes. * * These buffers are only used for active connections that are sending responses with bodies that will not fit * within the header buffer. * * @return The size of the content buffer for sending responses in bytes. */ @Optional @GreaterThan( 0 ) Property<Integer> responseBufferSize(); // ## ServletContext Configuration Properties ############################# /** * url prefix of the {@link JettyService}. * * Defaulted to "/". * * @return The url prefix of the {@link JettyService}. */ @Optional Property<String> contextPath(); @Optional Property<String> resourcePath(); /** * Virtual hosts for this JettyService. * * Coma separated list of hostnames. * * @return Virtual hosts for this JettyService. */ @Optional Property<String> virtualHosts(); /** * Welcome files names for this JettyService. * * Coma separated list of welcome files. * Defaulted to index.html. * * @return Welcome files names for this JettyService. */ @Optional Property<String> welcomeFiles(); /** * @return Maximum Form content size. */ @Optional @GreaterThan( 0 ) Property<Integer> maxFormContentSize(); // ## Server Configuration Properties ##################################### /** * @return If {@link JettyService} populates http header with server date. */ @Optional Property<Boolean> sendDateHeader(); /** * @return If {@link JettyService} expose it's implementation version. */ @Optional Property<Boolean> sendServerVersion(); /** * Timeout use to wait for active requests to terminate on shutdown in milliseconds. * * Jetty will stop gracefully only if this property is set. * * @return Timeout use to wait for active requests to terminate on shutdown in milliseconds. */ @Optional @GreaterThan( 0 ) Property<Integer> gracefullShutdownTimeout(); } // END SNIPPET: config