首页 > 解决方案 > 启用基于 jdbc 的会话持久性后应用程序无法加载

问题描述

我正在使用 JBoss EAP 7.1 版本进行 POC,其中我启用了基于 db 的会话持久性,我已经使用默认缓存管理器持久性进行了测试,它运行良好,但不知何故它不会在数据库模式中存储任何会话数据,但是表在我可以看到的服务器启动时创建,为此我从 Redhat 知识库中的示例 counter.war 开始。我正在使用 Oracle 12cR1 数据库。

另一件事是,我也无法从控制台看到应用程序,当我运行 CLI 命令读取资源时也是如此。当我尝试在部署下查看部署时,它只是抱怨

无法加载部署

意外的 HTTP 响应:500 请求 {“操作”=>“读取子资源”、“地址”=> 未定义、“子类型”=>“部署”、“包含运行时”=> 真、“递归” => true } 响应内部服务器错误 { "outcome" => "failed", "rolled-back" => true }

我在 jdbc 存储的standalone-ha.xml 中的服务器配置如下:

        <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>

创建的表也如下:

名称


TABTYPE CLUSTERID


BIN$cLKr2H7+eQ3gU1J2QgonwQ==$0

桌子

SESS_counter_war

桌子

sess_counter_war

桌子

仅供参考,为了让我满意,我尝试更改standalone-ha.xml 中的前缀,这就是您可以看到两个表的原因。

如果我做错了什么,请指导我。

标签: redhatjboss-eap-7

解决方案


这是近一年后的一个相当晚的回复,但正如人们所说的“迟到总比没有好”:)

在最初遇到错误几天后,我成功地启动了应用程序。我意识到我的配置存在一些重大问题。基本上,我遇到了以下问题:

  1. 使用分布式缓存而不是无效缓存。
  2. 使用二进制存储而不是基于字符串的存储。
  3. 无效的列和数据类型。

请参阅原始帖子并在此处回答 - https://developer.jboss.org/thread/278374


推荐阅读