我是老余,在此记下一些自己解决的小问题
dubbo server配置
1. 配置provider.xml
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="hello-world-app"/>
<!-- 使用multicast广播注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880"/>
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="org.test.service.TestService" ref="testService" version="1.0.0"/>
<!-- 和本地bean一样实现服务 -->
<bean id="testService" class="org.test.service.impl.TestServiceImpl"/>
2.编写对应接口与实现类
org.test.service.TestService:
List<User> selectAll();
org.test.service.impl.TestServiceImpl:
@Override
public List<User> selectAll() {
List<User> list = new ArrayList<>();
User user = new User("a", 1);
User user2 = new User("b", 2);
list.add(user);
list.add(user2);
return list;
}
3.配置web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<!--指定配置文件位置-->
<param-value>classpath:provider.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>DispatcherServlet
</servlet-name>
<servlet-class>com.alibaba.dubbo.remoting.http.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
将接口打包为jar .. 到这里已经把项目打包发布到tomcat上了,如果需要看到web服务,需要在本地部署dubbo管理平台,可以到github上下载项目并编译打包,github地址为:https://github.com/alibaba/dubbo ,管理平台项目是dubbo-admin,编译完成后war包在target下
dubbo consumer端配置
先将dubbo中的spring依赖去掉:
1.将接口jar引入到项目,修改spring配置文件,加入dubbo consumer配置
<dubbo:application name="consumer-of-helloworld-app"/>
<!-- 使用multicast广播注册中心暴露发现服务地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>
<!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
<dubbo:reference id="testService" interface="org.test.service.TestService" version="1.0.0"/>
2.在项目中使用@Resource注解,spring会自动将bean注入
@Resource
private TestService testService;
@RequestMapping("/testDubbo")
public String testDubbo() {
Gson gson = new Gson();
return gson.toJson(testService.selectAll());
}