范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

从零开始认识Dubbo

  [TOC]
  1.Dubbo是什么
  http://dubbo.apache.org/zh-cn/index.html
  Apache Dubbo  是一款高性能Java RPC框架。
  Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者与消费者的方式在dubbo上注册)其核心部分包含:远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及"请求-响应"模式的信息交换方式。集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。
  2.Dubbo能做什么透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。
  Dubbo采用全spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。
  3.Dubbo架构
  节点角色说明:
  Provider: 暴露服务的服务提供方。
  Consumer: 调用远程服务的服务消费方。
  Registry: 服务注册与发现的注册中心。
  Monitor: 统计服务的调用次调和调用时间的监控中心。
  Container: 服务运行容器。
  调用关系说明:服务容器负责启动,加载,运行服务提供者。服务提供者在启动时,向注册中心注册自己提供的服务。服务消费者在启动时,向注册中心订阅自己所需的服务。注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
  4.Dubbo的使用方法
  Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。如果不想使用Spring配置,可以通过API的方式进行调用(注解式,不推荐使用)
  下载安装zookeeper注册中心(不建议使用multicast)
  1.Windows
  下载地址:https://www.apache.org/dyn/closer.cgi/zookeeper/
  使用方法:下载解压即可,进入解压目录运行zkServer.cmd启动注册服务中心
  截图:
  2.MacOS
  下载地址:https://www.apache.org/dyn/closer.cgi/zookeeper/
  使用方法:下载解压即可,进入解压目录运行zkServer.sh start启动注册服务中心
  3.Linux
  下载地址:https://www.apache.org/dyn/closer.cgi/zookeeper/
  使用方法:下载解压即可,进入解压目录运行zkServer.sh start启动注册服务中心
  服务提供者
  1.定义服务接口(该接口需单独打包,在服务提供方和消费方共享)
  DemoService.javapackage org.apache.dubbo.demo;  public interface DemoService {  String sayHello(String name); }
  2.服务提供方实现接口:(对服务消费方隐藏实现)
  DemoServiceImpl.javapackage org.apache.dubbo.demo.provider;   import org.apache.dubbo.demo.DemoService;   public class DemoServiceImpl implements DemoService {  public String sayHello(String name) {  return "Hello " + name;  } }
  3.用Spring配置声明暴露服务:
  dubbo-provider.xml:?xml version="1.0" encoding="UTF-8"?>                                
  4.加载Spring配置,启动服务:
  Provider.java:import org.springframework.context.support.ClassPathXmlApplicationContext;   public class Provider {  public static void main(String[] args) throws Exception {  ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"spring/dubbo-provider.xml"});  context.start();  System.in.read(); // 按任意键退出  } }
  或者使用springBoot启动import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ImportResource;  @SpringBootApplication @ImportResource("spring/dubbo-provider.xml") public class DubboProviderApplication {   public static void main(String[] args) throws Exception {  SpringApplication.run(DubboProviderApplication.class, args);   } }
  服务消费者:
  applicationContext-dubbo.xml 中注册自己需要调用的接口。
  1.通过Spring配置引用远程服务
  dubbo-consumer.xml:<?xml version="1.0" encoding="UTF-8"?>                    
  2.加载Spring配置,并调用远程服务:
  Consumer.javaimport org.springframework.context.support.ClassPathXmlApplicationContext; import org.apache.dubbo.demo.DemoService;   public class Consumer {  public static void main(String[] args) throws Exception {  ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"spring/dubbo-consumer.xml"});  context.start();  DemoService demoService = (DemoService)context.getBean("demoService"); // 获取远程服务代理  String hello = demoService.sayHello("world"); // 执行远程方法  System.out.println( hello ); // 显示调用结果  } }
  或者使用springBoot启动import org.apache.dubbo.common.logger.Logger; import org.apache.dubbo.common.logger.LoggerFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ImportResource;  @SpringBootApplication @ImportResource("spring/dubbo-consumer.xml") public class DubboConsumerApplicaiton {   public static final Logger logger = LoggerFactory.getLogger(DubboConsumerApplicaiton.class);   public static void main(String[] args) {  SpringApplication.run(DubboConsumerApplicaiton.class, args);   } }
  并添加对应的restful接口提供接口访问@RequestMapping("/demo") public ModelAndView testDemo() {  ModelAndView modelAndView = new ModelAndView("index");  org.apache.dubbo.rpc.RpcContext.getContext().setAttachment(Constants.TAG_KEY, "gray");  modelAndView.addObject("result", demoService.sayHello("Dubbo Meetup"));  return modelAndView; }
  修改对应index页面      Vertical centering in valid CSS      ${result.msg} From : ${result.userName}  
  3.dubbo管理页面:
  https://github.com/apache/dubbo-admin
  启动后访问 http://localhost:8080/dubbo-admin/
  输入账号密码root/root
  应用页面:
  提供者页面:
  消费者页面:
  服务页面:
  测试是否成功,只要看状态是否正常,就ok了 ....
  provider-log:2019-07-04 11:37:49,326 [DubboServerHandler-192.168.0.46:20880-thread-2] INFO org.apache.dubbo.demo.impl.DemoServiceImpl (DemoServiceImpl.java:31) - [DUBBO] [11:37:49] Hello Alterem., request from consumer: /192.168.0.46:52031, dubbo version: 2.7.0, current host: 192.168.0.46
  5.使用Dubbo可能遇到的问题
  1、org.springframework.beans.factory.BeanCreationExceptionorg.springframework.beans.factory.BeanCreationException: Error creating bean with name "mgmtFactoryInoutDetailsController": Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named "goodsInoutServiceImpl" available  at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:321) ~[spring-context-4.3.16.RELEASE.jar:4.3.16.RELEASE]  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1268) ~[spring-beans-4.3.16.RELEASE.jar:4.3.16.RELEASE]  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553) ~[spring-beans-4.3.16.RELEASE.jar:4.3.16.RELEASE]  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) ~[spring-beans-4.3.16.RELEASE.jar:4.3.16.RELEASE]  at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312) ~[spring-beans-4.3.16.RELEASE.jar:4.3.16.RELEASE]  at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.16.RELEASE.jar:4.3.16.RELEASE]  at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308) ~[spring-beans-4.3.16.RELEASE.jar:4.3.16.RELEASE]  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.16.RELEASE.jar:4.3.16.RELEASE]  at org.springframework.web.method.HandlerMethod.createWithResolvedBean(HandlerMethod.java:299) ~[spring-web-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:323) ~[spring-webmvc-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:61) ~[spring-webmvc-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at org.springframework.web.servlet.handler.AbstractHandlerMapping.getHandler(AbstractHandlerMapping.java:352) ~[spring-webmvc-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at org.springframework.web.servlet.DispatcherServlet.getHandler(DispatcherServlet.java:1160) [spring-webmvc-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:940) [spring-webmvc-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) [spring-webmvc-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) [spring-webmvc-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) [spring-webmvc-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) [servlet-api.jar:na]  at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) [spring-webmvc-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) [servlet-api.jar:na]  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) [catalina.jar:8.0.36]  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.36]  at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) [tomcat-websocket.jar:8.0.36]  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [catalina.jar:8.0.36]  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.36]  at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61) [shiro-web-1.2.4.jar:1.2.4]  at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) [shiro-web-1.2.4.jar:1.2.4]  at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) [shiro-web-1.2.4.jar:1.2.4]  at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) [shiro-web-1.2.4.jar:1.2.4]  at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) [shiro-web-1.2.4.jar:1.2.4]  at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) [shiro-web-1.2.4.jar:1.2.4]  at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) [shiro-web-1.2.4.jar:1.2.4]  at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) [shiro-core-1.2.4.jar:1.2.4]  at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) [shiro-core-1.2.4.jar:1.2.4]  at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) [shiro-core-1.2.4.jar:1.2.4]  at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) [shiro-web-1.2.4.jar:1.2.4]  at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) [shiro-web-1.2.4.jar:1.2.4]  at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347) [spring-web-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263) [spring-web-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [catalina.jar:8.0.36]  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.36]  at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) [spring-web-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [catalina.jar:8.0.36]  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.36]  at ue.common.filter.MultiPrefixHideUrlFilter.doFilter(MultiPrefixHideUrlFilter.java:76) [YKXCommon-3.3.01.jar:na]  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [catalina.jar:8.0.36]  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.36]  at ue.common.filter.PageableFilter.doFilterInternal(PageableFilter.java:48) [YKXCommon-3.3.01.jar:na]  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [catalina.jar:8.0.36]  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.36]  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) [catalina.jar:8.0.36]  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) [catalina.jar:8.0.36]  at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) [catalina.jar:8.0.36]  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) [catalina.jar:8.0.36]  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) [catalina.jar:8.0.36]  at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) [catalina.jar:8.0.36]  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) [catalina.jar:8.0.36]  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528) [catalina.jar:8.0.36]  at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099) [tomcat-coyote.jar:8.0.36]  at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670) [tomcat-coyote.jar:8.0.36]  at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) [tomcat-coyote.jar:8.0.36]  at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) [tomcat-coyote.jar:8.0.36]  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_131]  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_131]  at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:8.0.36]  at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131] Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named "goodsInoutServiceImpl" available  at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:687) ~[spring-beans-4.3.16.RELEASE.jar:4.3.16.RELEASE]  at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1213) ~[spring-beans-4.3.16.RELEASE.jar:4.3.16.RELEASE]  at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:284) ~[spring-beans-4.3.16.RELEASE.jar:4.3.16.RELEASE]  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-4.3.16.RELEASE.jar:4.3.16.RELEASE]  at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:275) ~[spring-beans-4.3.16.RELEASE.jar:4.3.16.RELEASE]  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-4.3.16.RELEASE.jar:4.3.16.RELEASE]  at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:522) ~[spring-context-4.3.16.RELEASE.jar:4.3.16.RELEASE]  at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:496) ~[spring-context-4.3.16.RELEASE.jar:4.3.16.RELEASE]  at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:627) ~[spring-context-4.3.16.RELEASE.jar:4.3.16.RELEASE]  at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:169) ~[spring-beans-4.3.16.RELEASE.jar:4.3.16.RELEASE]  at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) ~[spring-beans-4.3.16.RELEASE.jar:4.3.16.RELEASE]  at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:318) ~[spring-context-4.3.16.RELEASE.jar:4.3.16.RELEASE]  ... 67 common frames omitted
  原因分析:Error creating bean with name "mgmtFactoryInoutDetailsController": Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named "goodsInoutServiceImpl" available  at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:321)
  解决方案
  在dubbo-provider.xml添加对应的声明暴露服务
  在dubbo-consumer.xml添加对应的服务订阅
  2、org.apache.dubbo.rpc.RpcExceptionorg.apache.dubbo.rpc.RpcException: No provider available from registry 120.79.246.86:2181 for service ue.biz.service.bas.EnterpriseUserService on consumer 192.168.0.63 use dubbo version 2.7.0, please check status of providers(disabled, not registered or in blacklist).  at org.apache.dubbo.registry.integration.RegistryDirectory.doList(RegistryDirectory.java:522) ~[dubbo-2.7.0.jar:2.7.0]  at org.apache.dubbo.rpc.cluster.directory.AbstractDirectory.list(AbstractDirectory.java:82) ~[dubbo-2.7.0.jar:2.7.0]  at org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker.list(AbstractClusterInvoker.java:274) ~[dubbo-2.7.0.jar:2.7.0]  at org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker.invoke(AbstractClusterInvoker.java:238) ~[dubbo-2.7.0.jar:2.7.0]  at org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker.invoke(MockClusterInvoker.java:75) ~[dubbo-2.7.0.jar:2.7.0]  at org.apache.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:57) ~[dubbo-2.7.0.jar:2.7.0]  at org.apache.dubbo.common.bytecode.proxy7.getCurrent(proxy7.java) ~[dubbo-2.7.0.jar:2.7.0]  at ue.mgmt.controller.CommonController.main(CommonController.java:787) ~[classes/:na]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_131]  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_131]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_131]  at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_131]  at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133) ~[spring-web-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97) ~[spring-webmvc-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:849) ~[spring-webmvc-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:760) ~[spring-webmvc-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) ~[spring-webmvc-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) [spring-webmvc-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) [spring-webmvc-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) [spring-webmvc-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) [spring-webmvc-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) [servlet-api.jar:na]  at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) [spring-webmvc-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) [servlet-api.jar:na]  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) [catalina.jar:8.0.36]  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.36]  at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) [tomcat-websocket.jar:8.0.36]  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [catalina.jar:8.0.36]  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.36]  at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61) [shiro-web-1.2.4.jar:1.2.4]  at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) [shiro-web-1.2.4.jar:1.2.4]  at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) [shiro-web-1.2.4.jar:1.2.4]  at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) [shiro-web-1.2.4.jar:1.2.4]  at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) [shiro-web-1.2.4.jar:1.2.4]  at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) [shiro-web-1.2.4.jar:1.2.4]  at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) [shiro-web-1.2.4.jar:1.2.4]  at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) [shiro-core-1.2.4.jar:1.2.4]  at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) [shiro-core-1.2.4.jar:1.2.4]  at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) [shiro-core-1.2.4.jar:1.2.4]  at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) [shiro-web-1.2.4.jar:1.2.4]  at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) [shiro-web-1.2.4.jar:1.2.4]  at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347) [spring-web-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263) [spring-web-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [catalina.jar:8.0.36]  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.36]  at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) [spring-web-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [catalina.jar:8.0.36]  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.36]  at ue.common.filter.MultiPrefixHideUrlFilter.doFilter(MultiPrefixHideUrlFilter.java:76) [YKXCommon-3.3.01.jar:na]  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [catalina.jar:8.0.36]  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.36]  at ue.common.filter.PageableFilter.doFilterInternal(PageableFilter.java:48) [YKXCommon-3.3.01.jar:na]  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.20.RELEASE.jar:4.3.20.RELEASE]  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [catalina.jar:8.0.36]  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.36]  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) [catalina.jar:8.0.36]  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) [catalina.jar:8.0.36]  at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) [catalina.jar:8.0.36]  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) [catalina.jar:8.0.36]  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) [catalina.jar:8.0.36]  at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) [catalina.jar:8.0.36]  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) [catalina.jar:8.0.36]  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528) [catalina.jar:8.0.36]  at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099) [tomcat-coyote.jar:8.0.36]  at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670) [tomcat-coyote.jar:8.0.36]  at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) [tomcat-coyote.jar:8.0.36]  at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) [tomcat-coyote.jar:8.0.36]  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_131]  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_131]  at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:8.0.36]  at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131]
  原因分析No provider available from registry 120.79.246.86:2181 for service ue.biz.service.bas.EnterpriseUserService on consumer 192.168.0.63 use dubbo version 2.7.0, please check status of providers
  解决方案
  可能是因为providers没有启动,或者是provider对应暴露的服务被禁用,启动providers或者解除禁用即可
  3、java.lang.IllegalStateExceptionjava.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load [io.netty.channel.nio.NioEventLoop]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.  at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1352)  at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1340)  at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1205)  at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1166)  at ch.qos.logback.classic.spi.PackagingDataCalculator.loadClass(PackagingDataCalculator.java:207)  at ch.qos.logback.classic.spi.PackagingDataCalculator.bestEffortLoadClass(PackagingDataCalculator.java:226)  at ch.qos.logback.classic.spi.PackagingDataCalculator.computeBySTEP(PackagingDataCalculator.java:138)  at ch.qos.logback.classic.spi.PackagingDataCalculator.populateUncommonFrames(PackagingDataCalculator.java:113)  at ch.qos.logback.classic.spi.PackagingDataCalculator.populateFrames(PackagingDataCalculator.java:105)  at ch.qos.logback.classic.spi.PackagingDataCalculator.calculate(PackagingDataCalculator.java:57)  at ch.qos.logback.classic.spi.ThrowableProxy.calculatePackagingData(ThrowableProxy.java:147)  at ch.qos.logback.classic.spi.LoggingEvent.(LoggingEvent.java:124)  at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:440)  at ch.qos.logback.classic.Logger.filterAndLog_0_Or3Plus(Logger.java:396)  at ch.qos.logback.classic.Logger.warn(Logger.java:713)  at io.netty.util.internal.logging.Slf4JLogger.warn(Slf4JLogger.java:151)  at io.netty.channel.nio.NioEventLoop.handleLoopException(NioEventLoop.java:486)  at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:469)  at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)  at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)  at java.lang.Thread.run(Thread.java:748)
  原因分析this web application instance has been stopped already. 所以,需要重启Tomcat的情况下才有可能发上,这是第一个出错条件。 Could not load [io.netty.channel.nio.NioEventLoop]. 看这个不能直接推出问题产生条件,但是很明显是关于加载的。
  解决方案
  总结以上两点,通俗点讲,就是重启了工程(可能是因为直接修改代码,工程reload了), 并且,连过了数据库(登录等),才出现了上述报错信息。原因是因为在tomcat重启的时候,之前的tomcat的线程还没有完全关闭,最新启动tomcat就会报这个异常。
  4、org.apache.dubbo.remoting.TimeoutExceptionCaused by: org.apache.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer. start time: 2019-07-04 15:05:41.363, end time: 2019-07-04 15:05:51.388, client elapsed: 94 ms, server elapsed: 9931 ms, timeout: 10000 ms, request: Request [id=0, version=2.0.2, twoway=true, event=false, broken=false, data=RpcInvocation [methodName=find, parameterTypes=[class ue.biz.entity.sys.Permission$Type], arguments=[url], attachments={path=ue.biz.service.sys.PermissionService, interface=ue.biz.service.sys.PermissionService, version=0.0.0, timeout=10000}]], channel: /192.168.0.46:54424 -> /192.168.0.46:20880  at org.apache.dubbo.remoting.exchange.support.DefaultFuture.returnFromResponse(DefaultFuture.java:296) ~[dubbo-2.7.0.jar:2.7.0]  at org.apache.dubbo.remoting.exchange.support.DefaultFuture.get(DefaultFuture.java:191) ~[dubbo-2.7.0.jar:2.7.0]  at org.apache.dubbo.remoting.exchange.support.DefaultFuture.get(DefaultFuture.java:164) ~[dubbo-2.7.0.jar:2.7.0]  at org.apache.dubbo.rpc.protocol.dubbo.DubboInvoker.doInvoke(DubboInvoker.java:108) ~[dubbo-2.7.0.jar:2.7.0]  at org.apache.dubbo.rpc.protocol.AbstractInvoker.invoke(AbstractInvoker.java:156) ~[dubbo-2.7.0.jar:2.7.0]  at org.apache.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:88) ~[dubbo-2.7.0.jar:2.7.0]  at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:73) ~[dubbo-2.7.0.jar:2.7.0]  at org.apache.dubbo.rpc.protocol.dubbo.filter.FutureFilter.invoke(FutureFilter.java:49) ~[dubbo-2.7.0.jar:2.7.0]  at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:73) ~[dubbo-2.7.0.jar:2.7.0]  at org.apache.dubbo.rpc.filter.ConsumerContextFilter.invoke(ConsumerContextFilter.java:54) ~[dubbo-2.7.0.jar:2.7.0]  at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:73) ~[dubbo-2.7.0.jar:2.7.0]  at org.apache.dubbo.rpc.listener.ListenerInvokerWrapper.invoke(ListenerInvokerWrapper.java:77) ~[dubbo-2.7.0.jar:2.7.0]  at org.apache.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:56) ~[dubbo-2.7.0.jar:2.7.0]  at org.apache.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:80) ~[dubbo-2.7.0.jar:2.7.0]  ... 65 common frames omitted
  原因分析org.apache.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer. start time: 2019-07-04 15:05:41.363, end time: 2019-07-04 15:05:51.388, client elapsed: 94 ms, server elapsed: 9931 ms, timeout: 10000 ms, request: Request [id=0, version=2.0.2, twoway=true, event=false, broken=false, data=RpcInvocation [methodName=find, parameterTypes=[class ue.biz.entity.sys.Permission$Type], arguments=[url], attachments={path=ue.biz.service.sys.PermissionService
  解决方案
  在dubbo-provider.xml增加超时时间

反垄断最终还是败给了用户习惯?反垄断最终还是败给了用户习惯,用户成为最终的弱势群体,这能怪谁?就拿微信为例,现目前官方数据统计每天约为10。9亿打开微信,3。3亿进行视频对话,7。8亿进入朋友圈,1。2亿发朋友助听器的真耳分析功能有什么作用?您好,真耳分析是指在人的真实耳朵中进行声学测量的过程。真耳分析是将测量麦克风的探管插入外耳道近鼓膜处,进行声学测量的过程,多用于助听器效果评估。可用于儿童青年中年和老年。在标准测试小米8的NFC在日常生活中有哪些作用?NFC功能本身就有很多种用途,有移动支付数据连接模拟实体卡读卡器模式等,只要带有NFC功能的手机有去开放适配这些功能用户就能够使用。模拟卡功能此功能目前还没有多少牌子的手机支持,小取暖方法很多,东北供暖费变明补,爷一样的供热公司,能生存吗?关键还是取暖统一供性价比最高,供热公司享受补贴,个人自己供热无论是电,油,气性价比相差太大。另外污染也是大问题。个人如果允许使用煤做取暖,可能供热公司就挺不住了。只要是允许企业盈利有什么方法能将语音文件转换为文字?专业的软件也有一些,不过我们用word就可以把这事给办了,具体的步骤慢慢听我道来。默认情况下,我们的操作系统本身是提供了TTS(TextToSpeech)功能的,具体的地方不同的操Python文件读写操作方法文字和视频讲解前面大家了解python是怎么操作文件的了,也学习过文件读取和写入模式的一些细节以及文件定位等等,这节课主要是深入了解文件读写的细节控制,容错方法和关闭文件的细节,另外还有一种简写脂肪险来了!一年运动300天,智能健身镜免费领凡是坚持不下来的人可能都存在这样那样的原因健身耗费大量时间金钱和精力,健身需要克服孤独的训练体验,当然还要客服久而久之形成的惰性。在健身这件事上,你最多坚持过多久呢?近年来,伴随全小度推现实版脂肪险,1年运动300天免费得健身镜国民智能科技品牌小度召开冬季新品发布会,重磅发布了小度添添智能健身镜和小度智能摄像头电视V75两款新品。还携手线下场景品牌联想来酷,将小度的硬件产品搬进全国一线商圈,往后全国个城市汇顶科技,公司的健康传感器多功能交互传感器低功耗蓝牙产品ANC主动降噪编解码芯片产品等均可用于可穿戴设备每经AI快讯,有投资者在投资者互动平台提问公司有哪些产品可用于可穿戴设备?汇顶科技(603160。SH)12月7日在投资者互动平台表示,公司的健康传感器多功能交互传感器低功耗蓝牙产如美国新太空武器可破坏卫星发射,中国会重新考虑美加入空间站么?卫星太空发射,指的是卫星从装到载具上做好准备到进入到预定轨道的全过程,如果在这一过程中进行破坏,那就可以说具备了破坏卫星发射的能力。那美国具备了这一能力吗?当然具备了。不仅仅是美国本人喜欢听音乐,想买一个无线耳机,大家有什么推荐的吗?魔浪如果你是喜欢音乐,想买一款好一点的无线蓝牙耳机可以选择两个品牌第一个是索尼的,当然具体什么型号,你可以去啊,淘宝上或者天猫进行选择购买还有一个我觉得苹果最新发的无线耳机也是非常
2021手机信号哪家强?华为不上榜以前总听人说华为手机信号是最好,因为他们就是做基站起家的,这究竟是事实还是吹嘘,看完你会和我一样震惊!你是否经常打不开交通码?手机信号强弱,绝对是和大家息息相关的,交通支付接发通讯项立刚高科技产业整合要放手去干来源环球时报因为无法获得美国外国投资委员会(CFIUS)的同意,韩国企业美格纳近日宣布,同中国企业的收购合作正式终止。这是美国对华发动科技战渗透到高科技产业各个方面的体现。考虑到当巅峰对比,荣耀30pro和荣耀V30pro欢迎回家!请用你发财的手给小编点个关注点个赞,感谢大家支持!首先这两款都是荣耀的巅峰之作,特别是荣耀30pro,最让人打满分的一款产品,那么小编今天给大家分析一下这两款有什么区别,苹果用户除了149元的官方20W快充,你还有更好的选择大家好!我是Mac視界,一个喜欢数码科技的视频博主。自iPhone12起,苹果打着环保的名义,不再给用户配备充电器,不少安卓厂商也纷纷效仿。对于首次购买iPhone的用户,选购一款大型商城的订单系统是怎么设计的你知道吗?今天写这个还是因为前天那篇文章在这篇文章中我推荐了一个商城项目然后又有很多同学问我订单系统怎么设计,好吧,我又能水文了,不是,宠粉狗头还没看过这篇文章的同学可以去看看5个超棒的Ja酷派COOL20Pro测评千元机的价格买120Hz高刷屏,续航还很给力我选的是薄雾黑,比较大气,加上磨砂质感就像一块高级的砚台。拍照效果,5000万像素很顶,各种细节都能捕捉到,夜拍效果很惊艳。电池续航非常好,我开120Hz刷新日常普通使用都可以用很knx智能照明系统收集占用数据后会进行分析以优化建筑使用安科瑞于洋各大城市中对于照明系统方面的研究一直都是非常重视的,因为照明系统的存在影响到城市中的用电,所以照明系统只有越来越好才行!而我们安科瑞就是一家专门研究生产照明系统的公司,k价格不足1500元,体验却可以媲美旗舰机,这三款手机闭眼买就行临近年末,很多朋友都想给自己或者家人换一部新手机,但是自从进入5G时代之后,手机的售价普遍上涨,以往两三千元就可以买到不错的旗舰机,如今却至少需要四五千元。对于普通消费者来说,并不如果华为也有支付系统了,大家还会用支付宝和微信吗?用华为,增智慧?不用,手机价格又不厚道,又不好用,还用那个什么绑架,还说不得只能捧华为已经有支付系统了,华为钱包。你没听过?好吧,你的问题你自己已经回答过了不会的,华为有个先天的劣破坏实体经济的锅,电商不背近年来不少实体店的经营似乎遇到了困难,客流量与营业收入都呈现了明显的下降趋势。许多实体店主将这一现象归咎于电商,甚至不少人得出了电商会摧毁实体经济的结论。电商是会改变消费者的消费行5000mAh骁龙778G120Hz屏,跌至1549元今年手机市场竞争更加激烈,小米走新零售路线,线下频频开店,已经有10000家小米之家直供店开张,这无疑会冲击OPPO和vivo的销量,OV也反打一把,在线上推出了部分性价比手机,线