1.Dubbo快速入门
2.现在需要修改dubbo-web和dubbo-service这两个模块;
1)首先,先修改dubbo-service模块的代码;
(1)先修改pom.xml文件加入打包方式为war包;
(2)接着修改pom.xml文件中的tomcat插件部分的端口号为9000;
(3)在UserServiceImpl类中注掉类上的@Service,然后重新在类上加下@Service,两者看似一样,但导入的包不同;
import org.springframework.stereotype.Service //第一次导入的包
import org.apache.dubbo.config.annotation.Service; //第二次导入Service的包 ;dubbo这个包提供的Service将这个类提供的方法(服务)对外发布。将访问的地址:ip ,端口,路径注册到注册中心
(4)在resource的spring目录下。配置applicationContext.xml文件;
(5)将dubbo-web模块中的webapp目录整体拷贝一份,粘贴在dubbo-service的src/main目录下;
(6)删除掉web.xml文件中的springmvc这个配置;
删除后的web.xml文件内容如下所示:
(7)启动dubbo-service这个项目;
2)接着,修改dubbo-web这个项目模块;
(1)首先,在pom.xml文件中注释掉对dubbo-service模块的依赖;也就是不要如下蓝框中的代码:
(2)这时,UserController这个类可能由于缺少UserService这个包会报错;第一种解决方法:在com.itheima的包下新建一个service包,在该包下新建一个UserService接口,在该接口中新建一个sayHello()抽象方法;
(3)在dubbo-web模块项目下,webapp/WEB-INF目录下,有一个web.xml文件,删除掉web.xml文件中的spring依赖:
(4)在UserController类中,注释掉UserService上的@Autowired注解,在这个类上重新注入@Reference注解,注意这个注解所在的包在dubbo里面;
(5)在springmvc.xml文件中,添加如下代码;
<!--dubbo的配置-->
<!--1.配置项目名称,唯一-->
<dubbo:application name="dubbo-web"/>
<!--2.配置注册中心得地址-->
<dubbo:registry address="zookeeper://192.168.149.129:2181" />
<!--3.配置dubbo包扫描-->
<dubbo:annotation package="com.itheima.controller"/>
(6)启动dubbo-web模块项目;
(7)打开浏览器输入以下网址,进行测试;
http://localhost:8000/user/sayHello.do
(8)查看浏览器可以正常访问到;但是控制台会有报错,生产环境下一般不会报这样的错误;
解决办法:
修改dubbo-web模块的springmvc.xml文件;需要做修改的如下标红的部分;
修改完后,重新启动dubbo-web模块,然后,打开浏览器,访问
http://localhost:8000/user/sayHello.do
控制台就不在报错了;
3)将dubbo-service的UserService接口抽取出来,这样,就避免了在dubbo-web模块中重新声明这个UserService了,这是上面那个问题的另一个解决办法;大体架构如下所示:
(1)再在dubbo-pro项目下,新建一个maven模块,如下所示
(2)在这个新建的dubbo-interface模块中,src/main/java目录下,新建一个com.itheima.service包,然后,将dubbo-service模块中的UserService接口拷贝一份在这个目录下,
(3)然后,删除掉dubbo-service模块中UserService接口,和dubbo-web模块下的UserService接口以及service包;
(4)然后,在dubbo-service和dubbo-web模块的pom.xml文件中引入dubbo-interface的模块依赖;
<!--引入dubbo-interface模块-->
<dependency>
<groupId>com.itheima</groupId>
<artifactId>dubbo-interface</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
(5)检查一下,dubbo-service和dubbo-web模块的中的UserService是否报错,重新导一下包;
我的项目dubbo-web模块中的UserController类中引用的UserService模块没有报错,dubbo-service模块在的UserServiceImpl类中implements UserService 有报错,解决办法是重新导下包;
(6)然后就可以开始启动了,但在这个之前,你需要install一下dubbo-interface模块;然后,依序先启动dubbo-service,然后启动dubbo-web模块;
(7)注意在重启dubbo-service和dubbo-web模块之前,需要先暂停之前的启动;两个模块启动成功后,打开浏览器输入以下网址进行访问;
http://localhost:8000/user/sayHello.do