一、在服务端的pom.xml文件中添加dubbo的依赖
<!-- dubbo相关 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> </exclusion> <exclusion> <groupId>org.jboss.netty</groupId> <artifactId>netty</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> </dependency> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> </dependency> <!-- 出现java.lang.NoClassDefFoundError: org/apache/curator/RetryPolicy错误时加的 --> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>4.0.1</version> </dependency>
没有版本号对吧?因为在父工程里面的pom.xml里都指定了版本号了
<properties> <junit.version>4.12</junit.version> <spring.version>5.0.3.RELEASE</spring.version> <mybatis.version>3.4.5</mybatis.version> <mybatis.spring.version>1.3.2</mybatis.spring.version> <mybatis.paginator.version>1.2.17</mybatis.paginator.version> <mysql.version>8.0.11</mysql.version> <slf4j.version>1.7.25</slf4j.version> <jackson.version>2.9.5</jackson.version> <druid.version>1.1.9</druid.version> <!-- Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。 --> <!-- HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。 --> <httpclient.version>4.3.5</httpclient.version> <jstl.version>1.2</jstl.version> <servlet-api.version>2.5</servlet-api.version> <jsp-api.version>2.0</jsp-api.version> <joda-time.version>2.5</joda-time.version> <commons-lang3.version>3.3.2</commons-lang3.version> <!-- <commons-io.version>2.6</commons-io.version> --> <commons-io.version>1.3.2</commons-io.version> <commons-net.version>3.3</commons-net.version> <!-- <pagehelper.version>3.4.2-fix</pagehelper.version> --> <pagehelper.version>5.1.4</pagehelper.version> <jsqlparser.version>1.1</jsqlparser.version> <!-- JSqlParser解析SQL语句,并转化为Java类的层次结构,生成的层次结构可使用访问者模式。 --> <commons-fileupload.version>1.3.3</commons-fileupload.version> <jedis.version>2.9.0</jedis.version> <!-- jedis就是集成了redis的一些命令操作,封装了redis的java客户端。提供了连接池管理。一般不直接使用jedis,而是在其上在封装一层,作为业务的使用。 --> <solrj.version>7.3.0</solrj.version> <!-- Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。 --><!-- Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。 简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求, 并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者与消费者的方式在dubbo上注册) --> <dubbo.version>2.6.1</dubbo.version><!-- ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者, 监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户 --> <zookeeper.version>3.4.12</zookeeper.version> <zkclient.version>0.1</zkclient.version> <activemq.version>5.11.2</activemq.version><!-- 就是message queue,也就是消息队列,也就是处理消息的,也就是处理JMS的。 --> <!-- freeMarker则是提前根据模板生成好html的静态页面,这样在访问时,直接访问到的就是一个静态页面,这个就是效率问题了,不过freeMarker适合用变化不大,但是内容很多的网页。 --> <freemarker.version>2.3.28</freemarker.version> <quartz.version>2.3.0</quartz.version><!-- 定时任务 --> </properties> <!-- dubbo相关 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>${dubbo.version}</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>${zookeeper.version}</version> </dependency> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>${zkclient.version}</version> </dependency> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>${activemq.version}</version> </dependency> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>${freemarker.version}</version> </dependency>
下面的使用服务里面照样也没有版本号
二、在发布方的spring配置文件中添加dubbo的约束,然后使用dubbo:service发布服务。------>发布成功
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- spring 可以自动去扫描 base-package下面的包或子包下面的Java文件,如果扫描到有Spring的相关注解的类,则把这些类注册为Spring的bean --> <context:component-scan base-package="com.shun.service"/> <!-- 使用dubbo发布服务 --> <!-- 提供方应用信息,用于计算依赖关系 --> <dubbo:application name="ylf-manager" /> <!-- 使用zookeeper作为注册中心,这个注册中心放在linux机上,记得启动 https://blog.csdn.net/qq_36138324/article/details/80197802 --> <dubbo:registry protocol="zookeeper" address="${zookeeper.ipAndProt}" /> <!-- 用dubbo协议默认在20880端口暴露服务,默认端口是20880 --> <dubbo:protocol name="dubbo" port="20880" /> <!-- 声明需要暴露的服务接口,引用的itemServiceImpl来自于spring自动扫描到的实现类,实现类的类名上写了@Service --> <dubbo:service interface="com.shun.service.ItemService" ref="itemServiceImpl" /> </beans>
三、使用端的调用,添加依赖到pom.xml
<!-- dubbo相关 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> </exclusion> <exclusion> <groupId>org.jboss.netty</groupId> <artifactId>netty</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> </dependency> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> </dependency> <!-- 出现java.lang.NoClassDefFoundError: org/apache/curator/RetryPolicy错误时加的 --> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>4.0.1</version> </dependency>
四、在使用端的springmvc的配置文件中添加服务的引用。------>调用配置完毕
<?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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- spring 可以自动去扫描 base-package下面的包或子包下面的Java文件,如果扫描到有Spring的相关注解的类,则把这些类注册为Spring的bean --> <context:component-scan base-package="com.shun.controller"/> <!-- 配置注解驱动,用来配置量两大组件 <mvc:annotation-driven /> 是一种简写形式,完全可以手动配置替代这种简写形式,简写形式可以让初学都快速应用默认配置方案。 <mvc:annotation-driven /> 会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean 是spring MVC为@Controllers分发请求所必须的,即解决了@Controller注解使用的前提配置。 同时它还提供了:数据绑定支持,@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持 读写XML的支持(JAXB,读写JSON的支持(Jackson)。 我们处理响应ajax请求时,就使用到了对json的支持(配置之后,在加入了jackson的core和mapper包之后,不写配置文件也能自动转换成json) --> <mvc:annotation-driven/> <!-- 配置视图解释器加上上面的mvc:annotation-driven就叫做三大组件 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> <!-- 放行静态资源 如js/jquery.dataTables.min.js --> <mvc:resources location="/css/" mapping="/css/**"/> <mvc:resources location="/js/" mapping="/js/**"/> <mvc:resources location="/fonts/" mapping="/fonts/**"/> <!-- 引用dubbo服务 --> <dubbo:application name="ylf-web"/> <dubbo:registry protocol="zookeeper" address="118.89.226.190:2181"/><!-- <dubbo:reference interface="com.shun.service.ItemService" id="itemServiceImpl" /> --> <dubbo:reference id="itemServiceImpl" interface="com.shun.service.ItemService" check="false" timeout="12000"/> </beans>
五、分别在服务端与调用端添加tomcat7插件,端口记得改一下,这里就只展示一个
<build> <plugins> <!-- 配置Tomcat插件 --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <configuration> <port>8080</port> <!-- 端口直接可以在这里进行修改 --> <path>/</path> <!-- 配置斜杠能够达到默认访问localhost:8080就可以访问项目的目的 --> </configuration> </plugin> </plugins> </build>