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

Posted

技术标签:

【中文标题】在 websphere 中部署的应用程序在请求时找不到【英文标题】:Deployed application in websphere it's not found when requesting it 【发布时间】:2016-06-15 20:37:08 【问题描述】:

我正在部署一个 worklight http 适配器,它有一个从 DB 中检索某些内容的单一方法,并且它被映射到路径 /foo/bar/1

在 websphere 控制台中,我可以看到我的应用程序已经启动并且日志中没有错误,但是当我从 Mobile First 应用程序调用适配器时,我得到了这个 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> 

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

[2016 年 6 月 15 日星期三 10:00:28] [错误] [客户端 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

我已经搜索了信息以进行故障排除,但我仍然无法找出根本原因。任何帮助以继续对其进行故障排除。

【问题讨论】:

【参考方案1】:

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

插件通常从应用服务器上生成的 plugin-cfg.xml 读取应用程序上下文根。你的网络服务器系统是最新的并且知道 /foo 作为上下文根吗?

【讨论】:

【参考方案2】:

您使用的是什么版本的“Worklight”(或 IBM MobileFirst 平台)?鉴于听起来您正在尝试将适配器作为 REST 调用来调用,我假设您使用的是 7.0 或更高版本,因为那是首次引入对适配器的 REST 支持的时候。

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

http(s)://<server>:<port>/<Context>/adapters/<adapter-name>/*

其中&lt;Context&gt; 是您的项目名称,* 是您的 javascript 适配器中的方法名称。

如果您使用 WLResourceRequest 客户端 API 从移动应用程序调用适配器,则只需提供 &lt;adapter-name&gt;/* 部分,其余部分将自动处理。

更多信息在这里:http://www.ibm.com/support/knowledgecenter/SSHS8R_7.0.0/com.ibm.worklight.dev.doc/devref/c_adapters_endpoint.html

【讨论】:

以上是关于在 websphere 中部署的应用程序在请求时找不到的主要内容,如果未能解决你的问题,请参考以下文章

如何从 WebSphere Liberty Maven 插件部署到 WebSphere Liberty 应用程序目录?

有没有办法在WebSphere和OracleAS中自动化EAR部署?

在 Websphere 上重新部署 WAR 后重新启动应用程序服务器

显示来自服务器的图像时找不到图像的网页

websphere上集群部署,war包是如何发布的?

osgi应用使用桥接的方式打成war包部署在websphere上时遇到的与cxf相关的问题