SSM和Dubbox服务入门讲解及源码Demo

开始前准备环境:

编译器:IDEA

开发环境:Win 10 

Linux:安装好Zookeeper注册中心

一、使用VM搭建好JDK环境等

这个就不在此说明如何搭建了,后面直接上干货;

二、搭建zookeeper环境

将 zookeeper-3.4.6.tar.gz(后面会提供资源) 上传到linux上你喜欢的目录下,博主就直接传到root目录下,上传成功会将其解压 。

1、解压zookeeper-3.4.6.tar.gz

tar -zxvf zookeeper-3.4.6.tar.gz

2、进入 zookeeper-3.4.6 目录,创建 data 文件夹 

mkdir data

3、进入conf目录 ,把 zoo_sample.cfg 改名为 zoo.cfg

cd conf

mv zoo_sample.cfg zoo.cfg

4、打开zoo.cfg ,  修改 data 属性:

dataDir=/root/zookeeper-3.4.6/data

5、进入bin目录,启动服务输入命令

./zkServer.sh start

三、将dubbo-2.8.4.jar 部署到Maven库中

由于duboox并没有上传坐标到Maven仓库中,所以使用Maven进行开发时,需要我们自己将jar包安装到仓库中。

1、复制我提供的dubbo-2.8.4.jar (后面会提供)到任意非中文路径的目录下,博主放在d:\setup

2、然后输入cmd命令进行打包

mvn install:install-file -Dfile=d:\setup\dubbo-2.8.4.jar -DgroupId=com.alibaba -DartifactId=dubbo -Dversion=2.8.4 -Dpackaging=jar
 
 

四、工程的搭建

在上面三步,我们以及搭建好了基本的环境,下面我们将进入正题。

1、创建服务提供者工程(war)  DubboService 

 

1.1、pom.xml中引入依赖


 
 
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation= "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0 </modelVersion>
  5. <groupId>lhz.lx </groupId>
  6. <artifactId>Dubbox-service </artifactId>
  7. <version>1.0-SNAPSHOT </version>
  8. <packaging>war </packaging>
  9. <properties>
  10. <spring.version>4.2.4.RELEASE </spring.version>
  11. </properties>
  12. <dependencies>
  13. <!-- Spring -->
  14. <dependency>
  15. <groupId>org.springframework </groupId>
  16. <artifactId>spring-context </artifactId>
  17. <version>${spring.version} </version>
  18. </dependency>
  19. <dependency>
  20. <groupId>org.springframework </groupId>
  21. <artifactId>spring-beans </artifactId>
  22. <version>${spring.version} </version>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.springframework </groupId>
  26. <artifactId>spring-webmvc </artifactId>
  27. <version>${spring.version} </version>
  28. </dependency>
  29. <dependency>
  30. <groupId>org.springframework </groupId>
  31. <artifactId>spring-jdbc </artifactId>
  32. <version>${spring.version} </version>
  33. </dependency>
  34. <dependency>
  35. <groupId>org.springframework </groupId>
  36. <artifactId>spring-aspects </artifactId>
  37. <version>${spring.version} </version>
  38. </dependency>
  39. <dependency>
  40. <groupId>org.springframework </groupId>
  41. <artifactId>spring-jms </artifactId>
  42. <version>${spring.version} </version>
  43. </dependency>
  44. <dependency>
  45. <groupId>org.springframework </groupId>
  46. <artifactId>spring-context-support </artifactId>
  47. <version>${spring.version} </version>
  48. </dependency>
  49. <!-- dubbo相关 -->
  50. <dependency>
  51. <groupId>com.alibaba </groupId>
  52. <artifactId>dubbo </artifactId>
  53. <version>2.8.4 </version>
  54. </dependency>
  55. <dependency>
  56. <groupId>org.apache.zookeeper </groupId>
  57. <artifactId>zookeeper </artifactId>
  58. <version>3.4.6 </version>
  59. </dependency>
  60. <dependency>
  61. <groupId>com.github.sgroschupf </groupId>
  62. <artifactId>zkclient </artifactId>
  63. <version>0.1 </version>
  64. </dependency>
  65. <dependency>
  66. <groupId>javassist </groupId>
  67. <artifactId>javassist </artifactId>
  68. <version>3.11.0.GA </version>
  69. </dependency>
  70. </dependencies>
  71. <build>
  72. <plugins>
  73. <plugin>
  74. <groupId>org.apache.maven.plugins </groupId>
  75. <artifactId>maven-compiler-plugin </artifactId>
  76. <version>2.3.2 </version>
  77. <configuration>
  78. <source>1.7 </source>
  79. <target>1.7 </target>
  80. </configuration>
  81. </plugin>
  82. <plugin>
  83. <groupId>org.apache.tomcat.maven </groupId>
  84. <artifactId>tomcat7-maven-plugin </artifactId>
  85. <configuration>
  86. <!-- 指定端口 -->
  87. <port>8081 </port>
  88. <!-- 请求路径 -->
  89. <path>/ </path>
  90. </configuration>
  91. </plugin>
  92. </plugins>
  93. </build>
  94. </project>

1.2、创建web.xml


 
 
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  3. <display-name>ssm0523 </display-name>
  4. <!-- 加载spring容器 -->
  5. <context-param>
  6. <param-name>contextConfigLocation </param-name>
  7. <param-value>classpath:ApplicationContext-*.xml </param-value>
  8. </context-param>
  9. <listener>
  10. <listener-class>org.springframework.web.context.ContextLoaderListener </listener-class>
  11. </listener>
  12. </web-app>

1.3、创建业务接口


 
 
  1. package lhz.lx.service;
  2. public interface UserService {
  3. public String getName();
  4. }

1.4、创建业务实现类


 
 
  1. package lhz.lx.service.impl;
  2. import com.alibaba.dubbo.config.annotation.Service;
  3. import lhz.lx.service.UserService;
  4. @Service
  5. public class UserServiceImpl implements UserService {
  6. @Override
  7. public String getName() {
  8. return "使用了Dubbo进行连接";
  9. }
  10. }

注意:Service注解与原来不同,需要引入com.alibaba包下的,import com.alibaba.dubbo.config.annotation.Service;

1.5、编写配置文件ApplicationContext-service.xml


 
 
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:context= "http://www.springframework.org/schema/context" xmlns:p= "http://www.springframework.org/schema/p"
  4. xmlns:aop= "http://www.springframework.org/schema/aop" xmlns:tx= "http://www.springframework.org/schema/tx"
  5. xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo= "http://code.alibabatech.com/schema/dubbo"
  6. xsi:schemaLocation= "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
  7. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
  8. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
  9. http://www.springframework.org/schema/tx
  10. http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
  11. 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">
  12. <!--暴露服务-->
  13. <dubbo:application name="Dubbox-service"/>
  14. <dubbo:registry address="zookeeper://192.168.25.128:2181"/>
  15. <dubbo:annotation package="lhz.lx.service.impl" />
  16. </beans>

1.6、运行测试

配置Maven的运行

2、服务的消费者工程(war) DubboWeb开发

2.1、引入pom文件

区别就是把tomcat插件的运行端口 。

2.2、创建web.xml


 
 
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  3. <display-name>ssm0523 </display-name>
  4. <!-- springmvc前端控制器 -->
  5. <servlet>
  6. <servlet-name>springMvc </servlet-name>
  7. <servlet-class>org.springframework.web.servlet.DispatcherServlet </servlet-class>
  8. <init-param>
  9. <param-name>contextConfigLocation </param-name>
  10. <param-value>classpath:SpringMvc.xml </param-value>
  11. </init-param>
  12. <!-- 在tomcat启动的时候就加载这个servlet -->
  13. <load-on-startup>1 </load-on-startup>
  14. </servlet>
  15. <servlet-mapping>
  16. <servlet-name>springMvc </servlet-name>
  17. <url-pattern>/ </url-pattern>
  18. </servlet-mapping>
  19. <!-- 配置Post请求乱码 -->
  20. <filter>
  21. <filter-name>CharacterEncodingFilter </filter-name>
  22. <filter-class>org.springframework.web.filter.CharacterEncodingFilter </filter-class>
  23. <init-param>
  24. <param-name>encoding </param-name>
  25. <param-value>utf-8 </param-value>
  26. </init-param>
  27. </filter>
  28. <filter-mapping>
  29. <filter-name>CharacterEncodingFilter </filter-name>
  30. <url-pattern>/* </url-pattern>
  31. </filter-mapping>
  32. </web-app>

2.3、拷贝业务接口

将Dubbo-Service工程下的接口(lhz.lx.service)内容考到Dubbo-Web下。

2.4、编写Controller


 
 
  1. package lhz.lx.controller;
  2. import com.alibaba.dubbo.config.annotation.Reference;
  3. import lhz.lx.service.UserService;
  4. import org.springframework.stereotype.Controller;
  5. import org.springframework.web.bind.annotation.RequestMapping;
  6. import org.springframework.web.bind.annotation.ResponseBody;
  7. @Controller
  8. @RequestMapping( "/user")
  9. public class UserController {
  10. @Reference
  11. private UserService userService;
  12. @RequestMapping( "/showName")
  13. @ResponseBody
  14. public String showName(){
  15. System.out.println( "访问了");
  16. return userService.getName();
  17. }
  18. }

注意:使用注解 @Reference 来引入Service接口

2.5、创建SpringMvc.xml 文件


 
 
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xmlns:p= "http://www.springframework.org/schema/p"
  4. xmlns:context= "http://www.springframework.org/schema/context"
  5. xmlns:mvc= "http://www.springframework.org/schema/mvc" xmlns:dubbo= "http://code.alibabatech.com/schema/dubbo"
  6. xsi:schemaLocation= "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
  7. http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
  8. 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">
  9. <mvc:annotation-driven >
  10. <mvc:message-converters register-defaults="false">
  11. <bean class="org.springframework.http.converter.StringHttpMessageConverter">
  12. <constructor-arg value="UTF-8" />
  13. </bean>
  14. </mvc:message-converters>
  15. </mvc:annotation-driven>
  16. </bean>
  17. <!-- 引用dubbo 服务 -->
  18. <dubbo:application name="Dubbo-web" />
  19. <dubbo:registry address="zookeeper://192.168.25.128:2181"/>
  20. <dubbo:annotation package="lhz.lx.controller" />
  21. </beans>

五、注意

Zookeeper的地址一定要和虚拟机里面的ip地址一直。

源码地址:https://download.csdn.net/download/zhuocailing3390/10720241

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值