Failed to create directory /home/tomcat/.dubbo!

FactoryBean threw exception on object creation; nested exception is java.lang.IllegalArgumentException: Invalid registry store file /home/tomcat/.dubbo/dubbo-registry-172.18.80.56.cache, cause: Failed to create directory /home/tomcat/.dubbo!
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
at org.springframework.beans.factory.support.AbstractBeanFactory 1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1192)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1116)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:545)

原因:由於dubbo的註冊中心配置,會在當前用戶下創建一個文件,默認路徑爲/home/{user}/.dubbo/dubbo-registry-xxx.cache,主要是用於緩存註冊中心地址列表及服務提供者列表,應用重啓時將基於此文件恢復,然而我們生產環境的tomcat服務是虛擬用戶tomcat啓動的,dubbo創建的文件路徑則爲/home/tomcat/.dubbo/dubbo-registry-xxx.cache,但是這個目錄是不存在的,因此就出現了上述日誌的報錯。
解決方案:
1、使用自定義的路徑,dubbo提供了對應的XML屬性配置,,file的值爲tomcat用戶有讀寫權限的目錄,比如tomcat目錄下的temp文件夾
${catalina.home}/temp/dubbo-registry-xxx.cache,
這裏寫圖片描述
2、使用真實用戶啓動tomcat,並保證該用戶有讀寫權限(現實情況不允許);
注意:多個dubbo的地址不要配置到同一個文件內,兩個註冊中心不能使用同一文件存儲,xxx爲註冊中心的服務地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章