我遇到了WL 6.2的奇怪行为。 WL控制台未列出AIX环境中任何已安装的应用程序/战争(运行时)。我在两个不同的平台上设置了Worklight 6.2:
Platform: Linux (Ubuntu)
WebSphere ND 8.5.5.1
DB2 V9.7
Platform: AIX
WebSphere ND 8.5.5.1
Oracle 11g
两个平台都使用基于文件的简单注册表(使用联合存储库)启用了WAS全局安全性。两者都以相同的方式使用以下步骤进行配置。在Ubuntu中,我可以看到已安装的运行时(WorklightStarter WAR)。但在AIX中,我在WL控制台中看到了可怕的消息:“服务器错误。请联系服务器管理员”
我使用WorklightStarter App来测试我的Ubuntu和AIX安装。具体来说,我使用了没有JS框架的WorklightStarter应用程序。将其导入WL 6.2 Studio以构建用于部署的WAR文件。
然后我按照简化的installation/configuration steps:
手动创建数据库,a)wladmin b)wrklght c)wlreports。我按照上面“使用手动创建DB2数据库”和“手动创建Oracle数据库”部分中的说明,在Ubuntu(Linux)和AIX环境中配置数据库:
配置为全局安全性,以便管理控制台访问是安全的。使用了基于文件的注册表和联合存储库。
从命令行安装WL 6.2服务器二进制文件(使用Installation Manager 1.6.x installc命令)。
./installc -acceptLicense -log /tmp/im_install.log
登录WAS管理控制台并创建“WorklightCluster”群集。
使用ANT任务部署a)worklight控制台+管理服务b)WorklightStarter WAR到步骤4中创建的WAS集群。
以下命令成功:
/opt/ibm/worklight/62/shortcuts/ant -f /opt/ibm/worklight/62/WorklightServer/configuration-samples/configure-wasnd-cluster-oracle_custom.xml databases
/opt/ibm/worklight/62/shortcuts/ant -f /opt/ibm/worklight/62/WorklightServer/configuration-samples/configure-wasnd-cluster-oracle_custom.xml admdatabases
/opt/ibm/worklight/62/shortcuts/ant -f /opt/ibm/worklight/62/WorklightServer/configuration-samples/configure-wasnd-cluster-oracle_custom.xml adminstall
/opt/ibm/worklight/62/shortcuts/ant -f /opt/ibm/worklight//62/WorklightServer/configuration-samples/configure-wasnd-cluster-oracle_custom.xml install
在AIX中,到目前为止,安装后一切正常。我能够在WAS集群中启动WAR(worklight控制台,管理服务和worklight启动器)。 SystemOut.log中未报告任何启动错误。登录到AIX控制台最终会显示“服务器错误。请联系服务器管理员”。所以我查看了Chrome控制台日志,当WL控制台调用REST URI时,它显示500内部服务器错误:
/worklightconsole/services/management-apis/1.0/loginAudit?_=1408335538793
/worklightconsole/services/management-apis/1.0/runtimes/?_=1408335559099
因此,为了在AIX中进一步调试,我继续在WAS ND中为worklight服务器打开了一些跟踪。由于我不知道要打开哪个跟踪规范来让Worklight WAR发出更多消息,我不得不盲目地转向大多数WebSphere跟踪:
*=info: com.ibm.ws.*=all: com.ibm.worklight.*=all: com.ibm.websphere.*=all
这最终表明Worklight(或者可能是WAS)中的某些组件失败了。我无法确定它是哪个组件或为什么会发生。
[8/16/14 4:32:50:106 EDT] 000000c6 ServiceProxy > ServiceProxy getStatusCodeFromException ENTRY java.net.ConnectException: Connection timed out
[8/16/14 4:32:50:106 EDT] 000000f0 SRTServletRes 1 com.ibm.ws.webcontainer.srt.SRTServletResponse getRequestrequest=com.ibm.ws.webcontainer.srt.SRTServletRequest@62121da3 [com.ibm.ws.webcontainer.srt.SRTServletResponse@c3342c0f]
[8/16/14 4:32:50:106 EDT] 000000c6 ServiceProxy < ServiceProxy getStatusCodeFromException RETURN
[8/16/14 4:32:50:106 EDT] 000000f0 SRTServletReq 1 com.ibm.ws.webcontainer.srt.SRTServletRequest getWebAppDispatcherContext
[8/16/14 4:32:50:106 EDT] 000000c6 SRTServletRes > com.ibm.ws.webcontainer.srt.SRTServletResponse setStatus ENTRY status --> 500 [com.ibm.ws.webcontainer.srt.SRTServletResponse@f3808481]
[8/16/14 4:32:50:106 EDT] 000000f0 SRTServletRes 1 com.ibm.ws.webcontainer.srt.SRTServletResponse isCommitted false [com.ibm.ws.webcontainer.srt.SRTServletResponse@c3342c0f]
[8/16/14 4:32:50:106 EDT] 000000c6 SRTServletRes 1 com.ibm.ws.webcontainer.srt.SRTServletResponse getRequest request=com.ibm.ws.webcontainer.srt.SRTServletRequest@f4847ba7 [com.ibm.ws.webcontainer.srt.SRTServletResponse@f3808481]
[8/16/14 4:32:50:106 EDT] 000000f0 HttpResponseM 1 setStatusCode(sc): Status code: 500
[8/16/14 4:32:50:106 EDT] 000000c6 SRTServletReq 1 com.ibm.ws.webcontainer.srt.SRTServletRequest getWebAppDispatcherContext
[8/16/14 4:32:50:106 EDT] 000000f0 SRTServletRes < com.ibm.ws.webcontainer.srt.SRTServletResponse setStatus RETURN
[8/16/14 4:32:50:106 EDT] 000000c6 SRTServletRes 1 com.ibm.ws.webcontainer.srt.SRTServletResponse isCommitted false [com.ibm.ws.webcontainer.srt.SRTServletResponse@f3808481]
[8/16/14 4:32:50:106 EDT] 000000f0 SRTServletRes > com.ibm.ws.webcontainer.srt.SRTServletResponse addHeader ENTRY name --> com.worklight.admin.error with value --> Connection timed out [com.ibm.ws.webcontainer.srt.SRTServletResponse@c3342c0f]
[8/16/14 4:32:50:106 EDT] 000000c6 HttpResponseM 1 setStatusCode(sc): Status code: 500
[8/16/14 4:32:50:106 EDT] 000000f0 SRTServletRes 1 com.ibm.ws.webcontainer.srt.SRTServletResponse getRequest request=com.ibm.ws.webcontainer.srt.SRTServletRequest@62121da3 [com.ibm.ws.webcontainer.srt.SRTServletResponse@c3342c0f]
非常感谢任何有关进一步调试此问题的帮助。
答案 0 :(得分:2)
第一条消息&#34; ServiceProxy&gt; ServiceProxy getStatusCodeFromException ENTRY java.net.ConnectException:连接超时&#34;表示Worklight Console和Worklight管理服务之间的服务代理不起作用。以下消息可能由此产生。可能是您需要设置JNDI属性 ibm.worklight.admin.endpoint ,或者您已经设置了它但错误地设置了它。它应该设置为https://someserver.net:9080/worklightadmin(请根据您的需要更换协议,服务器和端口)。
两个提示:
如何为 ibm.worklight.admin.endpoint 找到正确的值?在浏览器中输入,例如:
https://myserver.net:9080/worklightadmin/userAndConfigInfo
(请修改协议,主机和端口)。如果这要求输入用户名和密码,然后显示一些JSON字符串,则结束点是此地址,不包括&#39; userAndConfigInfo&#39; (在这个例子中:https://myserver.net:9080/worklightadmin)。如果这会返回连接超时或任何其他错误,那么您输入了错误的值,您需要验证服务器配置以找到正确的值。
这是什么服务代理?浏览器首先将所有REST请求发送到Worklight Console Web应用程序,然后将其重定向到Worklight管理服务Web应用程序。这有技术原因,因为它改进了身份验证行为和错误消息。
可以通过将JNDI属性 ibm.worklight.admin.ui.cors 设置为false来禁用服务代理。在这种情况下,浏览器将REST请求直接发送到Worklight管理服务。您仍然需要正确设置 ibm.worklight.admin.endpoint ,否则您仍会获得连接超时。