由于我将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版本?
答案 0 :(得分:1)
回答回到v3的问题 - 这是不可能的。虽然这是之前版本中的版本,但由于兼容性原因,我们决定回到v2.4。不支持v3。
实际上,在Worklight Studio中的每次构建时都会重新生成.war文件的内容。这适用于所有以前的Worklight版本,而不是6.1.0的新版本。这是预期的行为。
在开发过程中不建议以任何方式编辑web.xml文件(因为它将被覆盖)。因此,不建议用于生产,因为如果您对项目进行任何更改,然后重新部署.war文件,它将不包含您之前的构建后更改。
请参阅此问题中的评论:Worklight Init Servlet
根据评论,您可以尝试的是:
另一种选择可能是将一个单独的servlet部署到您的 服务器(不是WL .war的一部分)并使用它与它通信 HTTP适配器