【问题标题】:Worklight 6.1 doesn't load my servletWorklight 6.1 不加载我的 servlet
【发布时间】:2014-02-05 02:29:22
【问题描述】:

自从我将 Worklight 升级到版本 6.1(eclipse 插件版本:6.1.0.00-20131219-1900)后,我创建的 servlet MyServlet(并且在以前的版本中运行良好)不再工作。

“它不起作用”是指当 Worklight 服务器启动时 init () 不再执行。 这是我的jee符号:

   @ WebServlet (name = "MyServlet", displayName = "MyServlet", urlPatterns = {"/ MyServlet / *"}, loadOnStartup = 1) public class MyServlet extends HttpServlet {

我认为新的 Worklight 无法识别该符号,因此有必要调整 web.xml。 问题是web.xml位于war里面,每次都被覆盖;有什么建议吗?

在 server.xml 我有:

            <feature>servlet-3.0</feature>

Worklight 6.1 中未加载 servlet 的问题是由于 Servlet 部署描述符的 XML Schema 的默认版本造成的。

应将归属于 worklight 的版本设置为 3.0(而不是 2.4),以强制执行 3.0 行为(允许使用 jee 符号)。在 Worklight 6.0 中为 3.0,现在在 Worklight 6.1 中设置为 2.4。我已经手动替换了我的 war 项目中 web.xml 中的 webapp 描述符元素:

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

现在它可以工作了(我的 Servlet 已加载!)。

是否可以在 Worklight 6.1 中默认恢复 3.0 版本?

【问题讨论】:

  • 查看我编辑的关于 v3 问题的答案。

标签: jakarta-ee servlets ibm-mobilefirst web.xml worklight-server


【解决方案1】:

要回答回到 v3 的问题 - 这是不可能的。虽然这是以前版本中的版本,但由于兼容性原因,决定回到 v2.4。不支持 v3。


确实,在 Worklight Studio 中的每次构建时都会重新生成 .war 文件的内容。这适用于所有以前的 Worklight 版本,对于 6.1.0 来说并不新。这是预期的行为。

不建议在开发过程中以任何方式编辑 web.xml 文件(因为它会被覆盖)。因此也不建议将其用于生产,因为如果您在项目中进行任何更改然后重新部署 .war 文件,它将不会包含您之前的构建后更改。

查看此问题中的 cmets:Worklight Init Servlet

根据 cmets,您可以尝试的是:

另一种选择可能是将单独的 servlet 部署到您的 服务器(不是 WL .war 的一部分)并使用 HTTP 适配器

【讨论】:

  • 那么是不是不能像以前版本的worklight一样在.war中加载servlet?
  • 您是否尝试在构建项目后编辑 .war 文件中的 web.xml?无论哪种方式,这都不是您应该做的事情。如果您决定这样做,请记住这是 Worklight 不支持的功能,因此 也可以使其工作。但请记住,如果您重新构建项目,您的更改将消失。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-20
相关资源
最近更新 更多