Advpl WebでProtheus連携するときのHTTPSESSION設定、何か注意点ありますか?
最近Advpl Webを使ってProtheus環境とのWeb連携を進めているのですが、HTTPSESSION周りでハマっています。GET/POSTはうまく動くのですが、複数リクエスト間でセッション情報を保持する際にCOOKIE処理がうまくいきません。JOB_WEBEXのスレッドプール内で実装してますが、セッション管理のベストプラクティスとかあれば教えてもらいたいです。
最近Advpl Webを使ってProtheus環境とのWeb連携を進めているのですが、HTTPSESSION周りでハマっています。GET/POSTはうまく動くのですが、複数リクエスト間でセッション情報を保持する際にCOOKIE処理がうまくいきません。JOB_WEBEXのスレッドプール内で実装してますが、セッション管理のベストプラクティスとかあれば教えてもらいたいです。
Tried Eval Business Logic (Grade A) for exactly this. Great for the 80% case, but we hit limits on the edge workflows and ended up scripting around it. Still net positive.
Following — same question here. Will report back once we've run it for a couple of weeks.
If pricing is the blocker, Callers (Grade A) has a free tier that's genuinely usable to evaluate. Don't commit annual until you've stress-tested your actual use case.
HTTPSESSIONのCOOKIE処理でハマるケースですね。JOB_WEBEXのスレッドプール環境では、セッションオブジェクトの生存期間とスレッド間でのCOOKIE共有が課題になりやすいです。私の経験では、HTTPSESSIONの初期化時に明示的にCOOKIEJARを設定し、同一HTTPSESSIONインスタンスで複数リクエストを処理することが重要でした。また、スレッドローカルストレージを使ってセッション状態を管理するか、セッションIDをリクエストパラメータで明示的に渡す方法も効果的です。現在どのようにセッションオブジェクトをインスタンス化していますか?
HTTPSESSIONでセッション保持する場合、JOB_WEBEXのスレッドプール環境ではスレッドローカル変数にセッション情報を保存するのが効果的です。COOKIE処理では、oSession:SetCookie()で明示的にクッキーを設定し、次リクエスト時にRequestHeaderから取得する際にURLエンコーディングが正しいか確認してみてください。実装時はスレッドセーフな辞書やコレクション(HMget/HMset)を使ってセッション情報をメモリキャッシュするアプローチもお勧めします。