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

Spring与dubbo集成实例化两次的问题

 
阅读更多
最近研究dubbo,在与spring集成的时候,eclipse启动web服务的时候发现消费者实例总是被实例化两次,spring中bean默认都是singleton,不可能实例化多个对象。dubbo管理界面显示如下:

在网上查了相关的资料发现是由于在web.xml中这段配置导致的:
<servlet>
    <servlet-name>DispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath*:applicationContext.xml,classpath*:spring-web.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

Spring中监听器ContextLoaderListener的作用是什么呢?它是这样描述的:
ContextLoaderListener的作用就是启动Web容器时,自动装配ApplicationContext的配置信息。因为它实现了ServletContextListener这个接口,在web.xml配置这个监听器,启动容器时,就会默认执行它实现的方法。
由于DispatcherServlet会也实例化classpath*:applicationContext.xml,这就导致配置在applicationContext.xml中的消费者实例被初始化了两次。
解决方案:
删除这段代码即可:
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  • 大小: 27.6 KB
分享到:
评论

相关推荐

    jboot+dubbo+nacos例子.zip

    【描述】"jboot+dubbo+nacos例子" 提示这是一个用于演示JBoot与Dubbo集成,并通过Nacos作为服务治理和服务发现平台的实例。它可能包含服务提供者和服务消费者两个部分,分别由"jboot-dubbo-nacos-server.zip"和...

    尚硅谷SpringCloud视频 + 源码 百度网盘

    根据给定文件的信息,我们...通过对Dubbo和SpringCloud的对比,可以让学习者更清楚地了解到两种技术栈的特点及其适用场景。最后,通过实战案例的学习,可以更好地将理论知识应用于实际工作中,从而提高自己的技术水平。

    史上最全40道Dubbo面试题!.zip

    26. **Dubbo如何与Spring Boot集成?** 使用Spring Boot的starter机制,配置Dubbo的相关属性,即可快速集成。 27. **什么是服务的契约驱动?** 契约先于实现,服务提供者和消费者通过接口定义进行交互,实现解耦...

    十次方微服务开发v1.0--第7章1

    在与Dubbo的对比中,Spring Cloud涵盖了更广泛的微服务治理场景,而Dubbo主要专注于服务治理。Spring Cloud的版本命名独特,以伦敦地铁站名字作为版本代号,例如Finchley.M9表示第9个里程碑版本的Finchley分支。 ...

    微服务架构专题-SpringBoot.pptx

    - **SpringBoot急速入门**:SpringBoot由Pivotal团队开发,旨在简化Spring应用的初始化和开发流程。通过自动配置和起步依赖,它消除了传统Spring项目中的大量XML配置。SpringBoot项目的核心在于@SpringBoot...

    nacos-server2.0.3.zip

    6. **集成Spring Cloud与Dubbo**:Nacos天然兼容Spring Cloud和Dubbo生态,可以无缝对接这两种主流的服务框架,为它们提供服务发现和配置管理功能。 7. **安全性**:Nacos支持基于角色的权限控制(RBAC),确保只有...

    Nacos-server-1.4.1.rar

    同时,Nacos还支持与SpringCloud、Dubbo等框架的无缝集成,使得服务治理变得更加简单。 总的来说,Nacos是微服务架构中不可或缺的工具,它的出现简化了服务治理的复杂度,提高了开发效率,增强了系统的稳定性和可靠...

    nacos-server-1.3.2.tar.gz.7z

    10. **微服务与SpringCloud**:Nacos Server是SpringCloud生态的一部分,它可以无缝集成到SpringCloud项目中,为SpringCloud微服务提供服务发现和配置管理的能力。SpringCloud是一个基于Spring Boot实现的云应用开发...

    nacos-server1.2.0.zip

    10. **开放生态**:Nacos与Spring Cloud、Dubbo等主流框架良好集成,可无缝对接现有微服务体系。 在"nacos-server1.2.0"这个压缩包内,可能包含以下内容: - `bin`目录:包含了启动和停止Nacos服务器的脚本,如`...

    nacos-server1.1.3和简单说明.zip

    Nacos是阿里巴巴开源的一款分布式服务治理平台,它集成了服务注册与发现以及配置管理两大核心功能,旨在简化微服务架构中的服务管理和配置管理问题。在标题提到的"Nacos-server1.1.3"版本中,我们可以看到这是一次...

    链路追踪的Skywalking的探针

    - SkyWalking提供丰富的插件库,覆盖了多种框架和库,如Spring、Dubbo、gRPC等。探针会自动检测并应用相应的插件,实现对这些组件的深度监控。 8. **采样策略**: - 为了平衡监控的全面性和性能开销,SkyWalking...

    nacos-server-1.2.0-mysql8.zip

    这意味着Nacos可以与最新的MySQL数据库版本无缝集成,提供了更稳定的数据存储能力,同时利用了MySQL 8.0的性能提升和新特性。 Nacos的核心功能包括: 1. **服务注册与发现**:Nacos作为服务注册中心,允许微服务...

    TCC分布式事务解决方案.docx

    - **无缝集成Spring**:通过Aspect AOP切面思想与Spring框架无缝结合。 - **集群支持**:天然支持集群部署,提高了系统的可用性和扩展性。 - **事务恢复机制**:支持RPC事务恢复、超时异常恢复等功能。 ##### 工作...

    百度持续交付项目组面试题

    ##### “三次握手”与“四次挥手” **三次握手**用于建立TCP连接: 1. 客户端发送SYN包(syn=j)给服务器,并进入SYN_SEND状态,等待服务器确认; 2. 服务器收到SYN后确认客户的SYN(ack=j+1),同时自己也发送一个...

    java高级工程师面试总结

    - **懒汉式**:在第一次调用时才完成实例化。 #### 多线程 - **如何避免Quartz重复启动任务**: - 使用JobStore配置来管理任务的状态。 - 通过锁定机制确保同一时间只有一个任务执行。 - **线程池满了如何处理...

    JAVA-项目面试题.docx

    微服务更注重服务的轻量化、自治性和无状态,而SOA(面向服务架构)更侧重于服务的集成和互操作性,两者都旨在提高系统灵活性,但微服务更侧重于业务组件的独立性。 17. **泛型使用** 泛型在Java中用于类型安全,...

    Zookeeper-3.4.12

    在实际应用中,Zookeeper被广泛用于Hadoop、HBase、Kafka、Storm等大数据处理框架,以及Dubbo、Spring Cloud等微服务框架中,作为核心的协调组件。 综上所述,Zookeeper-3.4.12是分布式系统中不可或缺的工具,它的...

    1000道 互联网Java工程师面试题 485页

    - **与Spring完美集成**:支持使用Spring的事务管理。 #### 3、MyBatis框架的缺点: - **SQL语句耦合性高**:虽然可以使用XML标签编写动态的SQL,但是SQL语句还是依赖于Java工程,如果SQL语句发生改变,还需要改变...

    黑马面试宝典知识点复习

    - **工厂模式**:定义一个用于创建对象的接口,让子类决定实例化哪一个类。 - **观察者模式**:当对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 ### Linux - **命令行操作**:ls、cd、mkdir等...

Global site tag (gtag.js) - Google Analytics