package org.jboss.as.undertow.handlers; import io.undertow.server.HttpHandler; import io.undertow.server.handlers.RequestLimitingHandler; import org.jboss.as.controller.AttributeDefinition; import org.jboss.as.controller.OperationContext; import org.jboss.as.controller.OperationFailedException; import org.jboss.as.controller.SimpleAttributeDefinition; import org.jboss.as.controller.SimpleAttributeDefinitionBuilder; import org.jboss.as.undertow.AbstractHandlerResourceDefinition; import org.jboss.dmr.ModelNode; import org.jboss.dmr.ModelType; /** * @author <a href="mailto:tomaz.cerar@redhat.com">Tomaz Cerar</a> (c) 2013 Red Hat Inc. */ public class ConnectionLimitHandler extends AbstractHandlerResourceDefinition { private static SimpleAttributeDefinition HIGH_WATER_MARK = new SimpleAttributeDefinitionBuilder("high-water-mark", ModelType.INT) .setAllowExpression(true) .setAllowNull(true) .build(); private static SimpleAttributeDefinition LOW_WATER_MARK = new SimpleAttributeDefinitionBuilder("low-water-mark", ModelType.INT) .setAllowExpression(true) .setAllowNull(true) .build(); /* <connection-limit high-water-mark="100" low-water-mark="50"/> */ public ConnectionLimitHandler() { super("connection-limit"); } @Override public AttributeDefinition[] getAttributes() { return new AttributeDefinition[]{HIGH_WATER_MARK, LOW_WATER_MARK}; } @Override public HttpHandler createHandler(HttpHandler next, OperationContext context, ModelNode model) throws OperationFailedException { return new RequestLimitingHandler(1000, next); } }