Worklight 6.1不加载我的servlet

时间:2014-01-16 09:06:07

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

由于我将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位于战争内部并且每次都被覆盖;关于它的任何建议?

在server.xml中我有:

            <feature>servlet-3.0</feature>

Worklight 6.1中的非加载servlet问题是由于Servlet部署描述符的XML模式的默认版本所致。

归因于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版本?

1 个答案:

答案 0 :(得分:1)

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


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

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

请参阅此问题中的评论:Worklight Init Servlet

根据评论,您可以尝试的是:

  

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