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);
	}
	
}

转载于:https://my.oschina.net/superise/blog/682372

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值