java - 调用dubbo接口,用xml实例化bean时报No bean named 'XXX' is defined
ringa_lee
ringa_lee 2017-04-18 10:00:43
[Java讨论组]

大神们耽误1min给瞅瞅什么问题,小妹在此谢过了
1.本地远程调用dubbo接口,用xml实例化bean时报No bean named 'projectInterfaces' is defined
2.我本地的xml配置



     
        
        
       
    
  
          

3.我的实例化bean代码

public class TestProject {
    public static void main(String[] args) throws Exception {  
        ApplicationContext  context = new ClassPathXmlApplicationContext(  
                new String[]{"classpath*:spring-config-consumer.xml"});

        ProjectInterfaces projectInterfaces = (ProjectInterfaces)context.getBean("projectInterfaces");                                                                    
        
        Message>  msg = projectInterfaces.getProjectsByProductCode("602003162805","200000013631");

        List m = msg.getData();
        for (Project project : m){
            System.out.println(project.toString());
        }
    }  
}

4.xml中的配置的dubbo:reference id 和interface都是照着其他消费者模块的配置写的(测试环境这些模块都是能正常调用到这个接口的),这个应该没有写错
5.报错是

ringa_lee
ringa_lee

ringa_lee

全部回复(3)
PHP中文网

dubbo producer需要在zookeeper中注册才能被cosumer调用,你看一下你这个producer注册没有

伊谢尔伦

你的spring-config-consumer.xml文件没有被spring容器加载,所以你注入的这个bean才会在容器里找不到。
context需要调用start方法才行。

ApplicationContext  context = new ClassPathXmlApplicationContext(  
                new String[]{"classpath*:spring-config-consumer.xml"});
context.start();

试试吧

PHP中文网

看我给你给出的代码

//提供者配置
<dubbo:service interface="InterfaceService" ref="service" timeout="60000"/>
<bean id="service" class="ServiceImpl" />
    
//消费者配置
<dubbo:reference id="service" interface="InterfaceService" />

在springMVC控制器里如下使用则会引用到

//消费者引用
@Resource
    private InterfaceService service;

也就是说你要有一个接口,InterfaceService,并且在服务提供者那边有个类ServiceImpl实现了这个接口,并且需要创建这个实现类的一个对象service提供给消费者。在提供者方用<bean id="service" class="ServiceImpl" />这句创建了被提供的那个service,用ref="service"指明你要提供的就是bean id="service" 的那个对象,在服务端用<dubbo:reference id="service" interface="InterfaceService" />来接收,使用的时候通过InterfaceService这个共同的接口类型来引用,这样就能拿到service 并且使用了

你的问题在于没有那个服务提供的实现类,没有它的对象,你指明的 ref并不能对应一个确实存在的对象,你这个ref指定引用是空的

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号