`
flamezealot
  • 浏览: 20804 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

一个dubbo 异常

 
阅读更多

以下是异常信息

Caused by: javax.validation.ValidationException: HV000183: Unable to initialize 'javax.el.ExpressionFactory'. Check that you have the EL dependencies on the classpath, or use ParameterMessageInterpolator instead
	at org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.buildExpressionFactory(ResourceBundleMessageInterpolator.java:102) ~[hibernate-validator-5.4.1.Final.jar:5.4.1.Final]
	at org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.<init>(ResourceBundleMessageInterpolator.java:45) ~[hibernate-validator-5.4.1.Final.jar:5.4.1.Final]
	at org.hibernate.validator.internal.engine.ConfigurationImpl.getDefaultMessageInterpolator(ConfigurationImpl.java:423) ~[hibernate-validator-5.4.1.Final.jar:5.4.1.Final]
	at org.hibernate.validator.internal.engine.ConfigurationImpl.getDefaultMessageInterpolatorConfiguredWithClassLoader(ConfigurationImpl.java:575) ~[hibernate-validator-5.4.1.Final.jar:5.4.1.Final]
	at org.hibernate.validator.internal.engine.ConfigurationImpl.getMessageInterpolator(ConfigurationImpl.java:364) ~[hibernate-validator-5.4.1.Final.jar:5.4.1.Final]
	at org.hibernate.validator.internal.engine.ValidatorFactoryImpl.<init>(ValidatorFactoryImpl.java:148) ~[hibernate-validator-5.4.1.Final.jar:5.4.1.Final]
	at org.hibernate.validator.HibernateValidator.buildValidatorFactory(HibernateValidator.java:38) ~[hibernate-validator-5.4.1.Final.jar:5.4.1.Final]
	at org.hibernate.validator.internal.engine.ConfigurationImpl.buildValidatorFactory(ConfigurationImpl.java:331) ~[hibernate-validator-5.4.1.Final.jar:5.4.1.Final]
	at javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:110) ~[validation-api-1.1.0.Final.jar:na]
	at com.alibaba.dubbo.validation.support.jvalidation.JValidator.<init>(JValidator.java:89) ~[dubbo-2.5.7.jar:2.5.7]
	at com.alibaba.dubbo.validation.support.jvalidation.JValidation.createValidator(JValidation.java:31) ~[dubbo-2.5.7.jar:2.5.7]
	at com.alibaba.dubbo.validation.support.AbstractValidation.getValidator(AbstractValidation.java:38) ~[dubbo-2.5.7.jar:2.5.7]
	at com.alibaba.dubbo.validation.Validation$Adaptive.getValidator(Validation$Adaptive.java) ~[dubbo-2.5.7.jar:2.5.7]
	at com.alibaba.dubbo.validation.filter.ValidationFilter.invoke(ValidationFilter.java:47) ~[dubbo-2.5.7.jar:2.5.7]
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:69) ~[dubbo-2.5.7.jar:2.5.7]
	at com.alibaba.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:75) ~[dubbo-2.5.7.jar:2.5.7]
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:69) ~[dubbo-2.5.7.jar:2.5.7]
	at com.alibaba.dubbo.rpc.protocol.dubbo.filter.FutureFilter.invoke(FutureFilter.java:54) ~[dubbo-2.5.7.jar:2.5.7]
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:69) ~[dubbo-2.5.7.jar:2.5.7]
	at com.alibaba.dubbo.rpc.filter.ConsumerContextFilter.invoke(ConsumerContextFilter.java:48) ~[dubbo-2.5.7.jar:2.5.7]
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:69) ~[dubbo-2.5.7.jar:2.5.7]
	at com.alibaba.dubbo.rpc.listener.ListenerInvokerWrapper.invoke(ListenerInvokerWrapper.java:74) ~[dubbo-2.5.7.jar:2.5.7]
	at com.alibaba.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:53) ~[dubbo-2.5.7.jar:2.5.7]
	at com.alibaba.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:77) ~[dubbo-2.5.7.jar:2.5.7]

 

本地测试一个facade的时候遇到这个异常,然而百思不得其解的是,测试另一个facade的时候又不会报这个错,调试了很久,有种想砸电脑的冲动。终于冷静下来之后,决定一个一个的看这些filter做了啥,最后看到了ValidationFilter这里

 if (validation != null && !invocation.getMethodName().startsWith("$")
                && ConfigUtils.isNotEmpty(invoker.getUrl().getMethodParameter(invocation.getMethodName(), Constants.VALIDATION_KEY))) {
            try {
                Validator validator = validation.getValidator(invoker.getUrl());
                if (validator != null) {
                    validator.validate(invocation.getMethodName(), invocation.getParameterTypes(), invocation.getArguments());
                }
            } catch (RpcException e) {
                throw e;
            } catch (Throwable t) {
                throw new RpcException(t.getMessage(), t);
            }
        }
        return invoker.invoke(invocation);

 看到if这一串,就想会不会是另一个facade不满足这个if条件呢,好吧,前两个条件都不满足,最后一个,url里包含validation参数,对比了一下,果然原因在这里,前一个facade的url里有validation=true,后一个没有,奶奶个熊啊,你们全都是辣鸡。。。

 

 知道原因就好了,解决是很简单的,dependency里加入javax.el的jar包,就行了。还有更简单的方法,@Reference注解里设置validation="false",嘿嘿

分享到:
评论

相关推荐

    dubbo捕获自定义异常_dubbo异常捕获_dubbo异常_自定义异常_捕捉异常_

    Dubbo 提供了 `Filter` 机制,你可以自定义一个异常过滤器来捕获和处理异常。例如,创建一个名为 `CustomExceptionHandlerFilter` 的过滤器: ```java public class CustomExceptionHandlerFilter implements ...

    Dubbo第一个例子

    【Dubbo第一个例子】 在IT行业中,Dubbo是一款广受欢迎的高性能、轻量级的Java开源服务框架,由阿里巴巴公司研发并维护。本教程将引导你通过创建"Dubbo第一个例子"来了解和学习如何使用Dubbo架构。我们将涵盖以下几...

    dubbo示例代码dubbo-sample

    当有多个服务提供者时,服务消费者会根据配置的负载均衡策略选择一个服务实例进行调用。在`dubbo-samples-loadbalance`模块中,可以看到这些策略的使用示例。 6. **容错机制(Failover/Failfast/Failsafe/Failback...

    incubator-dubbo-dubbo-2.6.1

    【标题】"incubator-dubbo-dubbo-2.6.1" 是一个Apache Incubator项目Dubbo的特定版本,这里的2.6.1表示该版本是Dubbo的稳定分支之一。 【描述】提到的"incubator-dubbo-dubbo-2.6.1"表明这是Apache孵化器中的Dubbo...

    dubbodubbo.zip

    Dubbo是一款由阿里巴巴开源的高性能、轻量级的服务治理框架,它致力于提供一个简单、高效的分布式服务解决方案。在Java世界里,Dubbo已经成为了微服务架构的重要组成部分,其核心特性包括服务注册与发现、远程调用、...

    dubbo监控dubbo-monitor

    【描述】:Dubbo-Monitor是Dubbo框架中的一个重要组成部分,它提供了对服务治理的实时监控功能。作为一个强大的微服务治理工具,Dubbo-Monitor能够帮助开发者和运维人员深入了解服务运行状态,确保系统的稳定性和...

    Dubbo监控系统配置

    为了更好地管理和监控Dubbo服务,Dubbo提供了一个名为“Dubbo Admin”的可视化管理平台,可以帮助开发者直观地了解服务状态和服务调用情况。 #### 二、Dubbo监控系统的部署与配置 ##### 2.1 部署Dubbo Admin 根据...

    DUBBO多个版本的jar包

    - **负载均衡(LoadBalance)**:在多台服务提供者中选择一个进行调用,常见的有随机、轮询、权重等策略。 - **监控(Monitor)**:收集并展示服务调用的统计信息,用于性能分析和故障排查。 3. **Dubbo配置**: ...

    incubator-dubbo-dubbo-2.5.8

    【标题】"incubator-dubbo-dubbo-2.5.8" 是一个基于Java的开源服务框架,由Apache孵化器项目提供。这个版本是Dubbo的2.5.8稳定版,它包含了Dubbo的核心服务治理功能以及一个专门的管理平台——dubbo-admin。 【描述...

    dubbo、dubbo-admin

    Dubbo-admin是Dubbo框架的一部分,它是一个可视化的服务管理工具,允许开发者对服务消费者和服务提供者进行管理和监控。 在使用Dubbo-admin之前,首先需要确保你已经安装了Java环境,因为Dubbo和其admin都是基于...

    dubbo源码分析系列

    《Dubbo源码分析系列》是一份深入探讨Java开源框架Dubbo核心原理和技术细节的资料。Dubbo,作为阿里巴巴的一款高性能、轻量级的服务治理框架,它为分布式系统提供了服务发现、调用、负载均衡、容错等关键功能。这份...

    dubbo服务监控工具dubbo-admin

    Dubbo-admin,作为阿里巴巴开源的分布式服务框架Dubbo的重要组成部分,是一个强大的服务治理工具,专为诊断和管理Dubbo服务而设计。它提供了一个直观的用户界面,使得开发者和服务运维人员能够便捷地监控服务的运行...

    Spring Boot集成dubbo+zookeeper

    在IT行业中,Spring Boot是一个备受推崇的框架,它简化了基于Spring的应用开发,而Dubbo则是一个高性能、轻量级的Java服务治理框架。Zookeeper是Apache的一个分布式协调服务,常用于分布式应用中的配置管理、命名...

    dubbo-dubbo-2.7.8.zip

    Dubbo,作为一个高性能、轻量级的Java开源框架,被广泛应用于分布式系统开发中。2.7.8是其一个重要的版本,包含了众多优化和改进。在本文中,我们将深入探讨这个版本的核心特性、设计理念以及实际应用中的关键知识点...

    dubbo2.5.4

    【标题】"dubbo2.5.4"是著名开源框架Dubbo的一个特定版本,它在分布式服务治理领域有着广泛的应用。这个版本包含了两个关键组件,对于理解和使用Dubbo框架至关重要。 【描述】中提到的第一个文件是“dubbo.xsd”,...

    dubbo入门学习框架源码

    Dubbo的主要目标是提供一个高性能、透明化的RPC(远程过程调用)框架,使得服务消费方可以像调用本地方法一样调用远程服务。它具备服务注册与发现、负载均衡、容错、调用链跟踪等核心功能,实现了服务之间的高效通信...

    dubbo-admin包,dubbo-admin.war,基于github中dubbo源码打包,亲测可用。

    【标题】"dubbo-admin包"是Dubbo项目的一个重要组成部分,主要提供了管理控制台的功能。这个特定的版本,"dubbo-admin.war",是根据GitHub上的Dubbo源代码编译并打包而成的,确保了其与最新的开发成果同步,并且已经...

    zookeeper+dubbo+spring

    **Dubbo** 是阿里巴巴开源的一个高性能、轻量级的Java远程服务框架。它提供了丰富的服务治理功能,如服务注册、服务发现、调用路由、负载均衡、容错机制等。在“dubbo-consumer”目录下,通常包含了Dubbo的消费者端...

    dubbo监控中心(dubbo-admin)使用与安装

    1. dubbo-admin概述:首先需要了解的是,dubbo-admin是Dubbo生态中的一个组件,它提供了一个可视化的界面,让开发者能够直观地看到服务的注册情况、服务调用的次数、响应时间等关键信息,这在服务集群较大,调用关系...

    dubbo提供者和消费者工程

    例如,你可能会在provider工程中看到一个名为`ServiceImpl`的类,它是具体业务逻辑的实现,同时在相应的配置文件中,会有类似`&lt;dubbo:service interface="com.example.IService" ref="serviceImpl"/&gt;`的配置,用于将...

Global site tag (gtag.js) - Google Analytics