confluence 500错误 com.atlassian.util.concurrent.LazyReference

com.atlassian.util.concurrent.LazyReference $ InitializationException:java.lang.NullPointerException
com.atlassian.util.concurrent.LazyReference.getInterruptibly(LazyReference.java:149)
com.atlassian.util.concurrent.LazyReference.get(LazyReference.java:112)
com.atlassian.confluence.setup.ConfluenceEncodingFilter.getGlobalSettings(ConfluenceEncodingFilter.java:45)
com.atlassian.confluence.setup.ConfluenceEncodingFilter.getEncodingInternal(ConfluenceEncodingFilter.java:35)
com.atlassian.confluence.setup.ConfluenceEncodingFilter.getEncoding(ConfluenceEncodingFilter.java:27)
com.atlassian.core.filters.encoding.AbstractEncodingFilter.doFilter(AbstractEncodingFilter.java:38)
com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31)
com.atlassian.core.filters.HeaderSanitisingFilter.doFilter(HeaderSanitisingFilter.java:44)
com.atlassian.confluence.servlet.FourOhFourErrorLoggingFilter.doFilter(FourOhFourErrorLoggingFilter.java:65

根据官方的解决方案


正如在我们的支持故障单案例中解决的那样,错误是数据库凭据已过期。因此,对于可能需要查看此答案线程的其他用户,这是来自Atlassian的响应:

通常,日志和屏幕中显示的此错误是由Confluence无法连接到数据库引起的:confluence.cfg.xml文件中设置的凭据无效。另一种可能是数据库密码已过期,并且需要重置并且服务器需要重新启动。另一个是该表确实不存在 - 如果升级失败。

所以,基本上,我们需要你做的是:

检查<CONFLUENCE-HOME>是否不可写(检查目录和子目录的权限)
Confluence数据库不可用 - 检查<CONFLUENCE-HOME> /confluence.cfg.xml中的连接参数,并验证数据库用户是否可以访问所有汇合表以及密码是否相同。
如果这不起作用,请附上最新的atlassian-confluence.log文件,该文件位于<Confluence Home / logs>目录中,以便我们可以仔细检查是否存在可能的不同根本原因。

 

然而这并没有什么卵用,我修改了文件夹权限777依旧报错;我还安装了mysql客户端测试是连接正常的,这就奇怪了。

而且官方的问题支持方案所关系的版本可能和我安装的不一样,confluence.cfg.xml根本不在<CONFLUENCE-HOME>(默认/opt/atlassian/confluence/),而是默认在/var/atlassian/application-data/confluence,导致我还错以为配置文件丢失了。

 

为了排除问题,我删光了日志并且重启了一次应用,发现catalina日志显示多条这样的内容

Mon May 13 15:07:07 CST 2019 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

 

经过一番百度发现是不行的,于是我转向了bing,它把我带去正确的地方。

参考https://stackoverflow.com/questions/34189756/warning-about-ssl-connection-when-connecting-to-mysql-database 

通过在jdbc增加参数解决了问题;参数格式必须这样写

jdbc:mysql://localhost:3306/Peoples?autoReconnect=true&amp;useSSL=false

注意必须使用&amp;而不是&符号,useSSL=false是关键

所以,这是一个因为mysql服务器端安全配置升级,从而导致客户端连接问题?

posted @ 2019-05-13 11:35  道木先生  阅读(4603)  评论(0编辑  收藏  举报