Wildfly 10.1 десериализовать постоянную сессию - PullRequest
0 голосов
/ 29 сентября 2018

Учитывая 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

Как я могу прочитать содержание сеанса?

...