以zookeeper为注册中心springmvc集成dubbo的服务实现
2017-04-21 18:03
543 查看
一.创建一个web项目,作为dubbo的消费者
1.pom.xml<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>dataProcessingEngine</groupId> <artifactId>TaskInterface</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>TaskInterface Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <spring.version>4.1.4.RELEASE</spring.version> <jackson.version>2.5.0</jackson.version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>task</groupId> <artifactId>jobService</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <!-- spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</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-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</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-test</artifactId> <version>${spring.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.3</version> <exclusions> <exclusion> <artifactId>spring</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.6</version> </dependency> <dependency> <groupId>com.netflix.curator</groupId> <artifactId>curator-framework</artifactId> <version>1.1.10</version> </dependency> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.6</version> </dependency> <!-- servlet --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>3.0-alpha-1</version> <scope>test</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- mysql连接 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.34</version> </dependency> <!-- json --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.3</version> </dependency> <!-- 文件上传 --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.2.2</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> </plugins> </build> </project>2.配置spring-dubbo.xml
<!--消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 --> <dubbo:application name="项目名称" /> <!-- 扫描注解包路径,多个包用逗号分隔,不填pacakge表示扫描当前ApplicationContext中所有的类 --> <dubbo:annotation package="com.xx.xx.jobinterface.*" /> <!-- 注册中心地址 --> <dubbo:registry protocol="zookeeper" address="192.168.xx.xx:2181,192.168.xx.xx:2182,192.168.xx.xx:2 b06b 183" /> <!-- 协议 --> <dubbo:protocol name="dubbo" port="20881" /> <!-- 生成远程服务代理,可以和本地bean一样使用demoService --> <dubbo:reference id="xxService" check="false" interface="com.xx.ida.jobinterface.service.xxService"/> <!-- 包扫描 --> <context:component-scan base-package="com.xx.ida.jobinterface.*"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> <context:component-scan base-package="com.ida"></context:component-scan> <!-- s 通知事务管理使用注解管理 spring动态代理 proxy-target-class="false" false jdk 基于接口 true cglib 基于类 --> <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="false"/>3.配置springmvc.xml
<!-- 声明扫描包路径 --> <context:component-scan base-package="com.xx.ida.jobinterface.controller"></context:component-scan> <!-- springMVC基于注解开发的驱动配置 --> <mvc:annotation-driven> <!-- 用FastJson替换了默认的json序列化方案:Jackson --> <mvc:message-converters> <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"> <!-- json的content-type是application/json 支持的格式为json --> <property name="supportedMediaTypes" value="application/json"></property> </bean> </mvc:message-converters> </mvc:annotation-driven> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean> <!-- 视图解析器 接收到后端和控制器的返回值,并根据返回值解析出对应的视图 解析过程:前缀(prefix)+返回值+后缀(suffix)=跳转的视图 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property> </bean> <!-- 静态资源访问问题解决 会多注册Handler,且,其url-pattern为 /** 且其会在最后匹配请求,匹配到后,直接导向对应的静态资源 --> <mvc:default-servlet-handler/>
4.配置web.xml
<web-app id="WebApp_1492051741622"> <display-name></display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:spring.xml </param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>mvc</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> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>mvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>5.将htt请求传入参数封装成pojo,作为数据传输对象(DTO),将pojo类和暴露的接口打成jar引入到maven项目中。便于代码逻辑的修改
6.创建Manager,控制层(controller)调用manager,manager将参数封装成pojo,并调用暴露的接口
控制层,接收请求,调用Manager
@RequestMapping(value = "/create_MethodJob", method = { RequestMethod.POST }) public @ResponseBody CreateJobOutputDto ida_pdata_create_task(String functionname){ return jobManager.create(functionname); }Manager,将参数封装为pojo,并调用暴露的接口
public CreateJobOutputDto create(String functionname){ CreateJobInputDto createJobInputDto = new CreateJobInputDto(); createJobInputDto.setFunctionname(functionname); return jobService.createTask(createJobInputDto); }
二.创建java项目作为dubbo服务的提供者,并打成jar保证在windows或linux可以正常运行
1.首先 要在pom文件里加以下内容(同上),保证打包过程将所有引用jar打进去。并生命jar的入口函数<plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <appendAssemblyId>false</appendAssemblyId> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass>com.dubbo.test.Start</mainClass><!-- 要执行的类得路径 --> </manifest> </archive> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>assembly</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>1.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>com.dubbo.test.Start</mainClass><!-- 要执行的类得路径 --> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.handlers</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.schemas</resource> </transformer> </transformers> <shadedArtifactAttached>true</shadedArtifactAttached> <!-- optional --> <shadedClassifierName>executable</shadedClassifierName> </configuration> </execution> </executions> </plugin>
2.然后需要在src/main/resource目录下新建META-INF文件夹在此文件夹下新建MANIFEST.MF、spring.handlers、spring.schemas这三个空文件
maven 命令 assembly:assembly
3.
相关文章推荐
- NET(C#)接入Dubbo服务,Zookeeper作为Dubbo服务的注册中心,实现thrift协议访问接口(2)
- NET(C#)接入Dubbo服务,Zookeeper作为Dubbo服务的注册中心,实现thrift协议访问接口(3)
- NET(C#)接入Dubbo服务,Zookeeper作为Dubbo服务的注册中心,实现thrift协议访问接口(1)
- NET(C#)接入Dubbo服务,Zookeeper作为Dubbo服务的注册中心,实现thrift协议访问接口(2)
- NET(C#)接入Dubbo服务,Zookeeper作为Dubbo服务的注册中心,实现thrift协议访问接口(1)
- Zookeeper注册中心安装——dubbo服务需要
- 基于ZooKeeper的Dubbo服务注册中心
- [ZooKeeper.net] 1 模仿dubbo实现一个简要的http服务的注册 基于webapi
- zookeeper 安装(dubbo 服务注册中心)
- 利用Zookeeper实现分布式锁及服务注册中心
- java分布式服务框架:zookeeper+dubbo+springmvc集成
- dubbo简易实现_分别利用自定义的注册中心和zookeeper
- zookeeper与grpc集成实现服务注册与发现
- 部署dubbo-admin监控dubbo服务(以zookeeper为注册中心)
- 淘宝SOA框架dubbo学习(2)--搭建Zookeeper注册中心服务
- Dubbo框架初探【用Spring配置声明暴露服务(可以使用multicast广播注册中心暴露服务地址或者使用zookeeper注册中心暴露服务地址)、加载Spring配置,启动服务】
- 用ZooKeeper做为注册中心搭建基于Spring Cloud实现服务注册与发现
- [ZooKeeper.net] 1 模仿dubbo实现一个简要的http服务的注册 基于webapi
- 本机搭建dubbo服务并依赖zookeeper注册中心
- 淘宝SOA框架dubbo学习(1)--搭建Zookeeper注册中心