ssm集成dubbo使用

       之前一直使用webservice进行两个项目之间的接口调用,后来发现webservice接口的反应速度太慢。决定使用dubbo,在网上找了很多的案例,都是写的一个小demo。和项目集成不到一块,研究了好久,现在将dubbo与ssm集成到一块。

      首先项目:pccw和pccw_portal以及pccw_api,在pccw和pccw_portal两个项目要互为接口提供方和消费方。这里的pccw_api主要用于存放接口类。

dubbo是需要用到zookeeper,这里就不讲zookeeper怎么安装使用了。

建立父项目将pccw,pccw_portal和pccw_api项目引入到父项目里面

 

新建pccw_api项目包结构如下

api里面存放的是接口服务,entity里面存放的是实体类entity

 

 

新建pccw项目添加dubbo依赖,并将pccw_api作为依赖加入到pccw项目中

<dependency>             <groupId>com.alibaba</groupId>             <artifactId>dubbo</artifactId>             <version>2.5.6</version>             <exclusions>                   <exclusion>               <groupId>org.springframework</groupId>               <artifactId>spring</artifactId>                  </exclusion>             </exclusions>         </dependency>

在pccw项目src/main/resources下建立一个新文件夹,我这里叫spring

在Spring里面新增消费方配置文件dubbo-demo-consumer.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xmlns="http://www.springframework.org/schema/beans"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd 
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd 
	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <!-- 使用zookeeper广播注册中心暴露发现服务地址 -->
    <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" />

    <dubbo:consumer check="false" />
    //扫描消费方所在的包
    <dubbo:annotation package="com.starsoft.ezicloud.modules" />
</beans>

在Spring里面新增服务提供方配置文件dubbo-demo-provider.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns="http://www.springframework.org/schema/beans"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd 
	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="pccw"/>
    <!-- 用dubbo协议在22882端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="22882"/>
    <!-- 使用zookeeper广播注册中心暴露发现服务地址 -->
    <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" />
     <!-- 使用注解方式暴露接口,扫描接口所在的包 -->     
    <dubbo:annotation package="com.pccw.dubbo.provider" />  
</beans>
在spring-mvc.xml中引入配置文件

   <import resource="classpath:spring\dubbo-demo-consumer.xml"/>
    //接口里面会用到Spring的一些注解,所以添加Spring的扫描
    <context:component-scan base-package="com.pccw.dubbo.provider"/>
    <import resource="classpath:spring\dubbo-demo-provider.xml"/>

 

 

同理新建pccw_portal项目,添加dubbo依赖,并将pccw_api作为依赖引入到pccw_portal项目中

在pccw——项目src/main/resources下建立一个新文件夹,我这里叫spring

 

在Spring里面新增消费方配置文件dubbo-demo-consumer.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xmlns="http://www.springframework.org/schema/beans"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd 
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd 
	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
    <!-- <dubbo:application name="pccw_portal_consumer"/> -->
    <!-- 使用zookeeper广播注册中心暴露发现服务地址 -->
    <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" />
    <context:annotation-config />
    <dubbo:consumer check="false" />
    <!--  消费方调用接口所在的包路径 -->
    <dubbo:annotation package="com.starsoft.ezicloud.modules" />
</beans>
在Spring里面新增服务提供方配置文件dubbo-demo-provider.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns="http://www.springframework.org/schema/beans"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd 
	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="pccw_portal"/>
    <!-- 用dubbo协议在21885端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="21885"/>
    <!-- 使用zookeeper广播注册中心暴露发现服务地址 -->
    <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" />
     <!-- 使用注解方式暴露接口 -->  
     <!--  服务提供者实现类所在的包路径 -->   
     <dubbo:annotation package="com.pccw_portal.dubbo.provider" />  
</beans>
在spring-mvc.xml中引入配置文件

	<import resource="classpath:spring\dubbo-demo-consumer.xml"/>
    //接口里面会用到Spring的一些注解,所以添加Spring的扫描
	<context:component-scan base-package="com.pccw_portal.dubbo.provider"/>
	<import resource="classpath:spring\dubbo-demo-provider.xml"/>

到这里配置就已经完成了

 

下面是使用:在pccw_api中api包下新建接口类

 

package com.starsoft.ezicloud.api;


/**
 * 接口服务
 * @author 15311
 *
 */
public interface DbInterfaceService {
   /**
    * 保存供应商
    * @author suxl
    */
   void saveSupplier(DbSupplier dbSupplier);
   
}

在pccw项目中com.pccw.dubbo.provider包下新建接口实现类实现api里面的接口

 

 

@Service(version="pccw")
public class DbInterfaceServiceImpl implements DbInterfaceService{
	@Autowired
	private DbSupplierService dbSupplierService;

	@Override
	public void saveSupplier(DbSupplier dbSupplier) {
		Map<String, Object> variables=new HashMap<String,Object>();
		System.out.println("进入pccw接口:保存供应商注册信息");
		dbSupplierService.save(dbSupplier);
	
	}
}

使用:通过pccw_portal项目调用pccw项目中的saveSupplier接口:

 

在pccw_portal项目中使用下面的方法即可调用pccw项目中的接口

 

import com.alibaba.dubbo.config.annotation.Reference;
@Component
@Controller
@RequestMapping(value = "${adminPath}/pccw_portal/dbSupplier")
public class DbSupplierController extends BaseController {
    //使用dubbo的注解
    @Reference(version="pccw")
	private DbInterfaceService dbInterfaceService;

    @RequiresPermissions("pccw:dbSupplier:edit")
	@RequestMapping(value = "save")
	public String save(DbSupplier dbSupplier, Model model, RedirectAttributes redirectAttributes) {
        //调用pccw_portal项目中的接口saveSupplier
        dbInterfaceService.saveSupplier(dbSupplier);
    }
}

同理pccw调用pccw_portal,在pccw项目的com.pccw.dubbo.provider包下新建接口实现类实现api里面的接口

 

调用的时候需要:@Reference里面的pccw改为pccw_portal即可

 

@Reference(version="pccw")
	private DbInterfaceService dbInterfaceService;

自己测试过,很好用!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值