Приложение не загружается после включения сохранения сеанса на основе jdbc
Я делаю POC с выпуском JBoss EAP 7.1, в котором я включил сохранение сеансов на основе БД, я проверил с сохранением по умолчанию менеджера кэша, и он работает хорошо, но каким-то образом он не сохраняет никаких данных сеанса в схеме базы данных, однако таблица создается в начале сервера, который я мог видеть, для этого я начинаю с примера counter.war, который присутствует в базе знаний Redhat. Я использую базу данных Oracle 12cR1.
Еще одна вещь, я также не могу видеть приложение из консоли, то же самое, когда я запускаю команду CLI для чтения ресурса. Когда я пытаюсь увидеть развертывание в разделе Развертывания, он просто жалуется
Невозможно загрузить развертывания
Неожиданный HTTP-ответ: 500 Request { "operation" => "read-children-resources", "address" => undefined, "child-type" => "deploy", "include-runtime" => true, "recursive" => true } Ответ Внутренняя ошибка сервера { "output" => "fail", "roll-back" => true }
Моя конфигурация сервера в standalone-ha.xml для хранилища jdbc выглядит следующим образом:
<cache-container name="server" aliases="singleton cluster" default-cache="default" module="org.wildfly.clustering.server">
<transport lock-timeout="60000"/>
<replicated-cache name="default">
<transaction mode="BATCH"/>
</replicated-cache>
</cache-container>
<cache-container name="web" default-cache="jdbc" module="org.wildfly.clustering.web.infinispan">
<transport channel="ee" lock-timeout="60000"/>
<local-cache name="concurrent">
<file-store passivation="true" purge="false"/>
</local-cache>
<invalidation-cache name="jdbc">
<binary-keyed-jdbc-store data-source="Session" dialect="ORACLE" fetch-state="false" passivation="false" preload="false" purge="false" shared="true" singleton="false">
<!-- <transaction mode="BATCH"/>-->
<property name="database-Type">
oracle
</property>
<binary-keyed-table prefix="sess">
<id-column name="ID" type="VARCHAR2(500)"/>
<data-column name="DATUM" type="BINARY"/>
<timestamp-column name="MAXINACTIVE" type="NUMBER"/>
<timestamp-column name="LASTACCESS" type="NUMBER"/>
<timestamp-column name="VERSION" type="NUMBER"/>
</binary-keyed-table>
</binary-keyed-jdbc-store>
</invalidation-cache>
</cache-container>
<cache-container name="ejb" aliases="sfsb" default-cache="dist" module="org.wildfly.clustering.ejb.infinispan">
<transport lock-timeout="60000"/>
<distributed-cache name="dist">
<locking isolation="REPEATABLE_READ"/>
<transaction mode="BATCH"/>
<file-store/>
</distributed-cache>
Созданная таблица также выглядит так:
TName
TABTYPE CLUSTERID
BIN $ cLKr2H7 + eQ3gU1J2QgonwQ == $ 0
ТАБЛИЦА
SESS_counter_war
ТАБЛИЦА
sess_counter_war
ТАБЛИЦА
К вашему сведению, просто для моего удовольствия я попытался изменить префикс в standalone-ha.xml, поэтому вы могли видеть две таблицы.
Пожалуйста, ведите меня, если я делаю что-то не так.
1 ответ
Это довольно поздний ответ, почти год спустя, но, как говорится, "Лучше поздно, чем никогда":)
Мне удалось успешно запустить приложение через несколько дней после первоначальной ошибки. Я понял, что в моей конфигурации возникла серьезная проблема. В основном у меня были следующие проблемы:
- Использование распределенного кеша вместо недействительного кеша.
- Использование двоичного хранилища вместо хранилища на основе строк.
- Недопустимый столбец и типы данных.
Обратитесь к исходному сообщению и ответьте здесь - https://developer.jboss.org/thread/278374
В EAP 7.1 вы должны настроить постоянство сеанса, используя string-keyed-jdbc-store
Вместо того, чтобы использовать binary-keyed-jdbc-store
что не рекомендуется в этой версии.