0

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 をデフォルトで復元することはできますか?

4

1 に答える 1

1

v3 に戻るという質問に答えるには、これは不可能です。これは以前のリリースのバージョンでしたが、互換性の理由から v2.4 に戻すことが決定されました。v3 はサポートされていません。


実際、.war ファイルの内容は、Worklight Studio でビルドするたびに再生成されています。これは、以前のすべての Worklight バージョンに当てはまり、6.1.0 の新機能ではありません。これは予期される動作です。

開発中に web.xml ファイルを編集することはお勧めしません (上書きされるため)。プロジェクトに変更を加えてから .war ファイルを再デプロイすると、以前のビルド後の変更が含まれないため、結果として本番環境にも推奨されません。

この質問のコメントを参照してください: Worklight Init Servlet

コメントに基づいて試すことができるのは、次のとおりです。

別のオプションとして、別のサーブレットをサーバー (WL .war の一部ではない) にデプロイし、HTTP アダプターを使用して通信することもできます。

于 2014-01-16T09:11:29.707 に答える