全部产品
云市场
云游戏

其他常见问题

更新时间:2020-05-19 17:04:37

其他常见问题


如何显示自动配置的详细信息

加上 JVM 运行参数 -Ddebug,可以显示启动过程中的详细信息,并通过 Debug 级别的日志显示已启动的自动配置的 bean 服务。


如何使用 dependencyManagement 添加 SOFABoot 依赖

  • 工程原型中是用 parent 标签引入 SOFABoot 的间接依赖。

  • 也可以使用 dependencyManagement 添加依赖,如下所示:

    1. <dependencyManagement>
    2. <dependencies>
    3. <!-- SOFABoot dependencies -->
    4. <dependency>
    5. <groupId>com.alipay.sofa</groupId>
    6. <artifactId>sofaboot-enterprise-dependencies</artifactId>
    7. <version>2.3.1</version>
    8. <type>pom</type>
    9. <scope>import</scope>
    10. </dependency>

使用 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 提供的依赖:

    1. <dependency>
    2. <groupId>org.mybatis</groupId>
    3. <artifactId>mybatis-2-spring</artifactId>
    4. <version>1.0.3</version>
    5. </dependency>
  • iBATIS 社区已经不支持运维,为了以后长期的发展与业务稳定,建议升级到 MyBatis。配置方法可遵照 MyBatis 官网文档 - 如何接入 Spring Boot

Unsupported major.minor version 51.0 异常

现象

当编译工程时,收到以下报错:

  1. Exception in thread "main" java.lang.UnsupportedClassVersionError :
  2. Unsupported major.minor version 51.0

解决方案

使用 JDK 7 或以上版本来运行工程(推荐使用 JDK 8)。


Tracer 类转换异常

现象

出现如下错误:

原因

DummyContextUtil 的 create 操作和 clear 操作必须要配合使用。如果调用 create 操作时,当前 Tracer 上下文(即 ThreadLocal 中)不为空,便会出现 Tracer 类转换异常的错误。

解决方案

在调用 create 操作时,与 clear 操作配合使用即可。


Spring 配置解析错误

现象

Spring 在解析配置文件时出现如下错误:

  1. Caused by: org.xml.sax.SAXParseException; lineNumber: 240; columnNumber: 58; 对实体 "v" 的引用必须以 ';' 分隔符结尾。
  2. at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
  3. at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177)
  4. at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:400)
  5. at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)
  6. at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1472)
  7. at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanAttributeValue(XMLScanner.java:913)
  8. at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanAttribute(XMLNSDocumentScannerImpl.java:447)
  9. at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:250)
  10. at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2784)
  11. at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
  12. at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
  13. at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
  14. at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:841)
  15. at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:770)
  16. at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
  17. at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:243)
  18. at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)
  19. at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:76)
  20. at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadDocument(XmlBeanDefinitionReader.java:429)
  21. at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:391)
  22. ... 56 more

原因

配置文件中出现 & 字符,如 p=1&v=4.0

解决方案

将配置的字符 & 换为转义字符 &amp; 进行配置即可。如:将 p=1&v=4.0 替换为 p=1&amp;v=4.0


Maven 打包时出现规则检查错误

现象

Maven 打包时出现如下提示:

  1. Please check rules in your project:
  2. 1. SOFATracer dependencies should be com.alipay.sofa:tracer-core and com.alipay.sofa:tracer-extensions !!!
  3. 2. SOFALookout dependency should be com.alipay.sofa.lookout:lookout-api !!!

原因

SOFABoot 2.4.0 及以上版本更新了 SOFATracer 及 SOFALookout 的依赖,并强制执行规则检查。未更新的依赖会导致 Maven 编译失败。

解决方案

更新 SOFATracer 及 SOFALookout 依赖如下:

  1. <dependency>
  2. <groupId>com.alipay.sofa</groupId>
  3. <artifactId>tracer-core</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>com.alipay.sofa</groupId>
  7. <artifactId>tracer-extensions</artifactId>
  8. </dependency>
  9. <dependency>
  10. <groupId>com.alipay.sofa.lookout</groupId>
  11. <artifactId>lookout-api</artifactId>
  12. </dependency>

SOFABoot 应用莫名其妙退出

现象

如题

原因

  • 没有使用发布部署运行应用,而是直接使用 java 运行。
  • 在运行应用时,未使用 nohup,导致当前窗口关闭后,SOFABoot 应用关闭。

示例如下:莫名退出1莫名退出2

解决方案

使用类似下述命令行,启动应用:
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 这个变量。示例如下:无法启动 tengine

解决方案

修改应用程序代码,使其不要修改 WORK_DIR,因为技术栈使用了该变量。


profiles-active 启动参数出现问题导致服务无法启动

现象

profiles-active 启动参数出现问题导致服务无法启动。

  • 客户在发布部署页面配置了 2 个环境参数:-Ddbmode=coredev-Dspring.profiles.active = dev
  • 在实际部署时多出 1 个参数 -Dspring.profiles.active=coredev
  • 服务无法启动

原因

客户的配置文件名称有误。

解决方案

修改 application-dev.propertiesapplication-coredev.properties