1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <modelVersion>4.0.0</modelVersion> 6 7 <groupId>com.itheima</groupId> 8 <artifactId>provider</artifactId> 9 <version>1.0-SNAPSHOT</version> 10 <packaging>war</packaging> 11 12 <name>provider Maven Webapp</name> 13 <!-- FIXME change it to the project‘s website --> 14 <url>http://www.example.com</url> 15 16 <properties> 17 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 18 <maven.compiler.source>1.7</maven.compiler.source> 19 <maven.compiler.target>1.7</maven.compiler.target> 20 </properties> 21 22 <dependencies> 23 <dependency> 24 <groupId>junit</groupId> 25 <artifactId>junit</artifactId> 26 <version>4.12</version> 27 </dependency> 28 <dependency> 29 <groupId>org.springframework</groupId> 30 <artifactId>spring-context</artifactId> 31 <version>5.0.2.RELEASE</version> 32 </dependency> 33 <dependency> 34 <groupId>org.springframework</groupId> 35 <artifactId>spring-beans</artifactId> 36 <version>5.0.2.RELEASE</version> 37 </dependency> 38 <dependency> 39 <groupId>org.springframework</groupId> 40 <artifactId>spring-webmvc</artifactId> 41 <version>5.0.2.RELEASE</version> 42 </dependency> 43 <dependency> 44 <groupId>org.springframework</groupId> 45 <artifactId>spring-jdbc</artifactId> 46 <version>5.0.2.RELEASE</version> 47 </dependency> 48 <dependency> 49 <groupId>org.springframework</groupId> 50 <artifactId>spring-aspects</artifactId> 51 <version>4.2.4.RELEASE</version> 52 </dependency> 53 <dependency> 54 <groupId>org.springframework.repo.org.springframework</groupId> 55 <artifactId>spring-jms</artifactId> 56 <version>5.0.5.RELEASE</version> 57 </dependency> 58 <dependency> 59 <groupId>org.springframework</groupId> 60 <artifactId>spring-context-support</artifactId> 61 <version>5.0.2.RELEASE</version> 62 </dependency> 63 <dependency> 64 <groupId>com.alibaba</groupId> 65 <artifactId>dubbo</artifactId> 66 <version>2.6.0</version> 67 </dependency> 68 <dependency> 69 <groupId>org.apache.zookeeper</groupId> 70 <artifactId>zookeeper</artifactId> 71 <version>3.4.7</version> 72 </dependency> 73 <dependency> 74 <groupId>com.github.sgroschupf</groupId> 75 <artifactId>zkclient</artifactId> 76 <version>0.1</version> 77 </dependency> 78 <dependency> 79 <groupId>javassist</groupId> 80 <artifactId>javassist</artifactId> 81 <version>3.12.1.GA</version> 82 </dependency> 83 <dependency> 84 <groupId>com.alibaba</groupId> 85 <artifactId>fastjson</artifactId> 86 <version>1.2.47</version> 87 </dependency> 88 </dependencies> 89 <build> 90 <plugins> 91 <plugin> 92 <groupId>org.apache.maven.plugins</groupId> 93 <artifactId>maven-compiler-plugin</artifactId> 94 <version>2.3.2</version> 95 <configuration> 96 <source>1.8</source> 97 <target>1.8</target> 98 </configuration> 99 </plugin> 100 <plugin> 101 <groupId>org.apache.tomcat.maven</groupId> 102 <artifactId>tomcat7-maven-plugin</artifactId> 103 <configuration> 104 <!-- 指定端口 --> 105 <port>89</port> 106 <!-- 请求路径 --> 107 <path>/</path> 108 </configuration> 109 </plugin> 110 </plugins> 111 </build> 112 113 </project>
1 <!DOCTYPE web-app PUBLIC 2 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 3 "http://java.sun.com/dtd/web-app_2_3.dtd" > 4 5 <web-app> 6 <display-name>Archetype Created Web Application</display-name> 7 <context-param> 8 <param-name>contextConfigLocation</param-name> 9 <param-value>classpath:applicationContext-service.xml</param-value> 10 </context-param> 11 12 13 <listener> 14 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 15 </listener> 16 </web-app>
1 package com.itheima.service; 2 3 public interface HelloService { 4 public String sayHello(String name); 5 }
1 package com.itheima.service.impl; 2 3 import com.alibaba.dubbo.config.annotation.Service; 4 import com.itheima.service.HelloService; 5 @Service//发布服务用dubbo的service 6 public class HelloServiceImpl implements HelloService { 7 @Override 8 public String sayHello (String name) { 9 System.out.println("服务的sayhello方法调用了"); 10 return "hello"+name; 11 } 12 }
其中:5 @Service//发布服务用dubbo的service
导包处: 3 import com.alibaba.dubbo.config.annotation.Service;
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" 4 xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" 5 xmlns:aop="http://www.springframework.org/schema/aop" 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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> 7 8 <dubbo:application name="provider"/> 9 <dubbo:registry address="zookeeper://192.168.139.129:2181"/> 10 <dubbo:protocol name="dubbo" port="20880"></dubbo:protocol> 11 <dubbo:annotation package="com.itheima.service.impl"/> 12 </beans>
1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <modelVersion>4.0.0</modelVersion> 6 7 <groupId>com.itheima</groupId> 8 <artifactId>consummmeerr</artifactId> 9 <version>1.0-SNAPSHOT</version> 10 <packaging>war</packaging> 11 12 <name>consummmeerr Maven Webapp</name> 13 <!-- FIXME change it to the project‘s website --> 14 <url>http://www.example.com</url> 15 16 <properties> 17 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 18 <maven.compiler.source>1.7</maven.compiler.source> 19 <maven.compiler.target>1.7</maven.compiler.target> 20 </properties> 21 22 <dependencies> 23 <dependency> 24 <groupId>junit</groupId> 25 <artifactId>junit</artifactId> 26 <version>4.12</version> 27 </dependency> 28 <dependency> 29 <groupId>org.springframework</groupId> 30 <artifactId>spring-context</artifactId> 31 <version>5.0.2.RELEASE</version> 32 </dependency> 33 <dependency> 34 <groupId>org.springframework</groupId> 35 <artifactId>spring-beans</artifactId> 36 <version>5.0.2.RELEASE</version> 37 </dependency> 38 <dependency> 39 <groupId>org.springframework</groupId> 40 <artifactId>spring-webmvc</artifactId> 41 <version>5.0.2.RELEASE</version> 42 </dependency> 43 <dependency> 44 <groupId>org.springframework</groupId> 45 <artifactId>spring-jdbc</artifactId> 46 <version>5.0.2.RELEASE</version> 47 </dependency> 48 <dependency> 49 <groupId>org.springframework</groupId> 50 <artifactId>spring-aspects</artifactId> 51 <version>4.2.4.RELEASE</version> 52 </dependency> 53 <dependency> 54 <groupId>org.springframework.repo.org.springframework</groupId> 55 <artifactId>spring-jms</artifactId> 56 <version>5.0.5.RELEASE</version> 57 </dependency> 58 <dependency> 59 <groupId>org.springframework</groupId> 60 <artifactId>spring-context-support</artifactId> 61 <version>5.0.2.RELEASE</version> 62 </dependency> 63 <dependency> 64 <groupId>com.alibaba</groupId> 65 <artifactId>dubbo</artifactId> 66 <version>2.6.0</version> 67 </dependency> 68 <dependency> 69 <groupId>org.apache.zookeeper</groupId> 70 <artifactId>zookeeper</artifactId> 71 <version>3.4.7</version> 72 </dependency> 73 <dependency> 74 <groupId>com.github.sgroschupf</groupId> 75 <artifactId>zkclient</artifactId> 76 <version>0.1</version> 77 </dependency> 78 <dependency> 79 <groupId>javassist</groupId> 80 <artifactId>javassist</artifactId> 81 <version>3.12.1.GA</version> 82 </dependency> 83 <dependency> 84 <groupId>com.alibaba</groupId> 85 <artifactId>fastjson</artifactId> 86 <version>1.2.47</version> 87 </dependency> 88 </dependencies> 89 <build> 90 <plugins> 91 <plugin> 92 <groupId>org.apache.maven.plugins</groupId> 93 <artifactId>maven-compiler-plugin</artifactId> 94 <version>2.3.2</version> 95 <configuration> 96 <source>1.8</source> 97 <target>1.8</target> 98 </configuration> 99 </plugin> 100 <plugin> 101 <groupId>org.apache.tomcat.maven</groupId> 102 <artifactId>tomcat7-maven-plugin</artifactId> 103 <configuration> 104 <!-- 指定端口 --> 105 <port>82</port> 106 <!-- 请求路径 --> 107 <path>/</path> 108 </configuration> 109 </plugin> 110 </plugins> 111 </build> 112 </project>
1 <!DOCTYPE web-app PUBLIC 2 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 3 "http://java.sun.com/dtd/web-app_2_3.dtd" > 4 <web-app> 5 <display-name>Archetype Created Web Application</display-name> 6 <servlet> 7 <servlet-name>springmvc</servlet-name> 8 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 9 <!-- 指定加载的配置文件 ,通过参数contextConfigLocation加载 --> 10 <init-param> 11 <param-name>contextConfigLocation</param-name> 12 <param-value>classpath:applicationContext-web.xml</param-value> 13 </init-param> 14 <load-on-startup>1</load-on-startup> 15 </servlet> 16 <servlet-mapping> 17 <servlet-name>springmvc</servlet-name> 18 <url-pattern>*.do</url-pattern> 19 </servlet-mapping> 20 </web-app>
1 package com.itheima.service; 2 3 public interface HelloService { 4 public String sayHello (String name); 5 }
1 package com.itheima.controller; 2 3 import com.alibaba.dubbo.config.annotation.Reference; 4 import com.itheima.service.HelloService; 5 import org.springframework.stereotype.Controller; 6 import org.springframework.web.bind.annotation.RequestMapping; 7 import org.springframework.web.bind.annotation.ResponseBody; 8 9 10 @Controller 11 @RequestMapping("/hello") 12 13 public class DubboController { 14 @Reference 15 private HelloService helloService; 16 @RequestMapping("/sayHello") 17 @ResponseBody 18 public String sayHello(){ 19 String s = helloService.sayHello("tom"); 20 System.out.println("我是controller的方法获得结果"+s); 21 return "hello"+s; 22 } 23 }
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" 4 xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" 5 xmlns:aop="http://www.springframework.org/schema/aop" 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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> 7 8 <!-- 当前应用名称,用于注册中心计算应用间依赖关系,注意:消费者和提供者应用名不要一样 --> 9 <dubbo:application name="dubbodemo-consumer" /> 10 <!-- 连接服务注册中心zookeeper ip为zookeeper所在服务器的ip地址--> 11 <dubbo:registry address="zookeeper://192.168.139.129:2181"/> 12 <!-- 扫描的方式暴露接口 --> 13 <dubbo:annotation package="com.itheima.controller" /> 14 </beans>
1 package com.itheima.controller; 2 3 import com.alibaba.dubbo.config.annotation.Reference; 4 import com.itheima.service.HelloService; 5 import org.springframework.stereotype.Controller; 6 import org.springframework.web.bind.annotation.RequestMapping; 7 import org.springframework.web.bind.annotation.ResponseBody; 8 9 10 @Controller 11 @RequestMapping("/hello") 12 13 public class DubboController { 14 @Reference 15 private HelloService helloService; 16 @RequestMapping("/sayHello") 17 @ResponseBody 18 public String sayHello(){ 19 String s = helloService.sayHello("tom"); 20 System.out.println("我是controller的方法获得结果"+s); 21 return "hello"+s; 22 } 23 }
applicationContext-web.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" 4 xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" 5 xmlns:aop="http://www.springframework.org/schema/aop" 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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> 7 8 <!-- 当前应用名称,用于注册中心计算应用间依赖关系,注意:消费者和提供者应用名不要一样 --> 9 <dubbo:application name="dubbodemo-consumer" /> 10 <!-- 连接服务注册中心zookeeper ip为zookeeper所在服务器的ip地址--> 11 <dubbo:registry address="zookeeper://192.168.139.129:2181"/> 12 <!-- 扫描的方式暴露接口 --> 13 <dubbo:annotation package="com.itheima.controller" /> 14 </beans>
答:这种做法显然是不好的,同一个接口被复制了两份,不利于后期维护。更好的方式是单独创建一个maven工程,将此接口创建在这个maven工程中。需要依赖此接口的工程只需要在自己工程的pom.xml文件中引入maven
原文:https://www.cnblogs.com/fengtangjiang/p/11235266.html