Dropwizard Jetty の DoSFilterで java.io.NotSerializableException: org.eclipse.jetty.servlets.DoSFilter が発生する


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検知するか、
SerializableDoSFilter を作成する必要があるのかもしれません。

以上です。

コメント