(本文档仅供参考)
问题描述
在某些大数据库通过smartbi中进行测试连接时,会出现服务器宕机的现象,如Tomcat服务器部署smartbi后连接星环数据库:
1、在连接星环数据库,将对应的jdbc驱动添加到smartbi中
2、新建数据源连接到星环数据库。
3、点击测试连接,系统无响应,后台提示stop的字样:
解决方案:
需要在对应的服务器上添加 JVM参数 -DANTLR_DO_NOT_EXIT=true ,各类服务器添加JVM参数请参考wiki文档:配置JVM参数。
在这里也举例说明一些服务器添加效果:
1、smartbi自带Tomcat服务器上startup.cmd添加此JVM参数:
如何确定此参数成功添加,可在服务器启动后,导出系统日志,看系统日志中的version.txt 文件:
2、WebSphere服务器添加 -DANTLR_DO_NOT_EXIT=true 参数过程如下(如不清楚入口,请参考配置JVM参数):
进入WebSphere的控制台,然后点击 应用程序服务器 > server1 > 进程定义 > Java 虚拟机 设置"通用JVM参数"如下
保存后,重启websphere服务,确认是否成功修改,可以通过【系统监控】–》【概述】查看,具体如下:
3、weblogic 服务器添加 -DANTLR_DO_NOT_EXIT=true 参数过程如下:
在<weblogic_domain>\bin\setDomainEnv.cmd\setDomainEnv.sh
windows系统的weblogic服务器
set JAVA_OPTIONS=%JAVA_OPTIONS% -Dfile.encoding=GBK -Duser.region=CN -Duser.language=zh -Djava.awt.headless=true -DANTLR_DO_NOT_EXIT=true -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError
linux系统的weblogic服务器
JAVA_OPTIONS="$JAVA_OPTIONS -Dfile.encoding=GBK -Duser.region=CN -Duser.language=zh -Djava.awt.headless=true -DANTLR_DO_NOT_EXIT=true -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError"
其他问题:
添加JVM参数后,点击测试连接还是报错,从后台提示可以看到包含ClassNotFoundException: org.antlr.stringtemplate.language.ChunkToken字样的错误信息,
可尝试通过如下方式解决:
这个错误是因为smartbi.war包中自带的antlr-2.7.6.jar 和星环jar包中的antlr文件的类冲突导致。
可将smartbi.war包中的smartbi\WEB-INF\lib\ antlr-2.7.6.jar 移除
然后把星环的jar包同样添加到smartbi\WEB-INF\lib\ 目录下,重启服务器并测试连接。
说明:移除了war包中的antlr-2.7.6.jar ,星环的jar包需要添加到smartbi\WEB-INF\lib\目录下才可以,不能放到动态加载类目录dynamicLibraryPath 下,因为antlr-2.7.6.jar是在启动的时候需要的jar包,若放在dynamicLibraryPath 加载目录下,一开始启动无法读取到此路径下的jar包,会导致启动问题。