自从我将Worklight升级到Version6.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 {我认为新的工作灯没有识别这个符号,并且有必要调整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版吗?
发布于 2014-01-16 09:11:29
要回答回到v3的问题,这是不可能的。虽然这是前一个版本中的版本,但由于兼容性原因,决定返回到版本2.4。不支持v3。
实际上,.war文件的内容是在Worklight Studio中的每个构建中重新生成的。这适用于所有以前的Worklight版本,而不是6.1.0中的新版本。这是预期的行为。
在开发过程中,不建议以任何方式编辑web.xml文件(因为它将被重写)。因此,它也不推荐用于生产,因为如果您在项目中做了任何更改,然后重新部署了.war文件,那么它将不包含以前的构建后更改。
参见这个问题中的注释:Worklight Init Servlet
根据这些评论,您可以尝试的是:
另一种选择可能是将一个单独的servlet部署到您的服务器上(而不是WL .war的一部分),并使用HTTP适配器与其通信。
https://stackoverflow.com/questions/21157442
复制相似问题