当前位置: 首页 > news >正文

视频发布播放网站建设网站建设需要什么研究条件

视频发布播放网站建设,网站建设需要什么研究条件,wordpress能上传软件吗,北京工程造价信息网springboot整合undertow服务器的源码从老生常谈的createWebServer方法谈起。spring会在生成所有bean后到创建web容器#xff0c;此时会到容器找到ServletWebServerFactory接口bean#xff0c;spring会根据引入的框架确定生成的ServletWebServerFactory#xff0c;我们在mave…springboot整合undertow服务器的源码从老生常谈的createWebServer方法谈起。spring会在生成所有bean后到创建web容器此时会到容器找到ServletWebServerFactory接口beanspring会根据引入的框架确定生成的ServletWebServerFactory我们在maven中引入了undertow后由UndertowServletWebServerFactory实现。 private void createWebServer() {WebServer webServer this.webServer;ServletContext servletContext getServletContext();if (webServer null servletContext null) {ServletWebServerFactory factory getWebServerFactory();this.webServer factory.getWebServer(getSelfInitializer());getBeanFactory().registerSingleton(webServerGracefulShutdown,new WebServerGracefulShutdownLifecycle(this.webServer));getBeanFactory().registerSingleton(webServerStartStop,new WebServerStartStopLifecycle(this, this.webServer));}else if (servletContext ! null) {try {getSelfInitializer().onStartup(servletContext);}catch (ServletException ex) {throw new ApplicationContextException(Cannot initialize servlet context, ex);}}initPropertySources();}UndertowServletWebServerFactory类的getWebServer会创建WebServer。 public WebServer getWebServer(ServletContextInitializer... initializers) {Builder builder this.delegate.createBuilder(this);DeploymentManager manager createManager(initializers);return getUndertowWebServer(builder, manager, getPort());}先用默认的配置构建Builder对象再使用读取的配置。 Builder createBuilder(AbstractConfigurableWebServerFactory factory) {Ssl ssl factory.getSsl();InetAddress address factory.getAddress();int port factory.getPort();Builder builder Undertow.builder();if (this.bufferSize ! null) {builder.setBufferSize(this.bufferSize);}if (this.ioThreads ! null) {builder.setIoThreads(this.ioThreads);}if (this.workerThreads ! null) {builder.setWorkerThreads(this.workerThreads);}if (this.directBuffers ! null) {builder.setDirectBuffers(this.directBuffers);}if (ssl ! null ssl.isEnabled()) {new SslBuilderCustomizer(factory.getPort(), address, ssl, factory.getSslStoreProvider()).customize(builder);Http2 http2 factory.getHttp2();if (http2 ! null) {builder.setServerOption(UndertowOptions.ENABLE_HTTP2, http2.isEnabled());}}else {builder.addHttpListener(port, (address ! null) ? address.getHostAddress() : 0.0.0.0);}builder.setServerOption(UndertowOptions.SHUTDOWN_TIMEOUT, 0);for (UndertowBuilderCustomizer customizer : this.builderCustomizers) {customizer.customize(builder);}return builder;}之后再注册Servlet和Filter过滤器到容器中。 public void deploy() {final DeploymentInfo deploymentInfo originalDeployment.clone();if (deploymentInfo.getServletStackTraces() ServletStackTraces.ALL) {UndertowServletLogger.REQUEST_LOGGER.servletStackTracesAll(deploymentInfo.getDeploymentName());}deploymentInfo.validate();final DeploymentImpl deployment new DeploymentImpl(this, deploymentInfo, servletContainer);this.deployment deployment;final ServletContextImpl servletContext new ServletContextImpl(servletContainer, deployment);deployment.setServletContext(servletContext);handleExtensions(deploymentInfo, servletContext);final ListThreadSetupHandler setup new ArrayList();setup.add(ServletRequestContextThreadSetupAction.INSTANCE);setup.add(new ContextClassLoaderSetupAction(deploymentInfo.getClassLoader()));setup.addAll(deploymentInfo.getThreadSetupActions());deployment.setThreadSetupActions(setup);deployment.getServletPaths().setWelcomePages(deploymentInfo.getWelcomePages());if (deploymentInfo.getDefaultEncoding() ! null) {deployment.setDefaultCharset(Charset.forName(deploymentInfo.getDefaultEncoding()));}if(deploymentInfo.getDefaultRequestEncoding() ! null) {deployment.setDefaultRequestCharset(Charset.forName(deploymentInfo.getDefaultRequestEncoding()));} else if (deploymentInfo.getDefaultEncoding() ! null) {deployment.setDefaultRequestCharset(Charset.forName(deploymentInfo.getDefaultEncoding()));}if(deploymentInfo.getDefaultResponseEncoding() ! null) {deployment.setDefaultResponseCharset(Charset.forName(deploymentInfo.getDefaultResponseEncoding()));} else if (deploymentInfo.getDefaultEncoding() ! null) {deployment.setDefaultResponseCharset(Charset.forName(deploymentInfo.getDefaultEncoding()));}handleDeploymentSessionConfig(deploymentInfo, servletContext);deployment.setSessionManager(deploymentInfo.getSessionManagerFactory().createSessionManager(deployment));deployment.getSessionManager().setDefaultSessionTimeout(deploymentInfo.getDefaultSessionTimeout());try {deployment.createThreadSetupAction(new ThreadSetupHandler.ActionVoid, Object() {Overridepublic Void call(HttpServerExchange exchange, Object ignore) throws Exception {final ApplicationListeners listeners createListeners();listeners.start();deployment.setApplicationListeners(listeners);//now create the servlets and filters that we know about. We can still get more latercreateServletsAndFilters(deployment, deploymentInfo);//first initialize the temp dirinitializeTempDir(servletContext, deploymentInfo);//then run the SCIsfor (final ServletContainerInitializerInfo sci : deploymentInfo.getServletContainerInitializers()) {final InstanceHandle? extends ServletContainerInitializer instance sci.getInstanceFactory().createInstance();try {instance.getInstance().onStartup(sci.getHandlesTypes(), servletContext);} finally {instance.release();}}deployment.getSessionManager().registerSessionListener(new SessionListenerBridge(deployment, listeners, servletContext));for(SessionListener listener : deploymentInfo.getSessionListeners()) {deployment.getSessionManager().registerSessionListener(listener);}initializeErrorPages(deployment, deploymentInfo);initializeMimeMappings(deployment, deploymentInfo);listeners.contextInitialized();//runHttpHandler wrappedHandlers ServletDispatchingHandler.INSTANCE;wrappedHandlers wrapHandlers(wrappedHandlers, deploymentInfo.getInnerHandlerChainWrappers());wrappedHandlers new RedirectDirHandler(wrappedHandlers, deployment.getServletPaths());if(!deploymentInfo.isSecurityDisabled()) {HttpHandler securityHandler setupSecurityHandlers(wrappedHandlers);wrappedHandlers new PredicateHandler(DispatcherTypePredicate.REQUEST, securityHandler, wrappedHandlers);}HttpHandler outerHandlers wrapHandlers(wrappedHandlers, deploymentInfo.getOuterHandlerChainWrappers());wrappedHandlers new PredicateHandler(DispatcherTypePredicate.REQUEST, outerHandlers, wrappedHandlers);wrappedHandlers handleDevelopmentModePersistentSessions(wrappedHandlers, deploymentInfo, deployment.getSessionManager(), servletContext);MetricsCollector metrics deploymentInfo.getMetricsCollector();if(metrics ! null) {wrappedHandlers new MetricsChainHandler(wrappedHandlers, metrics, deployment);}if( deploymentInfo.getCrawlerSessionManagerConfig() ! null ) {wrappedHandlers new CrawlerSessionManagerHandler(deploymentInfo.getCrawlerSessionManagerConfig(), wrappedHandlers);}final ServletInitialHandler servletInitialHandler SecurityActions.createServletInitialHandler(deployment.getServletPaths(), wrappedHandlers, deployment, servletContext);HttpHandler initialHandler wrapHandlers(servletInitialHandler, deployment.getDeploymentInfo().getInitialHandlerChainWrappers());initialHandler new HttpContinueReadHandler(initialHandler);if(deploymentInfo.getUrlEncoding() ! null) {initialHandler Handlers.urlDecodingHandler(deploymentInfo.getUrlEncoding(), initialHandler);}deployment.setInitialHandler(initialHandler);deployment.setServletHandler(servletInitialHandler);deployment.getServletPaths().invalidate(); //make sure we have a fresh set of servlet pathsservletContext.initDone();return null;}}).call(null, null);} catch (Exception e) {throw new RuntimeException(e);}//any problems with the paths wont get detected until the data is initialize//so we force initialization heredeployment.getServletPaths().initData();for(ServletContextListener listener : deploymentInfo.getDeploymentCompleteListeners()) {listener.contextInitialized(new ServletContextEvent(servletContext));}state State.DEPLOYED;}到WebServer接口的start()方法就会启动undertow服务器了本质就是通过XNIO框架监听服务器端口号接收请求并处理。处理请求时的io线程模型分数据处理线程和业务处理线程。 public synchronized void start() {UndertowLogger.ROOT_LOGGER.infof(starting server: %s, Version.getFullVersionString());xnio Xnio.getInstance(Undertow.class.getClassLoader());channels new ArrayList();try {if (internalWorker) {worker xnio.createWorker(OptionMap.builder().set(Options.WORKER_IO_THREADS, ioThreads).set(Options.CONNECTION_HIGH_WATER, 1000000).set(Options.CONNECTION_LOW_WATER, 1000000).set(Options.WORKER_TASK_CORE_THREADS, workerThreads).set(Options.WORKER_TASK_MAX_THREADS, workerThreads).set(Options.TCP_NODELAY, true).set(Options.CORK, true).addAll(workerOptions).getMap());}OptionMap socketOptions OptionMap.builder().set(Options.WORKER_IO_THREADS, worker.getIoThreadCount()).set(Options.TCP_NODELAY, true).set(Options.REUSE_ADDRESSES, true).set(Options.BALANCING_TOKENS, 1).set(Options.BALANCING_CONNECTIONS, 2).set(Options.BACKLOG, 1000).addAll(this.socketOptions).getMap();OptionMap serverOptions OptionMap.builder().set(UndertowOptions.NO_REQUEST_TIMEOUT, 60 * 1000).addAll(this.serverOptions).getMap();ByteBufferPool buffers this.byteBufferPool;if (buffers null) {buffers new DefaultByteBufferPool(directBuffers, bufferSize, -1, 4);}listenerInfo new ArrayList();for (ListenerConfig listener : listeners) {UndertowLogger.ROOT_LOGGER.debugf(Configuring listener with protocol %s for interface %s and port %s, listener.type, listener.host, listener.port);final HttpHandler rootHandler listener.rootHandler ! null ? listener.rootHandler : this.rootHandler;OptionMap socketOptionsWithOverrides OptionMap.builder().addAll(socketOptions).addAll(listener.overrideSocketOptions).getMap();......if (listener.type ListenerType.HTTP) {HttpOpenListener openListener new HttpOpenListener(buffers, undertowOptions);HttpHandler handler rootHandler;if (http2) {handler new Http2UpgradeHandler(handler);}openListener.setRootHandler(handler);final ChannelListenerStreamConnection finalListener;if (listener.useProxyProtocol) {finalListener new ProxyProtocolOpenListener(openListener, null, buffers, OptionMap.EMPTY);} else {finalListener openListener;}ChannelListenerAcceptingChannelStreamConnection acceptListener ChannelListeners.openListenerAdapter(finalListener);AcceptingChannel? extends StreamConnection server worker.createStreamConnectionServer(new InetSocketAddress(Inet4Address.getByName(listener.host), listener.port), acceptListener, socketOptionsWithOverrides);server.resumeAccepts();channels.add(server);listenerInfo.add(new ListenerInfo(http, server.getLocalAddress(), openListener, null, server));} ......}
http://www.dnsts.com.cn/news/178514.html

相关文章:

  • 网站开发毕业设计说明书范文广西智能网站建设平台
  • 博客网站模板seo网站优化公司
  • 毕设源码网站中交通力建设股份有限公司网站
  • 烟台住房和城乡建设局网站网站更改了资料 百度什么时侯来抓取
  • 手机网站 代码格式wordpress打开要10秒
  • 深圳福田区区住房和建设局网站电子商务网站建设题库及答案
  • 网站建设中ftp起什么作用wordpress博客搬家主页404
  • 建设网络道德教育网站不包括创建网站用什么语言
  • seo推广联系方式乐陵德州seo公司
  • 昆明市住房和城乡建设局网站上看的wordpress加载相册慢
  • 生成静态页面网站源码工程合同范本通用版
  • 玄武区网站建设手机访问wordpress网站卡
  • 大型网站建设公司 北京网页设计公司哪家效果好
  • 重庆巴南区网站开发公司网站结构布局
  • 展示型网站功能有建设网站的软件吗
  • 做展示类网站万网账号跟网站有关系吗
  • 长沙哪里可以做网站成绩查询网站怎么做
  • 济南网站建设李尚荣网站开发教程百度云
  • 如何解决网站兼容性问题网站建设ppt方案
  • 狮岭做包包的网站事业单位网站建设的作用
  • 可以免费学编程的网站怎么设置iis默认网站
  • 萝岗微网站建设做彩票网站需要什么技术
  • 现在还有人做网站吗品牌建设之道有哪些
  • 方太网站谁做的亚马逊网站链接
  • 阆中网站建设只做网站不做app
  • 百度打网站名称就显示 如何做咸阳企业网站建设
  • 徐闻住房与城乡建设局网站做化工哪个网站好
  • 北滘企业网站开发个人网站做电影网站
  • 一个网站的二级目录在另一台服务器上_怎么做网站模板管理系统
  • 用wordpress做的网站什么叫网站规划