001    /*
002     * Licensed to the Apache Software Foundation (ASF) under one
003     * or more contributor license agreements.  See the NOTICE file
004     * distributed with this work for additional information
005     * regarding copyright ownership.  The ASF licenses this file
006     * to you under the Apache License, Version 2.0 (the
007     * "License"); you may not use this file except in compliance
008     * with the License.  You may obtain a copy of the License at
009     *
010     *  http://www.apache.org/licenses/LICENSE-2.0
011     *
012     * Unless required by applicable law or agreed to in writing,
013     * software distributed under the License is distributed on an
014     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015     * KIND, either express or implied.  See the License for the
016     * specific language governing permissions and limitations
017     * under the License.
018     */
019    package org.apache.geronimo.tomcat.connector;
020    
021    import java.util.Map;
022    
023    import org.apache.geronimo.gbean.GBeanInfo;
024    import org.apache.geronimo.gbean.GBeanInfoBuilder;
025    import org.apache.geronimo.management.geronimo.WebManager;
026    import org.apache.geronimo.system.serverinfo.ServerInfo;
027    import org.apache.geronimo.tomcat.TomcatContainer;
028    
029    public class Http11NIOConnectorGBean extends AbstractHttp11ConnectorGBean implements Http11NIOProtocol{
030    
031        public Http11NIOConnectorGBean(String name,  Map initParams, String host, int port, TomcatContainer container, ServerInfo serverInfo) throws Exception {
032            super(name, initParams, "org.apache.coyote.http11.Http11NioProtocol", host, port, container, serverInfo);
033        }
034        
035        public int getDefaultPort() {
036            return 80; 
037        }  
038        
039        public String getGeronimoProtocol(){
040            return WebManager.PROTOCOL_HTTP;
041        }
042    
043        public int getAcceptorThreadCount() {
044            Object value = connector.getAttribute("acceptorThreadCount");
045            return value == null ? 1 : Integer.parseInt(value.toString());
046        }
047    
048        public int getAcceptorThreadPriority() {
049            Object value = connector.getAttribute("acceptorThreadCount");
050            return value == null ? Thread.NORM_PRIORITY : Integer.parseInt(value.toString());
051        }
052    
053        public boolean getCommand_line_options() {
054            Object value = connector.getAttribute("command-line-options");
055            return value == null ? true : new Boolean(value.toString()).booleanValue();
056        }
057    
058        public int getOomParachute() {
059            Object value = connector.getAttribute("oomParachute");
060            return value == null ? 1048576 : Integer.parseInt(value.toString());
061        }
062    
063        public int getPollerThreadCount() {
064            Object value = connector.getAttribute("pollerThreadCount");
065            return value == null ? 1 : Integer.parseInt(value.toString());
066        }
067        
068        public int getPollerThreadPriority() {
069            Object value = connector.getAttribute("pollerThreadCount");
070            return value == null ? Thread.NORM_PRIORITY : Integer.parseInt(value.toString());
071        }
072    
073        public int getProcessCache() {
074            Object value = connector.getAttribute("processCache");
075            return value == null ? 200 : Integer.parseInt(value.toString());
076        }
077    
078        public int getSelectorPool_maxSelectors() {
079            Object value = connector.getAttribute("selectorPool.maxSelectors");
080            return value == null ? 200 : Integer.parseInt(value.toString());
081        }
082    
083        public int getSelectorPool_maxSpareSelectors() {
084            Object value = connector.getAttribute("selectorPool.maxSpareSelectors");
085            return value == null ? -1 : Integer.parseInt(value.toString());
086        }
087    
088        public int getSelectorTimeout() {
089            Object value = connector.getAttribute("selectorTimeout");
090            return value == null ? 1000 : Integer.parseInt(value.toString());
091        }
092    
093        public int getSocket_appReadBufSize() {
094            Object value = connector.getAttribute("socket.appReadBufSize");
095            return value == null ? 8192 : Integer.parseInt(value.toString());
096        }
097    
098        public int getSocket_appWriteBufSize() {
099            Object value = connector.getAttribute("socket.appWriteBufSize");
100            return value == null ? 8192 : Integer.parseInt(value.toString());
101        }
102    
103        public int getSocket_bufferPool() {
104            Object value = connector.getAttribute("socket.bufferPool");
105            return value == null ? 500 : Integer.parseInt(value.toString());
106        }
107    
108        public int getSocket_bufferPoolSize() {
109            Object value = connector.getAttribute("socket.bufferPoolSize");
110            return value == null ? 104857600 : Integer.parseInt(value.toString());
111        }
112    
113        public boolean getSocket_directBuffer() {
114            Object value = connector.getAttribute("socket.directBuffer");
115            return value == null ? false : new Boolean(value.toString()).booleanValue();
116        }
117    
118        public int getSocket_eventCache() {
119            Object value = connector.getAttribute("socket.eventCache");
120            return value == null ? 500 : Integer.parseInt(value.toString());
121        }
122    
123        public int getSocket_keyCache() {
124            Object value = connector.getAttribute("socket.keyCache");
125            return value == null ? 500 : Integer.parseInt(value.toString());
126        }
127    
128        public boolean getSocket_ooBInline() {
129            Object value = connector.getAttribute("socket.ooBInline");
130            return value == null ? true : new Boolean(value.toString()).booleanValue();
131        }
132    
133        public int getSocket_performanceBandwidth() {
134            Object value = connector.getAttribute("socket.performanceBandwidth");
135            return value == null ? 1 : Integer.parseInt(value.toString());
136        }
137    
138        public int getSocket_performanceConnectionTime() {
139            Object value = connector.getAttribute("socket.performanceConnectionTime");
140            return value == null ? 1 : Integer.parseInt(value.toString());
141        }
142    
143        public int getSocket_performanceLatency() {
144            Object value = connector.getAttribute("socket.performanceLatency");
145            return value == null ? 0 : Integer.parseInt(value.toString());
146        }
147    
148        public int getSocket_processorCache() {
149            Object value = connector.getAttribute("socket.processorCache");
150            return value == null ? 500 : Integer.parseInt(value.toString());
151        }
152    
153        public int getSocket_rxBufSize() {
154            Object value = connector.getAttribute("socket.rxBufSize");
155            return value == null ? 25188 : Integer.parseInt(value.toString());
156        }
157    
158        public boolean getSocket_soKeepAlive() {
159            Object value = connector.getAttribute("socket.soKeepAlive");
160            return value == null ? false : new Boolean(value.toString()).booleanValue();
161        }
162    
163        public boolean getSocket_soLingerOn() {
164            Object value = connector.getAttribute("socket.soLingerOn");
165            return value == null ? true : new Boolean(value.toString()).booleanValue();
166        }
167    
168        public int getSocket_soLingerTime() {
169            Object value = connector.getAttribute("socket.soLingerTime");
170            return value == null ? 25 : Integer.parseInt(value.toString());
171        }
172    
173        public boolean getSocket_soReuseAddress() {
174            Object value = connector.getAttribute("socket.soReuseAddress");
175            return value == null ? true : new Boolean(value.toString()).booleanValue();
176        }
177    
178        public int getSocket_soTimeout() {
179            Object value = connector.getAttribute("socket.soTimeout");
180            return value == null ? 5000 : Integer.parseInt(value.toString());
181        }
182    
183        public int getSocket_soTrafficClass() {
184            Object value = connector.getAttribute("socket.soTrafficClass");
185            return value == null ? (0x04 | 0x08 | 0x010) : new Integer(value.toString()).intValue();
186        }
187    
188        public boolean getSocket_tcpNoDelay() {
189            Object value = connector.getAttribute("socket.tcpNoDelay");
190            return value == null ? false : new Boolean(value.toString()).booleanValue();
191        }
192    
193        public int getSocket_txBufSize() {
194            Object value = connector.getAttribute("socket.txBufSize");
195            return value == null ? 43800 : Integer.parseInt(value.toString());
196        }
197    
198        public boolean getUseComet() {
199            Object value = connector.getAttribute("useComet");
200            return value == null ? true : new Boolean(value.toString()).booleanValue();
201        }
202    
203        public boolean getUseExecutor() {
204            Object value = connector.getAttribute("useExecutor");
205            return value == null ? true : new Boolean(value.toString()).booleanValue();
206        }
207    
208        public boolean getUseSendfile() {
209            Object value = connector.getAttribute("useSendfile");
210            return value == null ? true : new Boolean(value.toString()).booleanValue();
211        }
212    
213        public void setAcceptorThreadCount(int acceptorThreadCount) {
214            connector.setAttribute("acceptorThreadCount", new Integer(acceptorThreadCount));
215        }
216    
217        public void setAcceptorThreadPriority(int acceptorThreadPriority) {
218            connector.setAttribute("acceptorThreadPriority", new Integer(acceptorThreadPriority));
219        }
220    
221        public void setCommand_line_options(boolean command_line_options) {
222            connector.setAttribute("command-line-options", new Boolean(command_line_options));
223        }
224    
225        public void setOomParachute(int oomParachute) {
226            connector.setAttribute("oomParachute", new Integer(oomParachute));
227        }
228    
229        public void setPollerThreadCount(int pollerThreadCount) {
230            connector.setAttribute("pollerThreadCount", new Integer(pollerThreadCount));
231        }
232        
233        public void setPollerThreadPriority(int pollerThreadPriority) {
234            connector.setAttribute("pollerThreadPriority", new Integer(pollerThreadPriority));
235        }
236    
237        public void setProcessCache(int processCache) {
238            connector.setAttribute("processCache", new Integer(processCache));
239        }
240    
241        public void setSelectorPool_maxSelectors(int selectorPool_maxSelectors) {
242            connector.setAttribute("selectorPool.maxSelectors", new Integer(selectorPool_maxSelectors));
243        }
244    
245        public void setSelectorPool_maxSpareSelectors(int selectorPool_maxSpareSelectors) {
246            connector.setAttribute("selectorPool.maxSpareSelectors", new Integer(selectorPool_maxSpareSelectors));
247        }
248    
249        public void setSelectorTimeout(int selectorTimeout) {
250            connector.setAttribute("selectorTimeout", new Integer(selectorTimeout));
251        }
252    
253        public void setSocket_appReadBufSize(int socket_appReadBufSize) {
254            connector.setAttribute("socket.appReadBufSize", new Integer(socket_appReadBufSize));
255        }
256    
257        public void setSocket_appWriteBufSize(int socket_appWriteBufSize) {
258            connector.setAttribute("socket.appWriteBufSize", new Integer(socket_appWriteBufSize));
259        }
260    
261        public void setSocket_bufferPool(int socket_bufferPool) {
262            connector.setAttribute("socket.bufferPool", new Integer(socket_bufferPool));
263        }
264    
265        public void setSocket_bufferPoolSize(int socket_bufferPoolSize) {
266            connector.setAttribute("socket.bufferPoolSize", new Integer(socket_bufferPoolSize));
267        }
268    
269        public void setSocket_directBuffer(boolean socket_directBuffer) {
270            connector.setAttribute("socket.directBuffer", new Boolean(socket_directBuffer));
271        }
272    
273        public void setSocket_eventCache(int socket_eventCache) {
274            connector.setAttribute("socket.eventCache", new Integer(socket_eventCache));
275        }
276    
277        public void setSocket_keyCache(int socket_keyCache) {
278            connector.setAttribute("socket.keyCache", new Integer(socket_keyCache));
279        }
280    
281        public void setSocket_ooBInline(boolean socket_ooBInline) {
282            connector.setAttribute("socket.ooBInline", new Boolean(socket_ooBInline));
283        }
284    
285        public void setSocket_performanceBandwidth(int socket_performanceBandwidth) {
286            connector.setAttribute("socket.performanceBandwidth", new Integer(socket_performanceBandwidth));
287        }
288    
289        public void setSocket_performanceConnectionTime(int socket_performanceConnectionTime) {
290            connector.setAttribute("socket.performanceConnectionTime", new Integer(socket_performanceConnectionTime));
291        }
292    
293        public void setSocket_performanceLatency(int socket_performanceLatency) {
294            connector.setAttribute("socket.performanceLatency", new Integer(socket_performanceLatency));
295        }
296    
297        public void setSocket_processorCache(int socket_processorCache) {
298            connector.setAttribute("socket.processorCache", new Integer(socket_processorCache));
299        }
300    
301        public void setSocket_rxBufSize(int socket_rxBufSize) {
302            connector.setAttribute("socket.rxBufSize", new Integer(socket_rxBufSize));
303        }
304    
305        public void setSocket_soKeepAlive(boolean socket_soKeepAlive) {
306            connector.setAttribute("socket.soKeepAlive", new Boolean(socket_soKeepAlive));
307        }
308    
309        public void setSocket_soLingerOn(boolean socket_soLingerOn) {
310            connector.setAttribute("socket.soLingerOn", new Boolean(socket_soLingerOn));
311        }
312    
313        public void setSocket_soLingerTime(int socket_soLingerTime) {
314            connector.setAttribute("socket.soLingerTime", new Integer(socket_soLingerTime));
315        }
316    
317        public void setSocket_soReuseAddress(boolean socket_soReuseAddress) {
318            connector.setAttribute("socket.soReuseAddress", new Boolean(socket_soReuseAddress));
319        }
320    
321        public void setSocket_soTimeout(int socket_soTimeout) {
322            connector.setAttribute("socket.soTimeout", new Integer(socket_soTimeout));
323        }
324    
325        public void setSocket_soTrafficClass(int socket_soTrafficClass) {
326            connector.setAttribute("socket.soTrafficClass", new Integer(socket_soTrafficClass));
327        }
328    
329        public void setSocket_tcpNoDelay(boolean socket_tcpNoDelay) {
330            connector.setAttribute("socket.tcpNoDelay", new Boolean(socket_tcpNoDelay));
331        }
332    
333        public void setSocket_txBufSize(int socket_txBufSize) {
334            connector.setAttribute("socket.txBufSize", new Integer(socket_txBufSize));
335        }
336    
337        public void setUseComet(boolean useComet) {
338            connector.setAttribute("useExecutor", new Boolean(useComet));
339        }
340    
341        public void setUseExecutor(boolean useExecutor) {
342            connector.setAttribute("useExecutor", new Boolean(useExecutor));
343        }
344    
345        public void setUseSendfile(boolean useSendfile) {
346            connector.setAttribute("useSendfile", new Boolean(useSendfile));
347        }
348        public static final GBeanInfo GBEAN_INFO;
349    
350        static {
351            GBeanInfoBuilder infoFactory = GBeanInfoBuilder.createStatic("Tomcat Connector HTTP NIO", Http11NIOConnectorGBean.class, AbstractHttp11ConnectorGBean.GBEAN_INFO);
352            infoFactory.addInterface(Http11NIOProtocol.class, 
353                    new String[] {
354                        "useSendfile", 
355                        "useExecutor", 
356                        "acceptorThreadCount", 
357                        "pollerThreadCount", 
358                        "pollerThreadPriority", 
359                        "acceptorThreadPriority", 
360                        "selectorTimeout", 
361                        "useComet", 
362                        "processCache", 
363                        "socket_directBuffer", 
364                        "socket_rxBufSize", 
365                        "socket_txBufSize", 
366                        "socket_appReadBufSize", 
367                        "socket_appWriteBufSize", 
368                        "socket_processorCache", 
369                        "socket_bufferPoolSize", 
370                        "socket_keyCache", 
371                        "socket_eventCache", 
372                        "socket_tcpNoDelay", 
373                        "socket_soKeepAlive", 
374                        "socket_ooBInline", 
375                        "socket_soReuseAddress", 
376                        "socket_soLingerOn", 
377                        "socket_soLingerTime", 
378                        "socket_soTimeout", 
379                        "socket_soTrafficClass", 
380                        "socket_performanceConnectionTime", 
381                        "socket_performanceLatency", 
382                        "socket_performanceBandwidth", 
383                        "selectorPool_maxSelectors", 
384                        "selectorPool_maxSpareSelectors", 
385                        "command_line_options", 
386                        "oomParachute"
387                    },
388                    new String[] {
389                        "useSendfile", 
390                        "useExecutor", 
391                        "acceptorThreadCount", 
392                        "pollerThreadCount", 
393                        "pollerThreadPriority", 
394                        "acceptorThreadPriority", 
395                        "selectorTimeout", 
396                        "useComet", 
397                        "processCache", 
398                        "socket_directBuffer", 
399                        "socket_rxBufSize", 
400                        "socket_txBufSize", 
401                        "socket_appReadBufSize", 
402                        "socket_appWriteBufSize", 
403                        "socket_processorCache", 
404                        "socket_bufferPoolSize", 
405                        "socket_keyCache", 
406                        "socket_eventCache", 
407                        "socket_tcpNoDelay", 
408                        "socket_soKeepAlive", 
409                        "socket_ooBInline", 
410                        "socket_soReuseAddress", 
411                        "socket_soLingerOn", 
412                        "socket_soLingerTime", 
413                        "socket_soTimeout", 
414                        "socket_soTrafficClass", 
415                        "socket_performanceConnectionTime", 
416                        "socket_performanceLatency", 
417                        "socket_performanceBandwidth", 
418                        "selectorPool_maxSelectors", 
419                        "selectorPool_maxSpareSelectors", 
420                        "command_line_options", 
421                        "oomParachute",
422    
423                    }
424            );
425            infoFactory.setConstructor(new String[] { "name", "initParams", "host", "port", "TomcatContainer", "ServerInfo"});
426            GBEAN_INFO = infoFactory.getBeanInfo();
427        }
428        
429        public static GBeanInfo getGBeanInfo() {
430            return GBEAN_INFO;
431        }
432    
433    }