介面服務不能正常啟動導致的問題
阿新 • • 發佈:2018-11-10
問題描述
服務啟動時報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包依賴。