Wicket は
core/serializer-kryo2 at master · wicketstuff/core
にISerializer
の
Javaの
を
前提
- wicket の
version
7.7.0 です。
<!-- WICKET DEPENDENCIES --> <dependency> <groupId>org.apache.wicket</groupId> <artifactId>wicket-core</artifactId> <version>7.7.0</version> </dependency>
wicketstuff serializer-kryo2 を 使う
pom.xml に dependency を 追加する
<dependency> <groupId>org.wicketstuff</groupId> <artifactId>wicketstuff-serializer-kryo2</artifactId> <version>7.7.0</version> </dependency>
Application クラス内で、 KryoSerializer を 設定
getFrameworkSettings().setSerializer(new KryoSerializer());
これで、
補足
KryoSerializer の
bufferSize に ついて
デフォルトコンストラクタ呼び出しだと、DEFAULT_BUFFER_SIZE
が適用され、 10MB
になります。
この値を、 1KB
にした ところ、 com.esotericsoftware.kryo.KryoException: Buffer overflow.
が発生しました。 10MB
を超える Pageクラス(Pageクラス群かも?)は それほどないかもしれないですが、
場合によっては、 サイズ調整が 必要かもしれません。 README.md の
Notes に ついて
あまり、 テストしていないので、 Wicket の Class の カスタムシリアライザーの 登録が 必要かもしれない 旨と、
内部で、SUN/Oracle JDK 独自の API(sun.reflect.ReflectionFactory) を 使っているので、 他の JDKだと、
上手く動かないかもしれない 旨が 記載されています。 Kryo の
version に ついて
kryo2
が使われています。 最新version は kryo4
なので、
少し古いかもしれません。
InspectingKryoSerializer を 使う
KryoSerializer
をInspectingKryoSerializer
の
README.md に
Development モード であれば、InspectingKryoSerializer
、
Deployment モード であれば、KryoSerializer
を
if (usesDevelopmentConfig()) { // ------------------------------------ // Set Serializer // -------- IReportOutput reportOutput=new LoggerReportOutput(); // output of report of type sizes, sorted tree report (by size), aggregated tree ISerializedObjectTreeProcessor typeAndSortedTreeAndCollapsedSortedTreeProcessors = TreeProcessors.listOf( new TypeSizeReport(reportOutput), new SortedTreeSizeReport(reportOutput), new SimilarNodeTreeTransformator( new SortedTreeSizeReport(reportOutput))); // strips class object writes from tree TreeTransformator treeProcessors = new TreeTransformator( typeAndSortedTreeAndCollapsedSortedTreeProcessors, TreeTransformator.strip(new TypeFilter(Class.class))); // serialization listener notified on every written object ISerializationListener serializationListener = SerializationListeners.listOf( new DefaultJavaSerializationValidator(), new AnalyzingSerializationListener( new NativeTypesAsLabel(new ComponentIdAsLabel()), treeProcessors)); InspectingKryoSerializer serializer = new InspectingKryoSerializer(Bytes.megabytes(1L), serializationListener); getFrameworkSettings().setSerializer(serializer); } if (usesDeploymentConfig()) { // ------------------------------------ // Set Serializer // -------- getFrameworkSettings().setSerializer(new KryoSerializer()); }
ログ設定で、org.wicketstuff.pageserializer
をDEBUG
レベルに
[1].以下は、
# Logging settings. logging: # The default level of all loggers. Can be OFF, ERROR, WARN, INFO, DEBUG, TRACE, or ALL. level: INFO # Logger-specific levels. loggers: org.wicketstuff.pageserializer: DEBUG org.apache.wicket.protocol.http: INFO org.owasp.csrfguard: INFO appenders: - type: console timeZone: JST
これで、
========================================================================================================================= |bytes|Type | ------------------------------------------------------------------------------------------------------------------------- | 4790|java.lang.String | | 1168|java.lang.Integer | | 757|org.apache.wicket.markup.html.link.BookmarkablePageLink | | 386|xyz.monotalk.festivals4partypeople.web.ui.pages.festival.search.FestivalsSearchPage$1$1 | | 338|org.apache.wicket.markup.repeater.Item | | 289|org.apache.wicket.markup.html.image.ExternalImage | | 268|org.apache.wicket.markup.html.basic.Label | | 252|xyz.monotalk.festivals4partypeople.web.wicket.stateless.StatelessAjaxFormValidatingBehavior$FormValidateVisitor$1| | 223|org.apache.wicket.markup.html.list.ListItem | | 207|xyz.monotalk.festivals4partypeople.web.wicket.stateless.StatelessPagingNavigator$1 | | 192|xyz.monotalk.festivals4partypeople.web.ui.panels.feedback.ApplicationFeedbackPanel | | 187|org.apache.wicket.markup.html.list.LoopItem | | 180|org.apache.wicket.request.mapper.parameter.INamedParameters$NamedPair | | 168|org.apache.wicket.model.Model | | 150|org.apache.wicket.request.mapper.parameter.PageParameters |
サイズのKryoSerializer
の
レポートは、TypeSizeReport
と、TreeSizeReport
の
使用して
以上です。
コメント