淘淘商城第十三课(引用dubbo服务)

上节课我们一起学习了如何发布一个dubbo服务,这节我们一起学习下web工程如何引用dubbo发布的服务。

         首先我们在web工程也需要添加dubbo的依赖,由于我们在taotao-manager-service工程已经添加了dubbo的依赖并且解决了包冲突的问题,那么我们便可以直接把taotao-manager-service工程下的关于dubbo的依赖部分拷贝过来,拷贝的内容如下:

  1. <!-- dubbo相关的jar包 -->
  2. <dependency>
  3. <groupId>com.alibaba </groupId>
  4. <artifactId>dubbo </artifactId>
  5. <exclusions>
  6. <exclusion>
  7. <artifactId>spring </artifactId>
  8. <groupId>org.springframework </groupId>
  9. </exclusion>
  10. <exclusion>
  11. <artifactId>netty </artifactId>
  12. <groupId>org.jboss.netty </groupId>
  13. </exclusion>
  14. </exclusions>
  15. </dependency>
  16. <dependency>
  17. <groupId>org.apache.zookeeper </groupId>
  18. <artifactId>zookeeper </artifactId>
  19. </dependency>
  20. <dependency>
  21. <groupId>com.github.sgroschupf </groupId>
  22. <artifactId>zkclient </artifactId>
  23. </dependency>
         拷贝后的taotao-manager-web工程的pom.xml文件的内容如下:

  1. <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">
  2. <modelVersion>4.0.0 </modelVersion>
  3. <parent>
  4. <groupId>com.taotao </groupId>
  5. <artifactId>taotao-parent </artifactId>
  6. <version>0.0.1-SNAPSHOT </version>
  7. </parent>
  8. <groupId>com.taotao </groupId>
  9. <artifactId>taotao-manager-web </artifactId>
  10. <version>0.0.1-SNAPSHOT </version>
  11. <packaging>war </packaging>
  12. <dependencies>
  13. <!-- 依赖taotao-common -->
  14. <dependency>
  15. <groupId>com.taotao </groupId>
  16. <artifactId>taotao-common </artifactId>
  17. <version>0.0.1-SNAPSHOT </version>
  18. </dependency>
  19. <!-- Spring -->
  20. <dependency>
  21. <groupId>org.springframework </groupId>
  22. <artifactId>spring-context </artifactId>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.springframework </groupId>
  26. <artifactId>spring-beans </artifactId>
  27. </dependency>
  28. <dependency>
  29. <groupId>org.springframework </groupId>
  30. <artifactId>spring-webmvc </artifactId>
  31. </dependency>
  32. <dependency>
  33. <groupId>org.springframework </groupId>
  34. <artifactId>spring-jdbc </artifactId>
  35. </dependency>
  36. <dependency>
  37. <groupId>org.springframework </groupId>
  38. <artifactId>spring-aspects </artifactId>
  39. </dependency>
  40. <dependency>
  41. <groupId>org.springframework </groupId>
  42. <artifactId>spring-jms </artifactId>
  43. </dependency>
  44. <dependency>
  45. <groupId>org.springframework </groupId>
  46. <artifactId>spring-context-support </artifactId>
  47. </dependency>
  48. <!-- JSP相关 -->
  49. <dependency>
  50. <groupId>jstl </groupId>
  51. <artifactId>jstl </artifactId>
  52. </dependency>
  53. <dependency>
  54. <groupId>javax.servlet </groupId>
  55. <artifactId>servlet-api </artifactId>
  56. <scope>provided </scope>
  57. </dependency>
  58. <dependency>
  59. <groupId>javax.servlet </groupId>
  60. <artifactId>jsp-api </artifactId>
  61. <scope>provided </scope>
  62. </dependency>
  63. <!-- dubbo相关的jar包 -->
  64. <dependency>
  65. <groupId>com.alibaba </groupId>
  66. <artifactId>dubbo </artifactId>
  67. <exclusions>
  68. <exclusion>
  69. <artifactId>spring </artifactId>
  70. <groupId>org.springframework </groupId>
  71. </exclusion>
  72. <exclusion>
  73. <artifactId>netty </artifactId>
  74. <groupId>org.jboss.netty </groupId>
  75. </exclusion>
  76. </exclusions>
  77. </dependency>
  78. <dependency>
  79. <groupId>org.apache.zookeeper </groupId>
  80. <artifactId>zookeeper </artifactId>
  81. </dependency>
  82. <dependency>
  83. <groupId>com.github.sgroschupf </groupId>
  84. <artifactId>zkclient </artifactId>
  85. </dependency>
  86. </dependencies>
  87. <build>
  88. <plugins>
  89. <plugin>
  90. <groupId>org.apache.tomcat.maven </groupId>
  91. <artifactId>tomcat7-maven-plugin </artifactId>
  92. <configuration>
  93. <path>/ </path>
  94. <port>8081 </port>
  95. </configuration>
  96. </plugin>
  97. </plugins>
  98. </build>
  99. </project>
       下面我们需要在taotao-manager-web工程下的springmvc.xml文件中引用dubbo服务,添加的内容如下。其中<dubbo:application name="taotao-manager-web"/>是要在注册中心申报一下名字,名字不能冲突。<dubbo:registry protocol="zookeeper" address="192.168.25.167:2181"/>同服务端一样,在注册中心注册下dubbo服务所在的IP及端口。<dubbo:reference interface="com.taotao.service.ItemService" id="itemService" />便是要引用服务端的接口了。

  1. <!-- 引用dubbo服务 -->
  2. <dubbo:application name="taotao-manager-web"/>
  3. <dubbo:registry protocol="zookeeper" address="192.168.25.167:2181"/>
  4. <dubbo:reference interface="com.taotao.service.ItemService" id="itemService" />

      引用dubbo服务之后springmvc的完整内容如下:

  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:dubbo= "http://code.alibabatech.com/schema/dubbo"
  6. xmlns:mvc= "http://www.springframework.org/schema/mvc"
  7. xsi:schemaLocation= "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
  8. http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
  9. http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
  10. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">
  11. <!-- 配置注解驱动 -->
  12. <mvc:annotation-driven />
  13. <!-- 视图解析器 -->
  14. <bean
  15. class= "org.springframework.web.servlet.view.InternalResourceViewResolver">
  16. <property name="prefix" value="/WEB-INF/jsp/" />
  17. <property name="suffix" value=".jsp" />
  18. </bean>
  19. <!-- 配置包扫描器,扫描@Controller注解的类 -->
  20. <context:component-scan base-package="com.taotao.controller"/>
  21. <!-- 引用dubbo服务 -->
  22. <dubbo:application name="taotao-manager-web"/>
  23. <dubbo:registry protocol="zookeeper" address="192.168.25.167:2181"/>
  24. <dubbo:reference interface="com.taotao.service.ItemService" id="itemService" />
  25. </beans>

      由于taotao-manager-web工程与taotao-mananger-interface是独立的两个工程,因此要在taotao-manager-web工程中要添加对taotao-manager-interface的依赖,添加的内容如下:

  1. <dependency>
  2. <groupId>com.taotao </groupId>
  3. <artifactId>taotao-manager-interface </artifactId>
  4. <version>0.0.1-SNAPSHOT </version>
  5. </dependency>
       添加后当前taotao-manager-web工程的pom.xml文件全部内容如下:

  1. <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">
  2. <modelVersion>4.0.0 </modelVersion>
  3. <parent>
  4. <groupId>com.taotao </groupId>
  5. <artifactId>taotao-parent </artifactId>
  6. <version>0.0.1-SNAPSHOT </version>
  7. </parent>
  8. <groupId>com.taotao </groupId>
  9. <artifactId>taotao-manager-web </artifactId>
  10. <version>0.0.1-SNAPSHOT </version>
  11. <packaging>war </packaging>
  12. <dependencies>
  13. <!-- 依赖taotao-common -->
  14. <dependency>
  15. <groupId>com.taotao </groupId>
  16. <artifactId>taotao-common </artifactId>
  17. <version>0.0.1-SNAPSHOT </version>
  18. </dependency>
  19. <dependency>
  20. <groupId>com.taotao </groupId>
  21. <artifactId>taotao-manager-interface </artifactId>
  22. <version>0.0.1-SNAPSHOT </version>
  23. </dependency>
  24. <!-- Spring -->
  25. <dependency>
  26. <groupId>org.springframework </groupId>
  27. <artifactId>spring-context </artifactId>
  28. </dependency>
  29. <dependency>
  30. <groupId>org.springframework </groupId>
  31. <artifactId>spring-beans </artifactId>
  32. </dependency>
  33. <dependency>
  34. <groupId>org.springframework </groupId>
  35. <artifactId>spring-webmvc </artifactId>
  36. </dependency>
  37. <dependency>
  38. <groupId>org.springframework </groupId>
  39. <artifactId>spring-jdbc </artifactId>
  40. </dependency>
  41. <dependency>
  42. <groupId>org.springframework </groupId>
  43. <artifactId>spring-aspects </artifactId>
  44. </dependency>
  45. <dependency>
  46. <groupId>org.springframework </groupId>
  47. <artifactId>spring-jms </artifactId>
  48. </dependency>
  49. <dependency>
  50. <groupId>org.springframework </groupId>
  51. <artifactId>spring-context-support </artifactId>
  52. </dependency>
  53. <!-- JSP相关 -->
  54. <dependency>
  55. <groupId>jstl </groupId>
  56. <artifactId>jstl </artifactId>
  57. </dependency>
  58. <dependency>
  59. <groupId>javax.servlet </groupId>
  60. <artifactId>servlet-api </artifactId>
  61. <scope>provided </scope>
  62. </dependency>
  63. <dependency>
  64. <groupId>javax.servlet </groupId>
  65. <artifactId>jsp-api </artifactId>
  66. <scope>provided </scope>
  67. </dependency>
  68. <!-- dubbo相关的jar包 -->
  69. <dependency>
  70. <groupId>com.alibaba </groupId>
  71. <artifactId>dubbo </artifactId>
  72. <exclusions>
  73. <exclusion>
  74. <artifactId>spring </artifactId>
  75. <groupId>org.springframework </groupId>
  76. </exclusion>
  77. <exclusion>
  78. <artifactId>netty </artifactId>
  79. <groupId>org.jboss.netty </groupId>
  80. </exclusion>
  81. </exclusions>
  82. </dependency>
  83. <dependency>
  84. <groupId>org.apache.zookeeper </groupId>
  85. <artifactId>zookeeper </artifactId>
  86. </dependency>
  87. <dependency>
  88. <groupId>com.github.sgroschupf </groupId>
  89. <artifactId>zkclient </artifactId>
  90. </dependency>
  91. </dependencies>
  92. <build>
  93. <plugins>
  94. <plugin>
  95. <groupId>org.apache.tomcat.maven </groupId>
  96. <artifactId>tomcat7-maven-plugin </artifactId>
  97. <configuration>
  98. <path>/ </path>
  99. <port>8081 </port>
  100. </configuration>
  101. </plugin>
  102. </plugins>
  103. </build>
  104. </project>
        maven更新完之后,我们可以在taotao-manager-web工程所依赖的包中找到taotao-manager-interface,如下图所示。

       添加完对taotao-manager-interface的依赖后,我们便可以直接使用它了。

        如果我们使用@ResponseBody注解后访问的时候报406错误(无法把对象转换为json串),90%是可能没有引入jackson包,我们到"Maven Dependencies"下查看是否有如下图所示的三个包。

        如果没有,那么我们需要在taotao-common工程的pom.xml文件中引入jackson的依赖,由于我们的taotao-mananger-web工程依赖了taotao-common,因此它会自动依赖jackson包。现在我们的taotao-common中是依赖了jackson的,因此我们不用做任何处理。

  1. <!-- Jackson Json处理工具包 -->
  2. <dependency>
  3. <groupId>com.fasterxml.jackson.core </groupId>
  4. <artifactId>jackson-databind </artifactId>
  5. </dependency>
       到此,我们的SSM框架整合便整合完了。

猜你喜欢

转载自blog.csdn.net/anaitudou/article/details/80843370