Tôi muốn tắt tính năng tuần tự hóa trong ứng dụng Wicket và lưu trữ tất cả thông tin về trang/phiên trong RAM. Ứng dụng của tôi có số lượng người dùng rất nhỏ (thường là 1); Tôi không cần triển khai cluster; và tôi cần lưu vào bộ nhớ cache một số dữ liệu không thể tuần tự giữa các yêu cầu.Làm cách nào để vô hiệu hoá việc tuần tự hóa trong Wicket 1.5?
Có cách nào để Wicket không tự động cố gắng sắp xếp thứ tự các trang/phiên của tôi không? Tôi đã thử đề xuất sử dụng HttpSessionDataStore tại https://cwiki.apache.org/confluence/display/WICKET/Page+Storage, nhưng nó không có hiệu lực. Tôi vẫn nhận được đống dấu vết như thế này:
SEVERE: Error serializing object class com.prosc.safetynet.Administer [object=[Page class = com.prosc.safetynet.Administer, id = 0, render count = 1]]
org.apache.wicket.util.io.SerializableChecker$WicketNotSerializableException: Unable to serialize class: com.prosc.safetynet.SafetyNetSession$1
Field hierarchy is:
0 [class=com.prosc.safetynet.Administer, path=0]
java.lang.Object org.apache.wicket.Component.data [class=org.apache.wicket.model.CompoundPropertyModel]
private java.lang.Object org.apache.wicket.model.CompoundPropertyModel.target [class=com.prosc.safetynet.SafetyNetSession$2]
final com.prosc.safetynet.SafetyNetSession com.prosc.safetynet.SafetyNetSession$2.this$0 [class=com.prosc.safetynet.SafetyNetSession]
private java.lang.Object com.prosc.safetynet.SafetyNetSession.tryAndSerializeMeBitch [class=com.prosc.safetynet.SafetyNetSession$1] <----- field that is not serializable
at org.apache.wicket.util.io.SerializableChecker.internalCheck(SerializableChecker.java:395)
at org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:374)
at org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:655)
at org.apache.wicket.util.io.SerializableChecker.internalCheck(SerializableChecker.java:578)
at org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:374)
at org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:655)
at org.apache.wicket.util.io.SerializableChecker.internalCheck(SerializableChecker.java:578)
at org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:374)
at org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:655)
at org.apache.wicket.util.io.SerializableChecker.internalCheck(SerializableChecker.java:578)
at org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:374)
at org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:655)
at org.apache.wicket.util.io.SerializableChecker.internalCheck(SerializableChecker.java:578)
at org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:374)
at org.apache.wicket.util.io.SerializableChecker.writeObjectOverride(SerializableChecker.java:724)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
at org.apache.wicket.serialize.java.JavaSerializer$CheckerObjectOutputStream.writeObjectOverride(JavaSerializer.java:258)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
at org.apache.wicket.serialize.java.JavaSerializer.serialize(JavaSerializer.java:77)
at org.apache.wicket.pageStore.DefaultPageStore.serializePage(DefaultPageStore.java:368)
at org.apache.wicket.pageStore.DefaultPageStore.storePage(DefaultPageStore.java:146)
at org.apache.wicket.page.PageStoreManager$PersistentRequestAdapter.storeTouchedPages(PageStoreManager.java:383)
at org.apache.wicket.page.RequestAdapter.commitRequest(RequestAdapter.java:171)
at org.apache.wicket.page.AbstractPageManager.commitRequest(AbstractPageManager.java:94)
at org.apache.wicket.page.PageManagerDecorator.commitRequest(PageManagerDecorator.java:68)
at org.apache.wicket.page.PageAccessSynchronizer$2.commitRequest(PageAccessSynchronizer.java:281)
at org.apache.wicket.Application$2.onDetach(Application.java:1598)
at org.apache.wicket.request.cycle.RequestCycleListenerCollection$3.notify(RequestCycleListenerCollection.java:99)
at org.apache.wicket.request.cycle.RequestCycleListenerCollection$3.notify(RequestCycleListenerCollection.java:97)
at org.apache.wicket.util.listener.ListenerCollection$1.notify(ListenerCollection.java:119)
at org.apache.wicket.util.listener.ListenerCollection.reversedNotify(ListenerCollection.java:143)
at org.apache.wicket.util.listener.ListenerCollection.reversedNotifyIgnoringExceptions(ListenerCollection.java:113)
at org.apache.wicket.request.cycle.RequestCycleListenerCollection.onDetach(RequestCycleListenerCollection.java:95)
at org.apache.wicket.request.cycle.RequestCycle.onDetach(RequestCycle.java:603)
at org.apache.wicket.request.cycle.RequestCycle.detach(RequestCycle.java:542)
at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:287)
at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:188)
at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:244)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Thread.java:680)
Điều đó có hiệu quả, cảm ơn bạn –
Ngoài ra còn có một ví dụ: http://maciej-miklas.blogspot.de/2013/09/wicket-6-disable-page-serialization.html –