【问题标题】:HttpAdapter to JavaServlet commnicationHttpAdapter 到 Java Servlet 的通信
【发布时间】:2014-08-14 06:59:25
【问题描述】:

最初,我们将应用程序服务器作为一个单独的服务器。使用适配器从 Worklight 服务器到 Application Server 的通信。但目前我们正在将 Application Server 代码移动到 Worklight 的 Server 文件夹中。我们可以使用 HTTPAdapter 调用 java 类(Simple java class not servlets)。但是使用 HTTPAdapter 很难与 servlet(包含在服务器文件夹中)进行通信。请提供任何解决方案?

【问题讨论】:

  • 您应该提供更多详细信息,并可能提供一个示例,说明您正在尝试做什么以及您仍然不能做什么。目前,您的问题还不清楚。
  • 目前worklightapplication和tomcat server是不同机器上的两个不同的应用程序,worklightapplication和tomcat server之间的通信我们使用HTTPAdapter。我们必须运行tomcat server和tomcat server中运行的J2EE应用同一个worklight服务器中的混合应用程序。为了实现这一点,我们将applicationserver代码包含在混合应用程序中包含的服务器文件夹中。是否可以使用HTTPAdapter从放置在同一混合应用程序的服务器文件夹中的应用程序调用servlet ?

标签: servlets ibm-mobilefirst


【解决方案1】:

如果我理解正确,您已将一些 servlet 类放在 Worklight 服务器文件夹中。由于它们是 Java 类,它们现在对您的适配器可见。然而,要成为真正的 servlet 的 servlet 必须部署到具有适当配置的 JEE servlet 引擎。您可以将 Servlet(在它们自己的 WAR 文件中)作为单独的 JEE 应用程序部署在与 Worklight 相同的服务器上,但不能将它们打包内部 Worklight 本身。

根据您的说明进行了编辑:

您希望整合您的 servlet 应用程序,该应用程序将通过工作灯适配器访问的数据提供到与工作灯服务器相同的服务器实例上。 Worklight Server 实际上是一个部署到受支持的 JEE 服务器之一的 JEE 应用程序,通常是随 Worklight 提供的 WebSphere Liberty,并且 Worklight Server 实际上被打包为一个 WAR 文件。您的 Data Provider servlet 也将打包为 WAR 文件,您只需将该 WAR 部署到您当前用于工作灯的 Liberty 服务器。

如果您在 Worklight Studio 中进行开发,您可以通过查看“Worklight Development Server”下找到相关文件夹。您可以将 WAR 放到应用程序文件夹中,如有必要,可以编辑 server.xml 以添加任何额外的配置:

  WorklightServerConfig/servers/worklight/server.xml

见:http://www-01.ibm.com/support/knowledgecenter/SSCKBL_8.5.5/com.ibm.websphere.wlp.nd.doc/ae/twlp_dep_war.html

第二次编辑尝试再次解释。

Worklight 项目代表您的应用程序,当您部署到 Worklight Server 时,会创建一个 WAR 文件,我们称之为 MyApp.WAR,它可以部署到 WebSphere Application Server,在 Worklight Studio 内,您会自动获得一个 WebSphere Liberty Profile .可以在 Project Worklight Development Server 中看到 Liberty Profile 的配置。关键思想在这里,您有一个 Liberty Profile 的 App Server,并部署 MyApp.WAR 文件以创建我们通常称为 Worklight 服务器的东西,它是为您的 Worklight 控制台提供服务的 MyApp.WaR。该 WAR 文件源自您项目的 server 文件夹的内容,该文件夹的名称有点误导,它不是“服务器”本身,而是您的项目特定的 WAR 信息。

现在除了要运行一个已经打包为 WAR 文件的 Servlet,我们称之为 Data.WAR。关键是您需要在 Worklight Development Server、Liberty Profile 上运行 Data.WAR。您没有将此 DATA.WAR 文件包含到项目的服务器文件夹中,这将有效地将 DATA.war 放入 MyApp.WAR 中。相反,您只需将 Data.WAR 放入 Worklight 开发服务器的应用程序文件夹并调整 server.xml。

所以:步骤 1. 让 Data.WAR 在开发服务器中运行。验证您是否可以从浏览器调用预期的 servlet。请注意有效的 URL。在验证之前不要尝试使用您的适配器。

第 2 步。调整适配器以调用该 URL。

【讨论】:

  • 感谢您的回复。当我按照此过程创建一个新文件夹并创建应用程序服务器项目时,就可以进行通信了。我的问题是是否可以调用包含在服务器文件夹中的 servlet,驻留在混合应用程序中。
  • 在我的回答中,我试图解释:一个 servlet 只有在 servlet 引擎中运行时才能被称为 AS A SERLVET。在混合应用程序的主体中,它只是一组 java 类。 Worklight 本身是一个 JEE 应用程序,您不应该尝试将自己的 servlet 代码添加到 Worklight。也许您应该解释您希望通过您的方法实现什么,为什么您会看到这种联合包装的好处,也许我们可以提出一些建议。
  • 目前worklightapplication和tomcat server是不同机器上的两个不同的应用程序,worklightapplication和tomcat server之间的通信我们使用HTTPAdapter。我们必须运行tomcat server和tomcat server中运行的J2EE应用同一个worklight服务器中的混合应用程序。为了实现这一点,我们将applicationserver代码包含在混合应用程序中包含的服务器文件夹中。是否可以使用HTTPAdapter从放置在同一混合应用程序的服务器文件夹中的应用程序调用servlet ?
  • 我已经调整了我的答案。是的,你可以实现你想要的。
  • 我已将 servlet war 文件导入到 worklight 应用程序内的服务器文件夹中,并尝试使用 HTTPAdapter 调用该过程。得到的响应为 { "isSuccessful": true, "responseHeaders": { “内容语言”:“en-US”,“日期”:“星期二,2014 年 8 月 19 日 08:47:51 GMT”,“位置”:“http:\/\/192.168.1.70:8080\/AppServer\ /?userName=abcdef&passWord=abcdef&origin=Login", "Transfer-Encoding": "chunked", "X-Powered-By": "Servlet\/3.0" }, "responseTime": 3, "statusCode": 302, " statusReason": "Found", "totalTime": 3 } 我该如何解决?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-28
  • 1970-01-01
相关资源
最近更新 更多