1. 程式人生 > >介面服務不能正常啟動導致的問題

介面服務不能正常啟動導致的問題

問題描述

  服務啟動時報Caused by:java.lang.ClassNotFoundException:org.slf4j.impl.StaticLoggerBinder異常。

  客戶端訪問報:Unable to instantiate Action, **Action, defined for '**' in namespace '/' **Action - action - file:/**tomcat/webapps/**/WEB-INF/classes/struts.xml:13:67

問題原因

  服務依賴了公共服務**CommonService,後者引用了slf4j的相關日誌類,但是前者沒有slf4j的相關Jar包,所以啟動時找不到類。

Hessian協議

  因為是服務和web分離,服務啟動異常但是web啟動成功,所以請求時例項化Action時Service類不能初始化從而導致了Action例項化異常

  客戶端通過Hessian協議獲取服務的Service時也會異常。

解決方案

  由於各個模組使用的jar包各不相同,子模組依賴了Common但是卻不具備Common的jar包就會有問題。

  方案一:common打Jar時連同lib目錄及其jar包一同打,但是common的體積會增大,本可以只打Class檔案,但是多打了好多jar包,子模組體積也會隨之增大,多出好多重複的jar包。

  方案二:子模組的jar包依賴要大於等於common的jar包依賴。