Worklight をバージョン 6.1 (Eclipse プラグイン バージョン: 6.1.0.00-20131219-1900) にアップグレードしたため、作成した (以前のバージョンでは問題なく動作していた) サーブレット MyServlet が機能しなくなりました。
「機能しない」とは、Worklight サーバーが始動したときに init() が実行されなくなったことを意味します。これは私のジー記法です:
@ 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 での非ロード サーブレットの問題は、サーブレット デプロイメント記述子の XML スキーマのデフォルト バージョンが原因です。
3.0 の動作を強制する (jee 表記の使用を許可する) には、worklight に起因するバージョンを (2.4 ではなく) 3.0 に設定する必要があります。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">
そして今、それは機能します(私のサーブレットがロードされました!)。
Worklight 6.1 でバージョン 3.0 をデフォルトで復元することはできますか?