在websphere中部署应用程序时,在请求它时找不到它

时间:2016-06-15 20:37:08

标签: websphere worklight-adapters

我正在部署一个worklight http适配器,该适配器只有一个方法可以从DB中检索某些内容并将其映射到path / foo / bar / 1

在websphere控制台中,我可以看到我的应用程序已启动且日志中没有错误,但是当我从Mobile First App调用适配器时,我得到了这个json响应:

{
   "errors": [
      "Runtime: Failed to parse JSON string
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /foo/bar/1 was not found on this server.</p>
<hr>
<address>IBM_HTTP_Server at my.server.edu Port XXX</address>
</body></html>"
   ],
   "info": [
   ],
   "isSuccessful": false,
   "warnings": [
   ]
}

我知道适配器正在工作,因为它至少返回此错误响应。但问题是,如果我看到它在websphere控制台中启动,我的应用程序无法找到?我已经尝试停止它并再次启动它并检查部署描述符并且看起来很好。

<application id="Application_ID" version="5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd" >
 <display-name> myApp</display-name>
<module>
<web>
 <web-uri> myApp.war</web-uri>
 <context-root> foo</context-root>
 </web>
 </module>
 </application> 

调用适配器后,在日志中我可以看到

[Wed Jun 15 10:00:28 2016] [错误] [客户端XX.XX.XXX.XXX]文件不存在:/ opt / IBM / HTTPServer / htdocs / foo

XX.XX.XXX.XXX - - [15 / Jun / 2016:12:03:10 -0500]“GET / foo / bar / 1 HTTP / 1.1”404 301

我用谷歌搜索信息进行故障排除,但我仍然无法找出根本原因。任何有关继续排除故障的帮助都表示赞赏。

2 个答案:

答案 0 :(得分:2)

error_log条目表示WAS WebServer插件(假设它在基于Apache的服务器中配置)不认为它对/ foo的请求负责。

通常,插件从appciation服务器上生成的plugin-cfg.xml中读取应用程序上下文根。您是否在Web服务器系统上更新并将/ foo视为上下文根?

答案 1 :(得分:1)

什么版本的&#39; Worklight&#39; (或IBM MobileFirst Platform)您使用的是?鉴于您听起来正在尝试将适配器作为REST调用进行调用,我假设您使用的是7.0或更高版本,因为这是首次引入REST对适配器的支持。

您提到您已将适配器映射到/ foo / bar / 1,但请注意适配器URL遵循以下模式:

*(pointer+offset)

其中http(s)://<server>:<port>/<Context>/adapters/<adapter-name>/* 是项目的名称,<Context>是Javascript适配器中方法的名称。

如果您使用*客户端API从移动应用中调用适配器,则只需提供WLResourceRequest部分,其余部分将自动处理

此处提供了更多信息:http://www.ibm.com/support/knowledgecenter/SSHS8R_7.0.0/com.ibm.worklight.dev.doc/devref/c_adapters_endpoint.html