读书人

grizzly初探(2)

发布时间: 2014-01-22 00:03:39 作者: rapoo

grizzly初探(二)
前段时间写了grizzly初探。
由于使用的是SimpleServer

/** * only 4 demo *  * @param config */@Deprecatedpublic HandlerFactory(ServerConfiguration config) {// 加载MainHandler,映射为/time(http://127.0.0.1:7456/time)try {HandlerManager.addAndSet(config,"/time.cst",createHandler("com.born.test.handler.TimeHandler",Charsets.UTF8_CHARSET));} catch (InstantiationException | IllegalAccessException| ClassNotFoundException | NoSuchMethodException| SecurityException | IllegalArgumentException| InvocationTargetException e) {log.error(e.getMessage(), e);}}//.../** * 通过包.类名初始化handler *  * @param className *            类名 * @param requestURIEncoding *            请求编码 * @return HttpHandler实例 * @throws InstantiationException * @throws IllegalAccessException * @throws ClassNotFoundException * @throws SecurityException * @throws NoSuchMethodException * @throws InvocationTargetException * @throws IllegalArgumentException */private HttpHandler createHandler(String className,Charset requestURIEncoding) throws InstantiationException,IllegalAccessException, ClassNotFoundException,NoSuchMethodException, SecurityException, IllegalArgumentException,InvocationTargetException {//获取cpu线程数,这里是demo,实际把这个放在方法外面int processorsBasedThreadCount = Runtime.getRuntime().availableProcessors();//使用线程池(高priority模式),注意setMaxPoolSize,不用开得太大ThreadPoolConfig highPriorityThreadPoolConfig = ThreadPoolConfig.defaultConfig().copy().setPoolName(className).setCorePoolSize(processorsBasedThreadCount > 5 ? processorsBasedThreadCount: 5).setMaxPoolSize(2500).setMemoryManager(MemoryManager.DEFAULT_MEMORY_MANAGER).setPriority(Thread.MAX_PRIORITY);//创建线程池ExecutorService highPriorityExecutorService = GrizzlyExecutorService.createInstance(highPriorityThreadPoolConfig);//反射有参构造函数Class<?> calss = Class.forName(className);Class<?>[] paramTypes = { ExecutorService.class };Object[] params = { highPriorityExecutorService };Constructor<?> con = calss.getConstructor(paramTypes);HttpHandler temp = (HttpHandler) con.newInstance(params);//设置编码格式temp.setRequestURIEncoding(requestURIEncoding);return temp;}

大约就是这样了……阿门

读书人网 >Web前端

热点推荐