dubbo笔记---使用myeclipse搭建简单的dubbo示例

 新学dubo,准备搭建一个简单的dubbo示例,个人java基础不好,之前也对dubbo不了解,为了搭建这个找了不少教程,但是仍感觉不熟练,个人水平吧....记录一下自己的小菜鸡水平

maven+zookeeper+dubbo-admin

开始之前需会搭建maven项目,需安装zookeeper

总体目录

1、新建maven项目

这个....自行百度,不赘述

新建项目名有空格

index.jsp报错

第一种:直接在pom.xml文件中添加jar包支持

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
</dependency> ​

 

第二种:添加tomcat支持

右键项目->build path->configure build path

 2、修改pom.xml

3、创建项目模块

主要分三大模块: 
dubbo-api : 存放公共接口; 
dubbo-consumer : 调用远程服务; 
dubbo-provider : 提供远程服务。

右键项目->new->other,新建module,创建dubbo-api模块

同理新建dubbo-consumer与dubbo-provider

 

新建完的pom.xml文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.fendo</groupId>
  <artifactId>Dubbo_demos</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>dubbo</name>
  <description>dubbo示例</description>
  
  
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    
    <!-- spring版本号 -->
    <spring.version>4.2.5.RELEASE</spring.version>
    
    <!-- log4j日志包版本号 -->
    <slf4j.version>1.7.18</slf4j.version>
    <log4j.version>1.2.17</log4j.version>
    
   </properties>
   
   
   
   <dependencyManagement>
      <dependencies>
	    
	    <!-- 添加junit4依赖 -->
	    <dependency>
	      <groupId>junit</groupId>
	      <artifactId>junit</artifactId>
	      <version>4.11</version>
	    </dependency>
 
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>${spring.version}</version>
		</dependency>
 
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context-support</artifactId>
			<version>${spring.version}</version>
		</dependency>
 
   
	    <!-- 添加日志相关jar包 -->
	    <dependency>
	      <groupId>log4j</groupId>
	      <artifactId>log4j</artifactId>
	      <version>${log4j.version}</version>
	    </dependency>
	    <dependency>
	      <groupId>org.slf4j</groupId>
	      <artifactId>slf4j-api</artifactId>
	      <version>${slf4j.version}</version>
	    </dependency>
	    <dependency>
	      <groupId>org.slf4j</groupId>
	      <artifactId>slf4j-log4j12</artifactId>
	      <version>${slf4j.version}</version>
	    </dependency>
    
	     <dependency>
	         <groupId>commons-logging</groupId>
	         <artifactId>commons-logging</artifactId>
	         <version>1.2</version>
	     </dependency>
    
	    <!-- dubbo -->
	    <dependency>
	      <groupId>com.alibaba</groupId>
	      <artifactId>dubbo</artifactId>
	      <version>2.5.3</version>
	      <exclusions>
	        <exclusion>
	          <groupId>org.springframework</groupId>
	          <artifactId>spring</artifactId>
	        </exclusion>
	      </exclusions>
	    </dependency>
    
    	<!-- Zookeeper zkclient-->
		<dependency>
		    <groupId>com.github.sgroschupf</groupId>
		    <artifactId>zkclient</artifactId>
		    <version>0.1</version>
		</dependency>
    
   </dependencies>
  </dependencyManagement>
  
  
</project>

 

4、创建MAVEN项目(有独立的pom.xml,用来打包供提供者消费者使用)。 

(1)dubbo-api

修改pom.xml

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.fendo</groupId>
    <artifactId>Dubbo_demos</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <groupId>com.fendo</groupId>
  <artifactId>dubbo-api</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>dubbo-api</name>
  <url>http://maven.apache.org</url>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

 

(2)dubbo-consumer

修改pom.xml

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  
  <parent>
    <groupId>com.fendo</groupId>
    <artifactId>Dubbo_demos</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  
  <groupId>com.fendo</groupId>
  <artifactId>dubbo-consumer</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>dubbo-consumer</name>
  <url>http://maven.apache.org</url>
  
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  
   <dependencies>
  
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
    </dependency>
    
     <dependency>
    	<groupId>com.fendo</groupId>
    	<artifactId>dubbo-api</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
     </dependency>
    
    <dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-core</artifactId>
    </dependency>
 
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-aop</artifactId>
	</dependency>
	
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-context-support</artifactId>
	</dependency>
 
    <!-- dubbo -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>dubbo</artifactId>
      <exclusions>
        <exclusion>
          <groupId>org.springframework</groupId>
          <artifactId>spring</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
   
   	<!-- Zookeeper zkclient-->
	<dependency>
	    <groupId>com.github.sgroschupf</groupId>
	    <artifactId>zkclient</artifactId>
	</dependency>
    
  </dependencies>
</project>

(3)dubbo-provider

修改pom.xml

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.fendo</groupId>
    <artifactId>Dubbo_demos</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  
  <groupId>com.fendo</groupId>
  <artifactId>dubbo-provider</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>dubbo-provider</name>
  <url>http://maven.apache.org</url>
  
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  
    <dependencies>
  
  		<dependency>
	    	<groupId>com.fendo</groupId>
	    	<artifactId>dubbo-api</artifactId>
	    	<version>0.0.1-SNAPSHOT</version>
        </dependency>
  		
  
		<dependency>
	      <groupId>junit</groupId>
	      <artifactId>junit</artifactId>
	    </dependency>
 
    	<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
		</dependency>
 
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
		</dependency>
		
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context-support</artifactId>
		</dependency>
		
		
		<!-- 添加日志相关jar包 -->
	    <dependency>
	      <groupId>log4j</groupId>
	      <artifactId>log4j</artifactId>
	    </dependency>
	    <dependency>
	      <groupId>org.slf4j</groupId>
	      <artifactId>slf4j-api</artifactId>
	    </dependency>
	    <dependency>
	      <groupId>org.slf4j</groupId>
	      <artifactId>slf4j-log4j12</artifactId>
	    </dependency>
    
	     <!-- dubbo -->
	    <dependency>
	      <groupId>com.alibaba</groupId>
	      <artifactId>dubbo</artifactId>
	      <exclusions>
	        <exclusion>
	          <groupId>org.springframework</groupId>
	          <artifactId>spring</artifactId>
	        </exclusion>
	      </exclusions>
	    </dependency>
    
    	<!-- Zookeeper zkclient-->
		<dependency>
		    <groupId>com.github.sgroschupf</groupId>
		    <artifactId>zkclient</artifactId>
		</dependency>
  </dependencies>
  
</project>

 

5、定义接口API、bo对象、公共类及方法

(1)在dubbo-api模块中创建一个接口对外开发

package org.dubbo.api;
import java.util.List;

public interface DemoService {
    List<String> getPermissions(Long id);
}​

 

(2)定义Dubbo服务service,实现dubbo-api中的api接口,书写业务逻辑及DB操作。通过spring暴露服务。

package org.dubbo.provider.impl;
import java.util.ArrayList;
import java.util.List;
import org.dubbo.api.DemoService;

public class DemoServiceImpl implements DemoService {
     
        public List<String> getPermissions(Long id) {
            List<String> demo = new ArrayList<String>();
            demo.add(String.format("Permission_%d", id - 1));
            demo.add(String.format("Permission_%d", id));
            demo.add(String.format("Permission_%d", id + 1));
            return demo;
        }
    }
package org.dubbo.provider;
import java.io.IOException;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Provider {
    public static void main(String[] args) throws IOException{
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:provider.xml");
        System.out.println(context.getDisplayName() + ": here");
        context.start();
        System.out.println("服务已经启动...");
        System.in.read();
    }
}

 

(3)然后创建resources目录

右键dubbo-provider->new->other->source folder

新建两个xml文件

provider.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:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://code.alibabatech.com/schema/dubbo
       http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
       
       
    <!--定义了提供方应用信息,用于计算依赖关系;在 dubbo-admin 或 dubbo-monitor 会显示这个名字,方便辨识-->
    <dubbo:application name="demotest-provider" owner="programmer" organization="dubbox"/>
    <!--使用 zookeeper 注册中心暴露服务,注意要先开启 zookeeper-->
    <dubbo:registry address="zookeeper://localhost:2181"/>
    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />
    <!--使用 dubbo 协议实现定义好的 api.PermissionService 接口-->
    <dubbo:service interface="com.fendo.dubbo.DemoService" ref="demoService" protocol="dubbo" />
    <!--具体实现该接口的 bean-->
    <bean id="demoService" class="org.dubbo.provider.impl.DemoServiceImpl"/>
</beans>

 

 

 

6、定义调用端也叫消费端,实现对应的控制层。通过spring获取服务。

(1)创建消费者运行类:

package org.dubbo.consumer;
import org.dubbo.api.DemoService;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Consumer 
{
    public static void main(String[] args) {
        //测试常规服务
        ClassPathXmlApplicationContext context =
                new ClassPathXmlApplicationContext("consumer.xml");
        context.start();
        System.out.println("consumer start");
        DemoService demoService = (DemoService) context.getBean(DemoService.class);
        System.out.println("consumer");
        System.out.println(demoService.getPermissions(1L));
    }
}

 

(2)然后创建resources目录

右键dubbo-consumer->new->other->source folder

新建两个xml文件

consumer.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:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    
    <dubbo:application name="demotest-consumer" owner="programmer" organization="dubbox"/>
    <!--向 zookeeper 订阅 provider 的地址,由 zookeeper 定时推送-->
    <dubbo:registry address="zookeeper://localhost:2181"/>
    <!--使用 dubbo 协议调用定义好的 api.PermissionService 接口-->
    <dubbo:reference id="permissionService" interface="org.dubbo.api.DemoService"/>
    
</beans>

启动zookepper(zksever.bat) 

 

 

 

搭建dubbo-admin

下载dubbo-admin复制到tomcat->webapps(建议复制一个tomcat)

启动tomcat,打开网页

运行provider.java

 运行consumer.java

刷新网页

 


 

过程中遇到的问题总结

provider.xml若报错

dubbo.xsd文件百度一下好多可下载的,也可以点文末链接,完整示例内有dubbo.xsd

 



运行provider.java报错

log4j:WARN Fatal parsing error 1 and column 39
log4j:WARN 文件提前结束。
log4j:ERROR Could not parse url [file:/G:/myeclipse_workspace/dubbo/demo2/dubbo-provider/target/classes/log4j.xml].
org.xml.sax.SAXParseException; systemId: file:/G:/myeclipse_workspace/dubbo/demo2/dubbo-provider/target/classes/log4j.xml; lineNumber: 1; columnNumber: 39; 文件提前结束。
	at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:257)
	at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)
	at org.apache.log4j.xml.DOMConfigurator$2.parse(DOMConfigurator.java:769)
	at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:871)
	at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:778)
	at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:526)
	at org.apache.log4j.LogManager.<clinit>(LogManager.java:127)
	at org.apache.log4j.Logger.getLogger(Logger.java:104)
	at org.apache.commons.logging.impl.Log4JLogger.getLogger(Log4JLogger.java:262)
	at org.apache.commons.logging.impl.Log4JLogger.<init>(Log4JLogger.java:108)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.apache.commons.logging.impl.LogFactoryImpl.createLogFromClass(LogFactoryImpl.java:1025)
	at org.apache.commons.logging.impl.LogFactoryImpl.discoverLogImplementation(LogFactoryImpl.java:844)
	at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:541)
	at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:292)
	at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:269)
	at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:655)
	at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:159)
	at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:223)
	at org.springframework.context.support.AbstractRefreshableApplicationContext.<init>(AbstractRefreshableApplicationContext.java:88)
	at org.springframework.context.support.AbstractRefreshableConfigApplicationContext.<init>(AbstractRefreshableConfigApplicationContext.java:58)
	at org.springframework.context.support.AbstractXmlApplicationContext.<init>(AbstractXmlApplicationContext.java:61)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:136)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
	at org.dubbo.provider.Provider.main(Provider.java:9)
log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.fendo.dubbo.DemoService': Cannot resolve reference to bean 'demoService' while setting bean property 'ref'; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [org.dubbo.provider.impl.DemoServiceImpl] for bean with name 'demoService' defined in class path resource [provider.xml]: problem with class file or dependent class; nested exception is java.lang.NoClassDefFoundError: org/dubbo/api/DemoService
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1481)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1226)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
	at org.dubbo.provider.Provider.main(Provider.java:9)
Caused by: org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [org.dubbo.provider.impl.DemoServiceImpl] for bean with name 'demoService' defined in class path resource [provider.xml]: problem with class file or dependent class; nested exception is java.lang.NoClassDefFoundError: org/dubbo/api/DemoService
	at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1355)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351)
	... 15 more
Caused by: java.lang.NoClassDefFoundError: org/dubbo/api/DemoService
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at org.springframework.util.ClassUtils.forName(ClassUtils.java:250)
	at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:394)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1397)
	at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1344)
	... 21 more
Caused by: java.lang.ClassNotFoundException: org.dubbo.api.DemoService
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	... 37 more

解决:

1、provider.xml是dubbo配置文件内容:<dubbo:service interface="com.fendo.dubbo.DemoService"应该为 <dubbo:service interface="org.dubbo.api.DemoService"(文中已修改)

将log4j.xml改为log4j.properties

新的provider.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:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://code.alibabatech.com/schema/dubbo
       http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
       
       
    <!--定义了提供方应用信息,用于计算依赖关系;在 dubbo-admin 或 dubbo-monitor 会显示这个名字,方便辨识-->
    <dubbo:application name="demotest-provider" owner="programmer" organization="dubbox"/>
    <!--使用 zookeeper 注册中心暴露服务,注意要先开启 zookeeper-->
    <dubbo:registry address="zookeeper://localhost:2181"/>
    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />
    <!--使用 dubbo 协议实现定义好的 api.PermissionService 接口-->
    <dubbo:service interface="org.dubbo.api.DemoService" ref="demoService" protocol="dubbo" />
    <!--具体实现该接口的 bean-->
    <bean id="demoService" class="org.dubbo.provider.impl.DemoServiceImpl"/>
</beans> 

注:删除工程导入时先导入maven,再导入maven moudle

重新运行后报错

[30/07/18 04:01:34:034 CST] main  INFO support.ClassPathXmlApplicationContext: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@504bae78: startup date [Mon Jul 30 16:01:34 CST 2018]; root of context hierarchy
[30/07/18 04:01:35:035 CST] main  INFO xml.XmlBeanDefinitionReader: Loading XML bean definitions from class path resource [provider.xml]
[30/07/18 04:01:35:035 CST] main  INFO logger.LoggerFactory: using logger: com.alibaba.dubbo.common.logger.log4j.Log4jLoggerAdapter
[30/07/18 04:01:35:035 CST] main  INFO config.AbstractConfig:  [DUBBO] The service ready on spring started. service: org.dubbo.api.DemoService, dubbo version: 2.5.3, current host: 127.0.0.1
[30/07/18 04:01:36:036 CST] main  INFO config.AbstractConfig:  [DUBBO] Export dubbo service org.dubbo.api.DemoService to local registry, dubbo version: 2.5.3, current host: 127.0.0.1
[30/07/18 04:01:36:036 CST] main  INFO config.AbstractConfig:  [DUBBO] Export dubbo service org.dubbo.api.DemoService to url dubbo://192.168.190.1:20880/org.dubbo.api.DemoService?anyhost=true&application=demotest-provider&dubbo=2.5.3&interface=org.dubbo.api.DemoService&methods=getPermissions&organization=dubbox&owner=programmer&pid=2312&side=provider×tamp=1532937696083, dubbo version: 2.5.3, current host: 127.0.0.1
[30/07/18 04:01:36:036 CST] main  INFO config.AbstractConfig:  [DUBBO] Register dubbo service org.dubbo.api.DemoService url dubbo://192.168.190.1:20880/org.dubbo.api.DemoService?anyhost=true&application=demotest-provider&dubbo=2.5.3&interface=org.dubbo.api.DemoService&methods=getPermissions&organization=dubbox&owner=programmer&pid=2312&side=provider×tamp=1532937696083 to registry registry://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=demotest-provider&dubbo=2.5.3&organization=dubbox&owner=programmer&pid=2312®istry=zookeeper×tamp=1532937696008, dubbo version: 2.5.3, current host: 127.0.0.1
Exception in thread "main" com.alibaba.dubbo.rpc.RpcException: Fail to start server(url: dubbo://192.168.190.1:20880/org.dubbo.api.DemoService?anyhost=true&application=demotest-provider&channel.readonly.sent=true&codec=dubbo&dubbo=2.5.3&heartbeat=60000&interface=org.dubbo.api.DemoService&methods=getPermissions&organization=dubbox&owner=programmer&pid=2312&side=provider×tamp=1532937696083) Failed to bind NettyServer on /192.168.190.1:20880, cause: Failed to bind to: /0.0.0.0:20880
	at com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol.createServer(DubboProtocol.java:289)
	at com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol.openServer(DubboProtocol.java:266)
	at com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol.export(DubboProtocol.java:253)
	at com.alibaba.dubbo.rpc.protocol.ProtocolListenerWrapper.export(ProtocolListenerWrapper.java:56)
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper.export(ProtocolFilterWrapper.java:55)
	at com.alibaba.dubbo.rpc.Protocol$Adpative.export(Protocol$Adpative.java)
	at com.alibaba.dubbo.registry.integration.RegistryProtocol.doLocalExport(RegistryProtocol.java:153)
	at com.alibaba.dubbo.registry.integration.RegistryProtocol.export(RegistryProtocol.java:107)
	at com.alibaba.dubbo.rpc.protocol.ProtocolListenerWrapper.export(ProtocolListenerWrapper.java:54)
	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper.export(ProtocolFilterWrapper.java:53)
	at com.alibaba.dubbo.rpc.Protocol$Adpative.export(Protocol$Adpative.java)
	at com.alibaba.dubbo.config.ServiceConfig.doExportUrlsFor1Protocol(ServiceConfig.java:485)
	at com.alibaba.dubbo.config.ServiceConfig.doExportUrls(ServiceConfig.java:281)
	at com.alibaba.dubbo.config.ServiceConfig.doExport(ServiceConfig.java:242)
	at com.alibaba.dubbo.config.ServiceConfig.export(ServiceConfig.java:143)
	at com.alibaba.dubbo.config.spring.ServiceBean.onApplicationEvent(ServiceBean.java:109)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:163)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:136)
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:381)
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:335)
	at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:855)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
	at org.dubbo.provider.Provider.main(Provider.java:10)
Caused by: com.alibaba.dubbo.remoting.RemotingException: Failed to bind NettyServer on /192.168.190.1:20880, cause: Failed to bind to: /0.0.0.0:20880
	at com.alibaba.dubbo.remoting.transport.AbstractServer.<init>(AbstractServer.java:72)
	at com.alibaba.dubbo.remoting.transport.netty.NettyServer.<init>(NettyServer.java:63)
	at com.alibaba.dubbo.remoting.transport.netty.NettyTransporter.bind(NettyTransporter.java:33)
	at com.alibaba.dubbo.remoting.Transporter$Adpative.bind(Transporter$Adpative.java)
	at com.alibaba.dubbo.remoting.Transporters.bind(Transporters.java:48)
	at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchanger.bind(HeaderExchanger.java:41)
	at com.alibaba.dubbo.remoting.exchange.Exchangers.bind(Exchangers.java:63)
	at com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol.createServer(DubboProtocol.java:287)
	... 24 more
Caused by: org.jboss.netty.channel.ChannelException: Failed to bind to: /0.0.0.0:20880
	at org.jboss.netty.bootstrap.ServerBootstrap.bind(ServerBootstrap.java:303)
	at com.alibaba.dubbo.remoting.transport.netty.NettyServer.doOpen(NettyServer.java:94)
	at com.alibaba.dubbo.remoting.transport.AbstractServer.<init>(AbstractServer.java:67)
	... 31 more
Caused by: java.net.BindException: Address already in use: bind
	at sun.nio.ch.Net.bind0(Native Method)
	at sun.nio.ch.Net.bind(Net.java:433)
	at sun.nio.ch.Net.bind(Net.java:425)
	at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
	at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
	at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.bind(NioServerSocketPipelineSink.java:148)
	at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.handleServerSocket(NioServerSocketPipelineSink.java:100)
	at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.eventSunk(NioServerSocketPipelineSink.java:74)
	at org.jboss.netty.channel.Channels.bind(Channels.java:468)
	at org.jboss.netty.channel.AbstractChannel.bind(AbstractChannel.java:192)
	at org.jboss.netty.bootstrap.ServerBootstrap$Binder.channelOpen(ServerBootstrap.java:348)
	at org.jboss.netty.channel.Channels.fireChannelOpen(Channels.java:176)
	at org.jboss.netty.channel.socket.nio.NioServerSocketChannel.<init>(NioServerSocketChannel.java:85)
	at org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory.newChannel(NioServerSocketChannelFactory.java:142)
	at org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory.newChannel(NioServerSocketChannelFactory.java:90)
	at org.jboss.netty.bootstrap.ServerBootstrap.bind(ServerBootstrap.java:282)
	... 33 more
[30/07/18 04:01:36:036 CST] DubboShutdownHook  INFO config.AbstractConfig:  [DUBBO] Run shutdown hook now., dubbo version: 2.5.3, current host: 127.0.0.1
[30/07/18 04:01:36:036 CST] DubboShutdownHook  INFO support.AbstractRegistryFactory:  [DUBBO] Close all registries [], dubbo version: 2.5.3, current host: 127.0.0.1
[30/07/18 04:01:36:036 CST] DubboShutdownHook  INFO dubbo.DubboProtocol:  [DUBBO] Unexport service: dubbo://192.168.190.1:20880/org.dubbo.api.DemoService?anyhost=true&application=demotest-provider&dubbo=2.5.3&interface=org.dubbo.api.DemoService&methods=getPermissions&organization=dubbox&owner=programmer&pid=2312&side=provider×tamp=1532937696083, dubbo version: 2.5.3, current host: 127.0.0.1
[30/07/18 04:01:36:036 CST] DubboShutdownHook  INFO injvm.InjvmProtocol:  [DUBBO] Unexport service: injvm://127.0.0.1/org.dubbo.api.DemoService?anyhost=true&application=demotest-provider&dubbo=2.5.3&interface=org.dubbo.api.DemoService&methods=getPermissions&organization=dubbox&owner=programmer&pid=2312&side=provider×tamp=1532937696083, dubbo version: 2.5.3, current host: 127.0.0.1

解决: 

找到dubbo.xsd文件内容新建一个dubbo.xsd文件后通过xml log导入

 

完整示例:https://download.youkuaiyun.com/download/qq_34649969/10574048

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值