Учитывая Wildfly 10.1 с сохранением сеанса, настроенным как
<subsystem xmlns="urn:jboss:domain:undertow:3.1">
...
<servlet-container name="default">
<jsp-config x-powered-by="false"/>
<persistent-sessions path="ssn" relative-to="jboss.server.tmp.dir"/>
<websockets/>
</servlet-container>
...
</subsystem>
После выключения сервера у меня есть файл, названный в честь моего файла WAR.Содержание как-то читается, я вижу хэш-карту и значения сессии внутри.Я хотел бы десериализовать это.После поиска в источниках Wildfly я нашел единственный класс, способный читать сессию из файла: org.wildfly.extension.undertow.DiskBasedModularPersistentSessionManager Но когда я пытаюсь прочитать файл из src:
DiskBasedModularPersistentSessionManager sessionManager = new DiskBasedModularPersistentSessionManager("C:/tmp", "");
sessionManager.start(null);
sessionManager.baseDir = new File("c:/tmp");
sessionManager.loadSerializedSessions("www.war");
Меня бросает:
Exception in thread "main" java.io.UTFDataFormatException: Invalid byte
at org.jboss.marshalling.UTFUtils.readUTFBytes(UTFUtils.java:173)
at org.jboss.marshalling.river.RiverUnmarshaller.readUTF(RiverUnmarshaller.java:1833)
at org.jboss.marshalling.river.RiverUnmarshaller.doReadClassDescriptor(RiverUnmarshaller.java:959)
at org.jboss.marshalling.river.RiverUnmarshaller.doReadNewObject(RiverUnmarshaller.java:1255)
at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:276)
at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:209)
at org.jboss.marshalling.AbstractObjectInput.readObject(AbstractObjectInput.java:41)
at org.wildfly.extension.undertow.DiskBasedModularPersistentSessionManager.loadSerializedSessions(DiskBasedModularPersistentSessionManager.java:115)
at org.wildfly.extension.undertow.DiskBasedModularPersistentSessionManager.main(DiskBasedModularPersistentSessionManager.java:134)
После небольшого исследования причины я получил ответ, что это какой-то механизм защиты миграции сеанса из одной основной версии в другую.Но в моем случае файл генерируется той же версией Wildfly и теми же версиями lib.
- jboss-logging-3.3.0.Final.jar
- jboss-marshalling-1.4.11.Final.jar
- jboss-marshalling-river-1.4.11.Final.jar
- jboss-msc-1.2.6.Final.jar
- undertow-servlet-1.4.0.Final.jar
- wildfly-undertow-10.1.0.Final.jar
- xnio-api-3.4.0.Final.jar
Как я могу прочитать содержание сеанса?