【問題解決】
關于dubbo常見出錯:
zookeeper端口號是否開放
zookeeper地址是否正確
一個service對應一個tomcat
springmvc.xml是否放對文件夾
web.xml不能有多余標簽
【今日感悟】
Zookeeper
linux中開放zookeeper2181端口iptables -I INPUT -p tcp --dport 2181 -j ACCEPT.
在zookeeper的bin目錄里啟動./zkServer.sh start服務命令.
provider提供服務者
創(chuàng)建項目:export_company_interface編寫對外發(fā)布的服務的接口
創(chuàng)建項目:export_company_service實現(xiàn)接口
導入依賴
配置web.xml監(jiān)聽器監(jiān)聽其他的spring配置文件
配置applicationContext-dubbo.xml
<!-- 應用名稱:隨便寫(保證唯一:和項目名一致) -->
<dubbo:application name="export_company_service">
<!--qos 監(jiān)控防止端口沖突-->
<dubbo:parameter key="qos.enable" value="false"></dubbo:parameter>
</dubbo:application>
<!--配置注冊中心 注冊中心的地址-->
<dubbo:registry address="zookeeper://192.168.12.132:2181"></dubbo:registry>
<!--
配置請求協(xié)議 此dubbo服務的請求端口和tomcat端無關,不能一致。
port(端口):dubbo的指定端口號,服務提供者的真實請求端口
-->
<dubbo:protocol name="dubbo" port="20881"></dubbo:protocol>
<!--配置dubbo服務提供者的包掃描-->
<dubbo:annotation package="cn.it.service"></dubbo:annotation>
配置事務:applicationContext-tx.xml
編寫服務接口實現(xiàn)類,這里的@service注解是dubbo的service
@Autowired不要換成@Reference
通過main函數(shù)啟動服務
public static void main(String[] args) throws IOException {
//1.加載配置文件
ClassPathXmlApplicationContext ac =
new ClassPathXmlApplicationContext("classpath*:spring/applicationContext-*.xml");
//2.啟動
ac.start();
//3.輸入后停止
System.in.read();
}
系統(tǒng)部署
dubbo傳輸?shù)膶ο笕绻麤]有實現(xiàn)可序列化接口Serializable,報錯:
Caused by: Serialized class Company must implement java.io.Serializable
導入依賴
配置web.xml
配置springmvc.xml
<!--SpringMVC配置-->
<context:component-scan base-package="cn.itcast.web"></context:component-scan>
<mvc:annotation-driven></mvc:annotation-driven>
<!--Dubbo配置-->
<!-- 當前應用名稱,用于注冊中心計算應用間依賴關系,注意:消費者和提供者應用名不要一樣 -->
<dubbo:application name="export_web_protal" />
<!-- 連接服務注冊中心zookeeper ip為zookeeper所在服務器的ip地址-->
<dubbo:registry address="zookeeper://192.168.12.132:2181"/>
<!-- 開啟dubbo注解掃描(@Reference注解)-->
<dubbo:annotation package="cn.itcast.web"/>
編寫控制器,@Reference(retries = 0)導入service,retries:配置重試次數(shù)。