問題タブ [icepush]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - ICEPush: 通知時にパラメーターを渡す
ICEPush の基本的な機能をよく理解しています。クライアントがサブスクライブし、新しいデータがあるとサーバーがサブスクライバーに通知し、クライアントが ajax を介してペイロードを要求します。これは十分に機能しますが、特定のシナリオで発生するパフォーマンスの問題があります。
いくつかのアイテムの変更を追跡しているページがあるとします。たとえば、「ItemChange」というサーバー上の ICEPush イベントにサブスクライブします。この「ItemChange」イベントは、サーバー上のプロセスが「Item」エンティティを変更するたびにトリガーされます。ここで、ユーザーが ID 2 と 3 のアイテムを追跡していて、ID 5 のアイテムを変更するイベントがサーバーで発生したとします。サーバーは「ItemChange」イベントを通知し、クライアントはペイロードを要求します。アイテム 5 を追跡していないため、役に立ちません。このシナリオでは、サーバーに対して多くの不要な呼び出しが発生します。
これを回避する方法を探していましたが、まだ何も見つかりませんでした。通知と一緒にパラメーターを送信できれば、変更されたアイテムの ID を渡すだけで済みます。したがって、クライアントはペイロードを要求する必要があるかどうかを知ることができますが、その方法はないようです。これを行う。どんな提案でも大歓迎です、ありがとう。
jsf - JSF 2.0 (IceFaces 3.2) ApplicationScoped Bean、共有データ、および PUSH
共有データとプッシュに少し問題があります。
3 つの行を含むテーブルがあります。これらの行は、選択した基準日によって異なります (各ユーザーは異なる基準日を選択する可能性があるため、セッション スコープ内にあります)。たとえば、次のようにします。
- [{1, 'a', "active"}, {2, 'b', "active"}, {3, 'c', "inactive"}] 基準日 10-Feb-13 および
- [{4, 'a', "inactive"}, {5, 'b', "active"}, {6, 'c', "inactive"}] 基準日 13-Mar-13.
オブジェクトは、種類 {ID、LABEL、STATUS} のトリプルです。
行は、同じ基準日をウォッチしているユーザー間で共有する必要があります。たとえば、ユーザー U1 と U2 は、基準日が 10-Feb-13 のテーブルをウォッチしています。理想的には、U1 が行 {1, 'a', "active"} を "inactive" に変更すると、プッシュ通知 (実際には IcePush) を介して、それを確認するユーザー U2 にも変更が伝達されます。ここまでは順調ですね。
より多くのユーザーが異なる参照日を見ると、問題が発生します。これは、Bean がアプリケーション スコープであるため、ユーザーの特定の参照日ではない行を除外し、不要な行を「解放」しようとするためです。
私たちは当初、特定の参照日を視聴しているユーザーをカウントできると考えていましたが、それはガベージ コレクションをカウントする参照のようなものであり、私が深く掘り下げたくない混乱です。
ちなみに、このチュートリアルを読んだので、このように動作するはずだと思いました。
vaadin - Vaadin 7 で ICEPush 0.5.5 を実装
Vaadin 7 プロジェクトに ICEPush アドオンを追加しようとしています。しかし、それを実装する正しい方法が見つかりませんでした。
これを web.xml ファイルに追加しました。
クラスorg.vaadin.artur.icepush.ICEPushServlet
は利用できないようです。に変更しましたorg.icepush.servlet.ICEpushServlet
。
Vaadin 7.0.4 と ICEPush 0.5.5 を使用しています。Vaadin 7 で ICEPush を実装する方法を教えてもらえますか。
java - maven インストール中の Vaadin アドオン ICEpush エラー
Vaadin Addon ICEpush を使用しようとしています。次のMavenスニペットをpom.xmlに追加しました
pom.xml に以下も追加しました
しかし、Eclipse から Maven インストールすると、次のエラーが発生します。
これを解決する方法についての提案は大歓迎です
servlets - セッション開始時に動的にサーブレット フィルターを追加/削除する
私の JSF アプリケーションは、JCIFS である Active Directory 認証モジュールを使用しています。しかし、JCIFS フィルターは IE8 の ICEpush 関連のものを防ぎます。認証後にJCIFSフィルターを(可能であれば)削除することを考えました。したがって、セッションベースです。セッションの統計時にフィルターを適用できますか?認証が完了したら、現在のセッションからフィルターを削除できますか? そのため、現在のセッションの後にリクエストはフィルタリングされません。
ありがとう。
liferay - Liferay-Portlet 6.1.20 と ICEFaces 3.3.0: ace:fileEntry および icepush
Liferay のポートレットを作成していて、ace:fileEntry コンポーネントが必要です。最終的に解決できた問題がいくつかありました。しかし今、私は理解できない問題に直面しています。
ace:fileEntry が含まれているビューページがオープンエンドの場合、プラス マイナス 90 秒後に「ネットワーク接続が中断されました」というメッセージがポップアップ表示され、ページをリロードする必要があります。いくつかの調査の後、ブラウザコンソールで次の行を見つけました。
以下のバージョンの Liferay と ICEFaces を使用しています。
- Liferay ポータル 6.1.20-EE-GA2
- Liferay-Faces-Bridge-Impl 3.1.2-ga3
- ICEFaces 3.3.0
私の web.xml は次のようになります。
私の face-config.xml は次のようになります。
ace:fileEntry が配置されている私の viewpage.xhtml は次のようになります。
あなたの誰かが問題を解決する方法を知っていますか、またはなぜこれが起こるのですか?
multithreading - 同時変更例外を発生させずに他のユーザーの Vaadin テーブルを更新する方法は?
ユースケース:ユーザーがログインし、Vaadin Table コンポーネントを開いて予定のステータスを表示しました。すべての行には、ステータス (Scheduled、Arrived、Reviewed) を変更するためのドロップダウン (ComboBox) があります。現在、複数のユーザーが自分のブラウザでこのテーブルを開き、予定のステータスを継続的に変更しています。これらの変更は、開いているすべてのテーブルに反映される必要があります。つまり、ユーザー A が予定 appt-1 のステータスを変更すると、現在開いているすべてのテーブルに反映されて更新されます。
以前は、ICE-PUSH アドオンを使用してイベント ベースの更新を適用していました。つまり、PC-1 (つまり、アプリケーション インスタンス a1) で変更が行われた場合、Vaadin アプリケーションの他のインスタンスをクラスの静的CopyOnWriteArrayList
から取得し、MainApplication
そのインスタンスによって関数を呼び出しloadTable
ます。その後、ICEPUSH を呼び出して、新しい変更をすべてのユーザーにプッシュします。
これは正常に機能しますが、多くの頻繁な変更が行われると、同時変更例外が発生する場合があります。誰かがこれを改善するのを助けることができれば?
この後に私が考えている解決策は、テーブルコンポーネントを強制的に更新するのではなく、独自のアプリインスタンスによって1ミントごとに継続的に更新することです。これにより、データベースがクエリされ、更新されたステータスでテーブル コンテナーがリロードされます。この目的のために、私はリフレッシャーアドオンを使用しますが、例外ConcurrentModificationException
が発生します. したがって、ユーザーが何もできず、バックグラウンドでテーブルを簡単に更新できるように、ユーザーの観点からテーブルコンポーネントをフリーズすることを考えています。
このユースケースでより良い解決策がある場合は、教えてください。私はあなたに感謝しています。
Vaadin 6.8.12、Java 1.7、Apache Tomcat 7.42 を使用
jsf - org.icepush.util.ExtensionRegistry.getBestExtension での java.lang.NullPointerException
新しい IceFace プロジェクトを作成し、ローカル ホストで実行しようとしましたが、次のエラー メッセージが表示されました。
ここに私のweb.xmlがあります
WebContext の下にある 2 つのファイルは、index.jsf にリダイレクトする index.jsp で、もう 1 つのファイルは index.xhtml で、次のものが含まれています。
ウェルカムファイルリストをに切り替えてみました
この変更により、ローカルホストはクラッシュしませんが、空白のページが表示されます (JSF 要素は表示されません)。JSf タグが解析されていないためだと感じていますが、どこにあるのかよくわかりません。問題は、誰か私を助けてくれますか?
その他の情報: Web 開発者向けの Eclipse Java EE IDE を使用しています ICEFACES 3.3.0 Tomcat 3.0
ありがとう。
アップデート:
私のweb.xmlウェルカムファイルリストをに変更しました
サーブレットマッピングをに変更しました
現在クラッシュはありませんが、JSF 要素が表示されず、空白のページしか表示されません。
更新:
Web.xml
url-pattern
タグ内で.jsfと.xhtmlを試しましたが、どちらもうまくいきません
index.jsp
ページをロードした後、空白になるので、ページを右クリックしてソースを表示すると、これが見つかりました...
なぜこれが起こっているのですか?