標準的框架模式:
1. 將parent、model、common、service、service-impl、dao、dao-impl分開打包。將功能模塊化。
其中parent只負責存放jar包,其他項目繼承parent。
common
control依賴model與service。只需要在pom.xml中依賴即可。
service-impl是具體處理業務的模塊,依賴model、common、service、dao、dao-impl。
1. dubbo jar包依賴
未使用到montior,所以未導入該包。
由於dubbo底層使用是用netty實現,所以導入netty包。
需要註冊zookeeper,導入zookeeper包。
2.啓動zookeeper
下載zookeeper,更改zoo.cfg文件,在bin下啓動服務端與客戶端。啓動成功如下:
3. provider端構建
(1)提供一個service層接口並寫出該實現類。
(2) 寫一個類,用來啓動spring容器。
public static void main(String[] args) throws IOException {
ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext(
new String[]{"provider.xml"});
context.start();
System.in.read();
}
(3)配置xml
<!-- 提供方應用信息,用於計算依賴關係 ,-->
<dubbo:application name="provider"/>
<!-- 使用zookeeper註冊中心暴露服務地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>
<dubbo:protocol name="dubbo" port="20880"/>
<!-- 內部註冊bean -->
<bean id="sampleProviderService" class="com.provider.service.impl.SampleProviderServiceImpl"/>
<!-- 暴露出來,給別人調用,指向本地的bean -->
<dubbo:service interface="com.provider.service.SampleProviderService" ref="sampleProviderService" />
3. consumer端構建
(1)需要要provider的service層搬過來。
(2)配置consumer的xml
<!-- 消費方應用名,用於計算依賴關係,不是匹配條件,不要與提供方一樣 -->
<dubbo:application name="consumer" />
<!-- 使用zookeeper註冊中心暴露服務地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181" />
<!-- 表示引用一個服務,生成遠程服務代理,可以像使用本地bean一樣使用demoService
檢查級聯依賴關係 默認爲true 當有依賴服務的時候,需要根據需求進行設置
check=false,表示關閉該服務啓動時檢查,
若是此時關閉掉服務提供者的服務器,此時啓動客戶端的服務器,可以正常啓動, -->
<dubbo:reference id="sampleProviderService" check="false" interface="com.provider.service.SampleProviderService" />
(3)調用provider中的service。
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
new String[]{"consumer.xml"});
context.start();
SampleProviderService service = (SampleProviderService)context.getBean("sampleProviderService");
User user = service.getUser();
System.out.println(user.toString());
}
(4)調用成功,顯示結果。