Maison > Questions et réponses > le corps du texte
大神们耽误1min给瞅瞅什么问题,小妹在此谢过了
1.本地远程调用dubbo接口,用xml实例化bean时报No bean named 'projectInterfaces' is defined
2.我本地的xml配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<context:annotation-config/>
<context:component-scan base-package="*"/>
<dubbo:application name="mydubbo"/>
<dubbo:registry address="zookeeper://10.11.145.91:2181?backup=10.11.145.100:2181,10.11.145.103:2181" group=""/>
<dubbo:protocol name="dubbo" port="-1" serialization="" threads="500"/>
<dubbo:reference id="projectInterfaces" interface="com.abc.trade.projectcenter.interfaces.ProjectInterfaces" check="false" timeout="10000" retries="0" group ="test"/>
</beans>
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<List<Project>> msg = projectInterfaces.getProjectsByProductCode("602003162805","200000013631");
List<Project> m = msg.getData();
for (Project project : m){
System.out.println(project.toString());
}
}
}
4.xml中的配置的dubbo:reference id 和interface都是照着其他消费者模块的配置写的(测试环境这些模块都是能正常调用到这个接口的),这个应该没有写错
5.报错是
PHP中文网2017-04-18 10:02:43
Le producteur Dubbo doit être enregistré dans Zookeeper avant de pouvoir être appelé par le client. Vérifiez si votre producteur est enregistré
.伊谢尔伦2017-04-18 10:02:43
Votre fichier spring-config-consumer.xml n'est pas chargé par le conteneur spring, donc le bean que vous avez injecté est introuvable dans le conteneur.
Le contexte doit appeler la méthode start.
ApplicationContext context = new ClassPathXmlApplicationContext(
new String[]{"classpath*:spring-config-consumer.xml"});
context.start();
Essayez-le
PHP中文网2017-04-18 10:02:43
Regarde le code que je t'ai donné
//提供者配置
<dubbo:service interface="InterfaceService" ref="service" timeout="60000"/>
<bean id="service" class="ServiceImpl" />
//消费者配置
<dubbo:reference id="service" interface="InterfaceService" />
sera référencé à
lorsqu'il est utilisé comme suit dans le contrôleur springMVC//消费者引用
@Resource
private InterfaceService service;
C'est-à-dire que vous devez avoir une interface, InterfaceService, et il existe une classe ServiceImpl du côté du fournisseur de services qui implémente cette interface, et vous devez créer un service objet de cette classe d'implémentation à fournir aux consommateurs. Du côté du fournisseur, utilisez <bean id="service" class="ServiceImpl" /> pour créer le service fourni et utilisez ref="service" pour indiquer que ce que vous souhaitez fournir est bean id="service" Cet objet est reçu côté serveur en utilisant <dubbo:reference id="service" interface="InterfaceService" />. Lorsqu'il est utilisé, il est référencé via le type d'interface commun de InterfaceService, afin que le service puisse être obtenu et utilisé
Votre problème est qu'il n'y a pas de classe d'implémentation fournie par le service ni d'objet. La référence que vous avez spécifiée ne correspond pas à un objet réel. La référence spécifiée par votre référence est vide
.