您的位置:首页 > 编程语言 > Java开发

dubbo+spring_mvc配置使用

2016-05-27 00:00 369 查看
摘要: dubbo+spring_mvc配置使用

dubbo分布式服务配置

分为两个工程provider和consumer



pom文件配置(provider与consumer相同)

<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>
<artifactId>dubbo_example_provider</artifactId>
<parent>
<groupId>com.zhu.example</groupId>
<artifactId>example</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<dependencies>
<!-- dubbo -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>${dubbo.version}</version>
</dependency>

<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>${zkclient.version}</version>
<exclusions>
<exclusion>
<artifactId>log4j</artifactId>
<groupId>log4j</groupId>
</exclusion>
</exclusions>
</dependency>

<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>${zookeeper.version}</version>
<exclusions>
<exclusion>
<artifactId>slf4j-log4j12</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
<exclusion>
<artifactId>log4j</artifactId>
<groupId>log4j</groupId>
</exclusion>
</exclusions>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>

<!-- spring-test -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

除去做单元检测的依赖包,核心依赖包有

<!-- dubbo -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>${dubbo.version}</version>
</dependency>

<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>${zkclient.version}</version>
<exclusions>
<exclusion>
<artifactId>log4j</artifactId>
<groupId>log4j</groupId>
</exclusion>
</exclusions>
</dependency>

<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>${zookeeper.version}</version>
<exclusions>
<exclusion>
<artifactId>slf4j-log4j12</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
<exclusion>
<artifactId>log4j</artifactId>
<groupId>log4j</groupId>
</exclusion>
</exclusions>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>

dubbo-provider 工程

接口类DubboxProviderNoSerial,NoSerialEntity 为我的实验实体类

package com.zhu.example.dubbox;

import com.zhu.example.entity.NoSerialEntity;

public interface DubboxProviderNoSerial {

public NoSerialEntity testDubboxNoSerialParam();
}

实现类DubboxProviderNoSerialImpl

package com.zhu.example.dubbox;

import com.zhu.example.entity.NoSerialEntity;

public class DubboxProviderNoSerialImpl implements DubboxProviderNoSerial {

/* (non-Javadoc)
* @see com.zhu.example.dubbox.DubboxProviderNoSerial#testDubboxNoSerialParam()
*/
public NoSerialEntity testDubboxNoSerialParam() {
NoSerialEntity test=new NoSerialEntity();
test.setName("test");
return test;
}

}

dubbo-spring-provider配置

<?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:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> 
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:application.properties</value>
</list>
</property>
</bean>

<!-- dubbo 配置 -->
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="${dubbo.application.name}"/>
<!-- dubbo服务注册地址 -->
<dubbo:registry address="${dubbo.registry.address}"/>
<!-- dubbo服务协议名称及端口 -->
<dubbo:protocol name="${dubbo.protocol.name}" port="${dubbo.protocol.port}"/>
<!-- 通过注册中心发现监控中心服务 -->
<dubbo:monitor protocol="registry"></dubbo:monitor>

<!-- 服务接口实现声明 -->
<bean id="dubboxProviderNoSerialImpl" class="com.zhu.example.dubbox.DubboxProviderNoSerialImpl"/>
<!-- 服务接口暴露声明 -->
<dubbo:service interface="com.zhu.example.dubbox.DubboxProviderNoSerial" ref="dubboxProviderNoSerialImpl" version="0.1" retries="0" timeout="35000" loadbalance="${dubbo.service.loadbalance}" filter="logcontext"/>
</beans>

provider配置文件application.properties

#dubbo
#提供方应用信息,用于计算依赖关系
dubbo.application.name=dubbox_provider
#dubbo服务注册地址
dubbo.registry.address=zookeeper://localhost:2181
#通过注册中心发现监控中心服务
dubbo.monitor.protocol=registry
#dubbo服务协议名称及端口
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
#dubbo服务负载均衡设置
dubbo.service.loadbalance=consistenthash
#日志文件配置
dubbo.log4j.file=logs/dubbox_provider.log
dubbo.log4j.level=DEBUG

junit Test类

package com.zhu.example;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext-dubbo-provider.xml")
public class TestDubboxProvider {

@Test
public void testProvider() throws InterruptedException {

while(true){
System.out.println("spring container is alived!");
Thread.sleep(10000L);
}
}

}

dubbo——consumer工程

DubboxProviderNoSerial接口与provider相同

application.properties配置文件

#dubbo
dubbo.application.name=dubbox_consumer
dubbo.registry.address=zookeeper://localhost:2181

applicationContext-dubbo-consumer.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:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> 
<!-- dubbo 配置 -->
<dubbo:application name="${dubbo.application.name}"/>
<dubbo:registry address="${dubbo.registry.address}" timeout="15000"/>
<dubbo:consumer check="false"/>

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:application.properties</value>
</list>
</property>
</bean>

<!-- 消费者声明 -->
<dubbo:reference id="dubboxNoSerial" interface="com.zhu.example.dubbox.DubboxProviderNoSerial" version="0.1" filter="logcontext"/>
</beans>

junit Test类

package com.zhu.example;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.util.Assert;

import com.zhu.example.dubbox.DubboxProviderNoSerial;
import com.zhu.example.entity.NoSerialEntity;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext-dubbo-consumer.xml")
public class TestDubboxConsumer {
@Autowired
DubboxProviderNoSerial dubboxNoSerial;

@Test
public void testConsumer() throws InterruptedException {

NoSerialEntity result = dubboxNoSerial.testDubboxNoSerialParam();
System.out.println(result.getName());
Assert.notNull(result);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: