安装WSO2 Governance Registry并启动它后,我收到以下错误wso2carbon.log
:
TID: [0] [Greg] [2014-01-08 10:39:08,625] WARN {java.util.prefs.FileSystemPreferences} - Could not lock System prefs.Unix error code 0. {java.util.prefs.FileSystemPreferences} TID: [0] [Greg] [2014-01-08 10:39:08,625] WARN {java.util.prefs.FileSystemPreferences} - Couldn't flush system prefs: java.util.prefs.BackingStoreException: Couldn't get file lock. {java.util.prefs.FileSystemPreferences}
这些错误每30秒重复一次.不幸的是,日志没有指定它试图锁定的文件.
我尝试在文件系统上查找所有文件,并使用独占锁,find /opt/wso2 -type f -exec lsof {} \; | grep W
但我找不到任何文件.此外,我尝试了解WSO2 GR源代码,但没有找到对此错误的引用.在WSO2 Jira上报告了一个错误(https://wso2.org/jira/browse/REGISTRY-1863),但这也没有帮助.
任何人都可以指出我正确的方向或提供任何线索,以获取更多信息?
我们发现这是Java安装手册中的一个错误.似乎JVM需要对/etc/.java/.systemPrefs
目录的写访问权限,当以非root用户身份运行时,它无法访问该目录,请参阅:http://bugs.java.com/view_bug.do?video_id = 4838770
我通过将/etc/.java/.systemPrefs
目录的所有权更改为wso2:wso2
使用来解决此问题
sudo chown -R wso2:wso2 /etc/.java/.systemPrefs
该文件仍然可以由root写入(因为root可以写入任何文件),但如果您需要多个用户能够写入此文件,您可以使用以下命令设置文件ACL:
sudo setfacl -R -m u:wso2:rw /etc/.java/.systemPrefs