启用基于jdbc的会话持久性后,应用程序无法加载

时间:2018-07-14 08:20:18

标签: redhat jboss-eap-7

我正在使用JBoss EAP 7.1发行版进行POC,其中我启用了基于数据库的会话持久性,并且已经使用默认的缓存管理器持久性进行了测试,并且效果很好,但是某种程度上它不会在数据库模式中存储任何会话数据,但是,该表是在服务器启动时创建的(我可以看到),为此,我从Redhat知识库中提供的示例counter.war开始。我正在使用Oracle 12cR1数据库。

还有一件事,当我运行CLI命令读取资源时,我也无法从控制台看到该应用程序。当我尝试在“部署”下查看部署时,它很抱怨

无法加载部署

意外的HTTP响应:500请求{“操作” =>“ read-children-resources”,“地址” =>未定义,“ child-type” =>“部署”,“ include-runtime” => true, “ recursive” => true}响应内部服务器错误{“ outcome” =>“ failed”,“ rolled-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集群


BIN $ cLKr2H7 + eQ3gU1J2QgonwQ == $ 0

SESS_counter_war

sess_counter_war

仅供参考,为了让我满意,我尝试通过更改standalone-ha.xml中的前缀,因此才可以看到两个表。

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

2 个答案:

答案 0 :(得分:1)

这是将近一年之后的回复,但是却被人说“迟到总比不到好”:)

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

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

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

答案 1 :(得分:0)

在EAP 7.1中,您应该使用string-keyed-jdbc-store配置会话持久性,而不要使用此版本中不推荐使用的binary-keyed-jdbc-store