WSO2 API Manager 2.0.0:当 运行 作为 systemd 服务时,应用程序视图屏幕上出现白屏
WSO2 API Manager 2.0.0 : white screen on the application view screen when running as a systemd service
紧接着 ,我刚刚使用 MySQL 数据库从 2.0.0 zip 分发中安装了一个全新的 WSO2 API 管理器(单节点),试图避免与H2数据库相关的问题。
安装完成后,它会在没有警告和错误的情况下启动(经过几次尝试让 master-datasources.xml 中的所有事情都正确)。
在发布者中,我可以以管理员身份登录,创建一个新的 API,导入 swagger json 合同,完成 API 没问题。
在商店中,我可以以管理员身份登录,查看我刚刚创建的API,通过右侧下拉菜单创建一个新应用程序,订阅它。
但是当我尝试打开一个应用程序以生成密钥和令牌时,我只看到一个空白的空白屏幕。日志中没有任何内容可以帮助我:
[29/Nov/2016:16:17:33 +0100] "GET /store/site/pages/application.jag?name=MyNewApp&tenant=carbon.super HTTP/1.1" 200 3 "https://10.22.106.101:9443/store/site/pages/applications.jag?tenant=carbon.super" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0"
编辑:
页面崩溃几分钟后(可能不相关?)我在 wso2carbon.log 中重复打印:
WARN {sun.rmi.transport.tcp.TCPTransport$AcceptLoop} - RMI TCP Accept-11111: accept loop for ServerSocket[addr=0.0.0.0/0.0.0.0,localport=11111] throws {sun.rmi.transport.tcp.TCPTransport$AcceptLoop}
java.lang.OutOfMemoryError: unable to create new native thread
同样,这是插入 MySQL 数据库的基本安装(解压缩),没有 customization/configuration。
编辑 2:所以我想我找到了原因,但没有找到解决方案。当我通过直接命令行启动时不会出现此问题,只有当我通过 systemd 服务启动时才会出现:
sudo sytemctl start wso2am.service
/etc/systemd/system/wso2am.服务:
[Unit]
Description=WSO2 API Manager
[Service]
User=linc
ExecStart=/bin/bash -c ". /etc/profile.d/setenv.sh; /home/linc/wso2am-2.0.0/bin/wso2server.sh start"
Type=forking
[Install]
WantedBy=multi-user.target
那么 WSO2 是否与 systemd 启动不兼容?还是我缺少一些参数?
我已将 this blog post 作为 Linux 服务关注 运行 APIM。请看一看。它应该可以正常工作。 (确保在 myService.sh
的顶部添加 #!bin/sh
)
最后我有 WSO2 API 管理器 运行 作为 Systemd 服务。
这是我的 'wso2apim.service' 文件
[Unit]
Description=WSO2 API Manager
[Service]
Environment= JAVA_HOME=/usr/lib/jvm/java-8-oracle
WorkingDirectory=/opt/wso2/wso2am-2.0.0
User=wso2
ExecStart=/bin/bash /opt/wso2/wso2am-2.0.0/bin/wso2server.sh
ExecStop= /bin/bash -c '/opt/wso2/wso2am-2.0.0/bin/wso2server.sh stop'
ExecReload=/bin/bash -c '/opt/wso2/wso2am-2.0.0/bin/wso2server.sh restart'
[Install]
WantedBy=multi-user.target
这很简单,但很棘手
- 服务类型很简单(不是 fork 或 either)。 (默认值)
- ExecStart 不必包含 'start' 选项。随着
启动选项,它会尝试 nohup,但不起作用
- 但是,止损必须包括止损选项
希望对您有所帮助
紧接着
安装完成后,它会在没有警告和错误的情况下启动(经过几次尝试让 master-datasources.xml 中的所有事情都正确)。
在发布者中,我可以以管理员身份登录,创建一个新的 API,导入 swagger json 合同,完成 API 没问题。
在商店中,我可以以管理员身份登录,查看我刚刚创建的API,通过右侧下拉菜单创建一个新应用程序,订阅它。
但是当我尝试打开一个应用程序以生成密钥和令牌时,我只看到一个空白的空白屏幕。日志中没有任何内容可以帮助我:
[29/Nov/2016:16:17:33 +0100] "GET /store/site/pages/application.jag?name=MyNewApp&tenant=carbon.super HTTP/1.1" 200 3 "https://10.22.106.101:9443/store/site/pages/applications.jag?tenant=carbon.super" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0"
编辑: 页面崩溃几分钟后(可能不相关?)我在 wso2carbon.log 中重复打印:
WARN {sun.rmi.transport.tcp.TCPTransport$AcceptLoop} - RMI TCP Accept-11111: accept loop for ServerSocket[addr=0.0.0.0/0.0.0.0,localport=11111] throws {sun.rmi.transport.tcp.TCPTransport$AcceptLoop}
java.lang.OutOfMemoryError: unable to create new native thread
同样,这是插入 MySQL 数据库的基本安装(解压缩),没有 customization/configuration。
编辑 2:所以我想我找到了原因,但没有找到解决方案。当我通过直接命令行启动时不会出现此问题,只有当我通过 systemd 服务启动时才会出现:
sudo sytemctl start wso2am.service
/etc/systemd/system/wso2am.服务:
[Unit]
Description=WSO2 API Manager
[Service]
User=linc
ExecStart=/bin/bash -c ". /etc/profile.d/setenv.sh; /home/linc/wso2am-2.0.0/bin/wso2server.sh start"
Type=forking
[Install]
WantedBy=multi-user.target
那么 WSO2 是否与 systemd 启动不兼容?还是我缺少一些参数?
我已将 this blog post 作为 Linux 服务关注 运行 APIM。请看一看。它应该可以正常工作。 (确保在 myService.sh
的顶部添加 #!bin/sh
)
最后我有 WSO2 API 管理器 运行 作为 Systemd 服务。
这是我的 'wso2apim.service' 文件
[Unit]
Description=WSO2 API Manager
[Service]
Environment= JAVA_HOME=/usr/lib/jvm/java-8-oracle
WorkingDirectory=/opt/wso2/wso2am-2.0.0
User=wso2
ExecStart=/bin/bash /opt/wso2/wso2am-2.0.0/bin/wso2server.sh
ExecStop= /bin/bash -c '/opt/wso2/wso2am-2.0.0/bin/wso2server.sh stop'
ExecReload=/bin/bash -c '/opt/wso2/wso2am-2.0.0/bin/wso2server.sh restart'
[Install]
WantedBy=multi-user.target
这很简单,但很棘手
- 服务类型很简单(不是 fork 或 either)。 (默认值)
- ExecStart 不必包含 'start' 选项。随着 启动选项,它会尝试 nohup,但不起作用
- 但是,止损必须包括止损选项
希望对您有所帮助