<?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:application name="dubbo-provider" /> <!-- 測試環境:register 是否向此註冊中心註冊服務,若是設爲false,將只訂閱,不註冊 --> <dubbo:registry protocol="zookeeper" address="zookeeper://xxx.xxx.xxx.xxx:32181" register="false" /> <!-- provider提供方 --> <!-- 用dubbo協議在20882端口暴露服務 --> <!-- 服務提供者協議配置,提供方須要指定端口,不一樣提供方須要使用不一樣端口,否則會有端口衝突,使用的端口須要在防火牆iptables中配置容許經過 --> <dubbo:protocol name="dubbo" port="20882" />
<!-- 聲明須要暴露的服務接口 --> <dubbo:service interface="com.xxx.dubboprovider.Ixxx" ref="serviceA" version="1.0.0" timeout="1200000" /> <!-- 和本地bean同樣實現服務 --> <bean id="serviceA" class="com.xxx.dubboprovider.impl.xxxxImpl" /> </beans>
若是是本地鏈接測試環境的的dubbo,此處能夠不用寫,永自帶的提供方便可;若是是本地開啓註冊到zookeeper,那麼此處就要寫上相關信息html
上述就轉換爲:直連提供者只須要在消費端設置 。java
<?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-admin或dubbo-monitor會顯示這個名字,方便識別 --> <dubbo:application name="dubbo-client" /> <!-- 測試環境:調試直連的話加上這個屬性 register="false" --> <dubbo:registry protocol="zookeeper" address="zookeeper://xxx.xxx.xxx.xxx:32181" register="false" /> <!-- 逾期信息 --> <dubbo:reference id="dubboProviderService" interface="com.xxx.dubboprovider.Ixxx" check="false" version="1.0.0" url="dubbo://xxx:xxx:xxx:xxx:port"/> </beans>
package com.xxx.xxx.xxx.dubbo; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.macula.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * <p> * <b>DubboMain</b> is 測試Dubbo主流程使用 * </p > * * @since 2019年10月12日 10:49:54 * @author Liuyc * @version $Id: codetemplates.xml 1145 2019年10月12日 Liuyc $ */ public class DubboMain { private static final Log log = LogFactory.getLog(DubboMain.class); public static void main(String[] args) { try { ClassPathXmlApplicationContext parentContext = new ClassPathXmlApplicationContext( "classpath:applicationContext-root.xml"); ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "classpath:/configs/applicationContext-app.xml", "classpath:/configs/applicationContext-core.xml" }, parentContext); ApplicationContext.setContainer(context); context.start(); System.out.println(new SimpleDateFormat("[yyyy-MM-dd HH:mm:ss]").format(new Date()) + " Dubbo service server started!"); } catch (Exception e) { System.out.println(e); log.error("== DubboProvider context start error:",e); } synchronized (DubboMain.class) { while (true) { try { DubboMain.class.wait(); } catch (InterruptedException e) { log.error("== synchronized error:",e); } } } } }
爲了方便測試,能夠先把API合併到dubbo中,發佈以後,再測試本地的接口實現是否正確spring
package com.xxx.xxx.xxx.api.impl; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; 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; /** * * @author Liuyc * */ @RunWith(SpringJUnit4ClassRunner.class) // 使用junit4進行測試 @ContextConfiguration(locations = { "classpath:api-consumer.xml" }) // 加載配置文件:當前的消費者是測試中的消費者,能夠拷貝一份過來 public class TestApi { private static final Log log = LogFactory.getLog(TestApi.class); @Autowired XxxApi xxxApi; // 1. 此處能夠測試本身的API是否正確 @Test public void getMyActivities() { // to do something } }
注意:啓動的時候能夠run,也能夠debug,能夠任意測試是否正確;若是頗有信息,可使用官網的簡易測試 invoke,參考:http://dubbo.apache.org/zh-cn/docs/user/references/telnet.htmlapache