开始前准备环境:
编译器: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中引入依赖
-
<?xml version="1.0" encoding="UTF-8"?>
-
-
<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">
-
<modelVersion>4.0.0
</modelVersion>
-
-
<groupId>lhz.lx
</groupId>
-
<artifactId>Dubbox-service
</artifactId>
-
<version>1.0-SNAPSHOT
</version>
-
<packaging>war
</packaging>
-
-
-
<properties>
-
<spring.version>4.2.4.RELEASE
</spring.version>
-
</properties>
-
-
<dependencies>
-
<!-- Spring -->
-
<dependency>
-
<groupId>org.springframework
</groupId>
-
<artifactId>spring-context
</artifactId>
-
<version>${spring.version}
</version>
-
</dependency>
-
<dependency>
-
<groupId>org.springframework
</groupId>
-
<artifactId>spring-beans
</artifactId>
-
<version>${spring.version}
</version>
-
</dependency>
-
<dependency>
-
<groupId>org.springframework
</groupId>
-
<artifactId>spring-webmvc
</artifactId>
-
<version>${spring.version}
</version>
-
</dependency>
-
<dependency>
-
<groupId>org.springframework
</groupId>
-
<artifactId>spring-jdbc
</artifactId>
-
<version>${spring.version}
</version>
-
</dependency>
-
<dependency>
-
<groupId>org.springframework
</groupId>
-
<artifactId>spring-aspects
</artifactId>
-
<version>${spring.version}
</version>
-
</dependency>
-
<dependency>
-
<groupId>org.springframework
</groupId>
-
<artifactId>spring-jms
</artifactId>
-
<version>${spring.version}
</version>
-
</dependency>
-
<dependency>
-
<groupId>org.springframework
</groupId>
-
<artifactId>spring-context-support
</artifactId>
-
<version>${spring.version}
</version>
-
</dependency>
-
<!-- dubbo相关 -->
-
<dependency>
-
<groupId>com.alibaba
</groupId>
-
<artifactId>dubbo
</artifactId>
-
<version>2.8.4
</version>
-
</dependency>
-
<dependency>
-
<groupId>org.apache.zookeeper
</groupId>
-
<artifactId>zookeeper
</artifactId>
-
<version>3.4.6
</version>
-
</dependency>
-
<dependency>
-
<groupId>com.github.sgroschupf
</groupId>
-
<artifactId>zkclient
</artifactId>
-
<version>0.1
</version>
-
</dependency>
-
<dependency>
-
<groupId>javassist
</groupId>
-
<artifactId>javassist
</artifactId>
-
<version>3.11.0.GA
</version>
-
</dependency>
-
</dependencies>
-
-
<build>
-
<plugins>
-
-
<plugin>
-
<groupId>org.apache.maven.plugins
</groupId>
-
<artifactId>maven-compiler-plugin
</artifactId>
-
<version>2.3.2
</version>
-
<configuration>
-
<source>1.7
</source>
-
<target>1.7
</target>
-
</configuration>
-
</plugin>
-
-
<plugin>
-
<groupId>org.apache.tomcat.maven
</groupId>
-
<artifactId>tomcat7-maven-plugin
</artifactId>
-
<configuration>
-
<!-- 指定端口 -->
-
<port>8081
</port>
-
<!-- 请求路径 -->
-
<path>/
</path>
-
</configuration>
-
</plugin>
-
</plugins>
-
</build>
-
</project>
1.2、创建web.xml
-
<?xml version="1.0" encoding="UTF-8"?>
-
<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">
-
<display-name>ssm0523
</display-name>
-
-
-
<!-- 加载spring容器 -->
-
<context-param>
-
<param-name>contextConfigLocation
</param-name>
-
<param-value>classpath:ApplicationContext-*.xml
</param-value>
-
</context-param>
-
<listener>
-
<listener-class>org.springframework.web.context.ContextLoaderListener
</listener-class>
-
</listener>
-
-
-
</web-app>
1.3、创建业务接口
-
package lhz.lx.service;
-
-
public
interface UserService {
-
public String getName();
-
}
1.4、创建业务实现类
-
package lhz.lx.service.impl;
-
-
import com.alibaba.dubbo.config.annotation.Service;
-
import lhz.lx.service.UserService;
-
-
@Service
-
public
class UserServiceImpl implements UserService {
-
@Override
-
public String getName() {
-
return
"使用了Dubbo进行连接";
-
}
-
}
注意:Service注解与原来不同,需要引入com.alibaba包下的,import com.alibaba.dubbo.config.annotation.Service;
1.5、编写配置文件ApplicationContext-service.xml
-
<?xml version="1.0" encoding="UTF-8"?>
-
<beans xmlns="http://www.springframework.org/schema/beans"
-
xmlns:context=
"http://www.springframework.org/schema/context"
xmlns:p=
"http://www.springframework.org/schema/p"
-
xmlns:aop=
"http://www.springframework.org/schema/aop"
xmlns:tx=
"http://www.springframework.org/schema/tx"
-
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo=
"http://code.alibabatech.com/schema/dubbo"
-
xsi:schemaLocation=
"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
-
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
-
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
-
http://www.springframework.org/schema/tx
-
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
-
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">
-
-
-
<!--暴露服务-->
-
<dubbo:application name="Dubbox-service"/>
-
<dubbo:registry address="zookeeper://192.168.25.128:2181"/>
-
<dubbo:annotation package="lhz.lx.service.impl" />
-
</beans>
1.6、运行测试
配置Maven的运行
2、服务的消费者工程(war) DubboWeb开发
2.1、引入pom文件
区别就是把tomcat插件的运行端口 。
2.2、创建web.xml
-
<?xml version="1.0" encoding="UTF-8"?>
-
<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">
-
<display-name>ssm0523
</display-name>
-
<!-- springmvc前端控制器 -->
-
<servlet>
-
<servlet-name>springMvc
</servlet-name>
-
<servlet-class>org.springframework.web.servlet.DispatcherServlet
</servlet-class>
-
<init-param>
-
<param-name>contextConfigLocation
</param-name>
-
<param-value>classpath:SpringMvc.xml
</param-value>
-
</init-param>
-
<!-- 在tomcat启动的时候就加载这个servlet -->
-
<load-on-startup>1
</load-on-startup>
-
</servlet>
-
-
<servlet-mapping>
-
<servlet-name>springMvc
</servlet-name>
-
<url-pattern>/
</url-pattern>
-
</servlet-mapping>
-
-
<!-- 配置Post请求乱码 -->
-
<filter>
-
<filter-name>CharacterEncodingFilter
</filter-name>
-
<filter-class>org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
-
<init-param>
-
<param-name>encoding
</param-name>
-
<param-value>utf-8
</param-value>
-
</init-param>
-
</filter>
-
<filter-mapping>
-
<filter-name>CharacterEncodingFilter
</filter-name>
-
<url-pattern>/*
</url-pattern>
-
</filter-mapping>
-
-
</web-app>
2.3、拷贝业务接口
将Dubbo-Service工程下的接口(lhz.lx.service)内容考到Dubbo-Web下。
2.4、编写Controller
-
package lhz.lx.controller;
-
-
import com.alibaba.dubbo.config.annotation.Reference;
-
import lhz.lx.service.UserService;
-
import org.springframework.stereotype.Controller;
-
import org.springframework.web.bind.annotation.RequestMapping;
-
import org.springframework.web.bind.annotation.ResponseBody;
-
-
@Controller
-
@RequestMapping(
"/user")
-
public
class UserController {
-
@Reference
-
private UserService userService;
-
-
@RequestMapping(
"/showName")
-
@ResponseBody
-
public String showName(){
-
System.out.println(
"访问了");
-
return userService.getName();
-
}
-
-
}
注意:使用注解 @Reference 来引入Service接口
2.5、创建SpringMvc.xml 文件
-
<?xml version="1.0" encoding="UTF-8"?>
-
<beans xmlns="http://www.springframework.org/schema/beans"
-
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns:p=
"http://www.springframework.org/schema/p"
-
xmlns:context=
"http://www.springframework.org/schema/context"
-
xmlns:mvc=
"http://www.springframework.org/schema/mvc"
xmlns:dubbo=
"http://code.alibabatech.com/schema/dubbo"
-
xsi:schemaLocation=
"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
-
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
-
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">
-
-
<mvc:annotation-driven >
-
<mvc:message-converters register-defaults="false">
-
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
-
<constructor-arg value="UTF-8" />
-
</bean>
-
</mvc:message-converters>
-
</mvc:annotation-driven>
-
-
</bean>
-
<!-- 引用dubbo 服务 -->
-
<dubbo:application name="Dubbo-web" />
-
<dubbo:registry address="zookeeper://192.168.25.128:2181"/>
-
<dubbo:annotation package="lhz.lx.controller" />
-
</beans>
五、注意
Zookeeper的地址一定要和虚拟机里面的ip地址一直。
源码地址:https://download.csdn.net/download/zhuocailing3390/10720241