Jetty で Session Clustering を 使用したところ、その前に設定した DoSFilter で 以下のエラーが発生しました。
WARN [2017-02-17 21:51:25,560] org.eclipse.jetty.nosql.mongodb.MongoSessionManager:
! java.io.NotSerializableException: org.eclipse.jetty.servlets.DoSFilter
! at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
以下、メーリングリストのスレッドに記載されていましたが、
trackSessions=true
にしていると発生するようです。
DoSFilter
自体がSerializable
でも解決しそうにおもいますが、
trackSession=false
に変更してみます。
[jetty-users] JDBCSession persistence error java.io.NotSerializableExcep
- trackSession を false に 変更する
http://www.monotalk.xyz/blog/Use-Jetty’s-Dos-FIlter-in-Dropwizard/
のrunメソッドに以下の1行を加えます。
doSFilterHolder.setInitParameter("trackSessions", "false");
これで、java.io.NotSerializableException
は発生しなくなりました。
trackSession=false
だと起こること
IPアドレスベースでの検知になるため、企業内LAN等だと、
全て同じIPになる可能性があります。
LB部でDoS検知するか、
Serializable
な DoSFilter
を作成する必要があるのかもしれません。
以上です。
コメント