如何显示自动配置的详细信息
加上 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
。