如何顯示自動配置的詳細信息
加上 JVM 運行參數 -Ddebug
,可以顯示啟動過程中的詳細信息,并通過 Debug 級別的日志顯示已啟動的自動配置的 bean 服務。
如何使用 dependencyManagement 添加 SOFABoot 依賴
工程原型中是用
parent
標簽引入 SOFABoot 的間接依賴。也可以使用
dependencyManagement
添加依賴,如下所示:<dependencyManagement> <dependencies> <!-- SOFABoot dependencies --> <dependency> <groupId>com.alipay.sofa</groupId> <artifactId>sofaboot-enterprise-dependencies</artifactId> <version>2.3.1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
使用 DEV 模式進行 RPC 調用時提示找不到服務
檢查電腦用戶主目錄下是否存在名為 localFileRegisty
的目錄以及 localFileRegisty
目錄下是否存在名為 localRegistry.reg
的文件。
如果存在,則檢查其中是否存在需要調用的服務的元數據信息。同時,請保證 DEV 模式下發布服務的應用使用的是 SOFABoot 2.1.3 及以上的版本。
如果不存在,將服務發布端應用的 SOFABoot 升級到 2.1.3 及以上版本。
SOFABoot 是否支持 iBATIS
iBATIS 可以在 SOFABoot 中使用。但 SOFABoot 使用的是 Spring 4,而 Spring 4 不支持 iBATIS,在使用過程中可能會遇到類似“SqlMapClientDAOSupport 類找不到”的問題。
因此,您可以在對應的 pom.xml 中添加如下 iBATIS 提供的依賴:
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-2-spring</artifactId> <version>1.0.3</version> </dependency>
iBATIS 社區已經不支持運維,為了以后長期的發展與業務穩定,建議升級到 MyBatis。配置方法請參見 Spring Boot Starter。
Unsupported major.minor version 51.0 異常
現象
當編譯工程時,收到以下報錯:
Exceptionin thread "main" java.lang.UnsupportedClassVersionError:
Unsupported major.minor version 51.0
解決方案
使用 JDK 7 或以上版本來運行工程(推薦使用 JDK 8)。
Tracer 類轉換異常
現象
出現如下錯誤:
原因
DummyContextUtil
的 create 操作和 clear 操作必須要配合使用。如果調用 create 操作時,當前 Tracer 上下文(即 ThreadLocal 中)不為空,便會出現 Tracer 類轉換異常的錯誤。
解決方案
在調用 create 操作時,與 clear 操作配合使用即可。
Spring 配置解析錯誤
現象
Spring 在解析配置文件時出現如下錯誤:
Causedby: org.xml.sax.SAXParseException; lineNumber:240; columnNumber:58;對實體"v"的引用必須以';'分隔符結尾。
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:400)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1472)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanAttributeValue(XMLScanner.java:913)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanAttribute(XMLNSDocumentScannerImpl.java:447)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:250)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2784)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:841)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:770)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:243)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)
at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:76)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadDocument(XmlBeanDefinitionReader.java:429)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:391)
...56 more
原因
配置文件中出現 &
字符,如 p=1&v=4.0
。
解決方案
將配置的字符 &
換為轉義字符 &
進行配置即可。如:將 p=1&v=4.0
替換為 p=1&v=4.0
。
Maven 打包時出現規則檢查錯誤
現象
Maven 打包時出現如下提示:
Please check rules in your project:
1.SOFATracer dependencies should be com.alipay.sofa:tracer-core and com.alipay.sofa:tracer-extensions !!!
2.SOFALookout dependency should be com.alipay.sofa.lookout:lookout-api !!!
原因
SOFABoot 2.4.0 及以上版本更新了 SOFATracer 及 SOFALookout 的依賴,并強制執行規則檢查。未更新的依賴會導致 Maven 編譯失敗。
解決方案
更新 SOFATracer 及 SOFALookout 依賴如下:
<dependency>
<groupId>com.alipay.sofa</groupId>
<artifactId>tracer-core</artifactId>
</dependency>
<dependency>
<groupId>com.alipay.sofa</groupId>
<artifactId>tracer-extensions</artifactId>
</dependency>
<dependency>
<groupId>com.alipay.sofa.lookout</groupId>
<artifactId>lookout-api</artifactId>
</dependency>
SOFABoot 應用無故退出
原因
沒有使用發布部署運行應用,而是直接使用 Java 運行。
在運行應用時,未使用 nohup,導致當前窗口關閉后,SOFABoot 應用關閉。
示例如下:
解決方案
使用類似下述命令行,啟動應用:nohup java -Djava.security.egd=file:/dev/./urandom -jar XXX.jar > Log.log &
SOFABoot 應用在云端啟動緩慢
現象
如題
原因
使用默認的 /dev/random
取隨機數的時候依賴于系統中斷,因此在系統的中斷數不足時,/dev/random
設備會一直封鎖,嘗試讀取的進程就會進入等待狀態,直到系統的中斷數充分夠用。
解決方案
啟動的時候傳入參數 -Djava.security.egd=file:/dev/./urandom
/dev/urandom
不依賴系統的中斷,也就不會造成進程忙等待,但是會導致數據的隨機性不高。
SOFABoot 應用在云端無法啟動 tengine
現象
如題
原因
應用程序有 hook,修改了 WORK_DIR
這個變量。示例如下:
解決方案
修改應用程序代碼,使其不要修改 WORK_DIR
,因為技術棧使用了該變量。
profiles-active 啟動參數出現問題導致服務無法啟動
現象
profiles-active
啟動參數出現問題導致服務無法啟動。
客戶在發布部署頁面配置了 2 個環境參數:
-Ddbmode=coredev
和-Dspring.profiles.active = dev
在實際部署時多出 1 個參數
-Dspring.profiles.active=coredev
服務無法啟動
原因
客戶的配置文件名稱有誤。
解決方案
修改 application-dev.properties
為 application-coredev.properties
。