gpt4 book ai didi

postgresql - Moqui 1.4.1 Postgresql配置

转载 作者:行者123 更新时间:2023-11-29 13:57:45 25 4
gpt4 key购买 nike

我正在尝试启动并运行Moqui 1.4.1,但使用Postgres作为数据库平台。这是平台的详细信息。

  • Ubuntu 12.04
  • 使用JDBC驱动程序postgresql-9.3-1102.jdbc41.jar的Postgres 9.4(位于/ runtime / lib。希望在正确的位置)


  • 首先,我在任何地方都找不到MoquiDefaultConf.xml,因此我认为这仅适用于开发吗?

    在运行时/ conf下,我有MoquiDevConf.xml,MoquiDevTestConf.xml,MoquiProductionConf.xml,MoquiStagingConf.xml。在所有这四个中,我添加了以下实体外观条目。
        <entity-facade crypt-pass="MoquiDefaultPassword:CHANGEME">
    <!--
    <datasource group-name="transactional" database-conf-name="postgresql" schema-name="">
    <inline-jdbc jdbc-uri="jdbc:postgresql://127.0.0.1:5432/MoquiDEFAULT?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8" jdbc-username="moqui" jdbc-password="moqui" pool-minsize="2" pool-maxsize="50"/>
    </datasource>
    -->

    <datasource group-name="transactional" database-conf-name="postgres" schema-name="public">
    <!--
    <inline-jdbc pool-minsize="5" pool-maxsize="50">
    <xa-properties user="moqui" password="moqui" serverName="localhost" portNumber="5432"
    databaseName="MoquiDEFAULT"/>
    </inline-jdbc>
    -->

    <inline-jdbc jdbc-uri="jdbc:postgresql://127.0.0.1:5432/MoquiDEFAULT"
    jdbc-username="moqui" jdbc-password="moqui"
    pool-minsize="2" pool-maxsize="50"/>
    </datasource>
    </entity-facade>

    <!-- end snippet -->

    问题:

    当我运行gradle负载时,负载目标
  • 创建了一堆不知道的derby数据库,因为现在已经为Postgres配置了它。
  • 枚举类型枚举在Postgres中创建。

  • 然后,该过程陷入了困境。

    这是该点的输出。
        > --- 12304 [main] INFO org.moqui.impl.entity.EntityDbMeta 
    Created table [ENUMERATION_TYPE] for entity [moqui.basic.EnumerationType]
    > --- 12788 [main] INFO org.moqui.impl.entity.EntityDbMeta
    Created table [ENUMERATION] for entity [moqui.basic.Enumeration]
    > --- 611953 [-task-scheduler] WARN Bitronix.tm.BitronixTransaction
    transaction timed out: a Bitronix Transaction with GTRID [3132372E302E312E3100000000002E270D00000001], status=MARKED_ROLLBACK, 1 resource(s) enlisted (started Thu Jan 01 02:50:24 SAST 1970)

    因此,Bitronix对某些事情不满意。

    如果我终止加载并重新启动,则它将创建下一个表 geo ,然后再次卡住,尽管这次,它不显示Bitronix警告。
        > --- 12268    [main] INFO org.moqui.impl.entity.EntityDbMeta 
    Created table [GEO] for entity [moqui.basic.Geo]

    帮助表示赞赏。

    用于回答的其他信息:

    我下载 this是为了评估功能,因此我只想运行该应用程序而不对其进行扩展。正如您所指出的那样,它仅包含预构建的WAR文件。但是,如果浏览WAR文件的内容,则找不到MoquiDefaultConf.xml文件。实际上,整个WAR文件中唯一的XML文件是web.xml。

    发现这一点之后,并阅读本书中有关设置的章节后,我用MoquiDefaultConf.xml进行了谷歌搜索,并在github上找到了该文件。然后,我从中复制出数据源元素,然后将其简单地粘贴到所有列出的Moqui * Conf.xml的实体外观中,以确保将其拾取....最终这样做,但出现了停顿的问题。我尝试了两个内联jdbc选项;一次带有xa-properties标记,一次带有xa-properties标记。

    抱歉。我来自Microsoft背景,所以这对我来说有点陌生,但在我的辩护中,我在技术上能够通过像这样摸索来启动OFBiz。

    更新:

    好。进展。

    原来我在用postgresql-9.3-1102.jdbc4.jar驱动程序运行Postgres 9.1而不是9.4(糟糕的Linux noob)。不知道这是否是导致停止的原因,但是我使用postgresql-9.3-1102.jdbc41.jar驱动程序升级到了Postgres 9.4,并且停止仍在发生。

    大卫,您正确地指出了缺少的启动添加缺失和运行时添加缺失属性。发生这种情况的原因是因为我最初曾试图将等效于OFBiz的数据源元素拼凑在一起,当我最终在线上找到MoquiDefaultConf.xml时,我仅将inline-jdbc元素复制到了我从OFBiz使用的数据源元素中,但并没有这样做。 t复制整个数据源元素。愚蠢。无论如何,在仅将数据源元素添加到MoquiDevConf.xml并“渐变加载”后,在Postgres中创建了91个表,因此构建成功完成了。

    在db文件夹的derby文件夹中,创建了一个名为MoquiDEFAULT的derby数据库 仍为。我可以确认该Web应用程序正在与Postgres对话,因为我在“示例”网格中创建了一个条目,并且该条目出现在Postgres的示例表中。我对内部知识了解不足,无法确定查询是否在derby数据库上重复。

    最后,在使用消除方法之后,我确定该构建使用的是MoquiDevConfig.xml,而不是MoquiProductionConf.xml。即当我仅将数据源放在MoquiProductionConf.xml实体外观元素中时,它没有任何作用,并且仅在derby中创建表(很好...超过100个.dat文件),而在Postgres中都不创建表。鉴于MoquiInit.properties仅引用MoquiProductionConf.xml,这令人困惑。我可以确认,使用MoquiDevConfig.xml进行构建比生成MoquiProductionConf.xml少生成约20个.dat文件。我对Gradle构建文件了解不足,无法更改。

    MoquiDevConf.xml
    <?xml version="1.0" encoding="UTF-8" ?>

    <tools enable-elasticsearch="true" enable-camel="false"/>

    <cache-list>
    <!-- Development Mode - don't use these for production, load testing, etc.
    Cleared by default every 20 seconds from when loaded into cache. -->
    <cache name="entity.definition" expire-time-idle="30"/>
    <!-- longer timeout since this basically looks through all files to check for new or moved entity defs -->
    <cache name="entity.location" expire-time-idle="300"/>
    <cache name="entity.data.feed.info" expire-time-idle="30"/>

    <cache name="service.location" expire-time-idle="5"/>
    <cache name="service.java.class" expire-time-idle="5"/>

    <cache name="kie.component.releaseId" expire-time-idle="5"/>

    <cache name="screen.location" expire-time-idle="5"/>
    <cache name="screen.template.mode" expire-time-idle="5"/>
    <cache name="screen.template.location" expire-time-idle="5"/>

    <cache name="resource.xml-actions.location" expire-time-idle="5"/>
    <cache name="resource.groovy.location" expire-time-idle="5"/>
    <!-- longer timeout because these are cached by the expression text itself, so changed text is a new entry -->
    <cache name="resource.groovy.expression" expire-time-idle="600"/>
    <cache name="resource.javascript.location" expire-time-idle="5"/>

    <cache name="resource.ftl.location" expire-time-idle="5"/>
    <cache name="resource.gstring.location" expire-time-idle="5"/>
    <cache name="resource.wiki.location" expire-time-idle="5"/>
    <cache name="resource.markdown.location" expire-time-idle="5"/>
    <cache name="resource.text.location" expire-time-idle="5"/>
    <cache name="resource.reference.location" expire-time-idle="5"/>

    <cache name="l10n.message" expire-time-idle="600"/>
    </cache-list>

    <server-stats stats-skip-condition="ec.web?.request?.pathInfo?.startsWith('/rpc') || ec.web?.request?.pathInfo?.startsWith('/status')">
    <!-- For development, track everything! It'll run slow through... -->
    <artifact-stats type="screen" persist-bin="true" persist-hit="true"/>
    <artifact-stats type="screen-content" persist-bin="true" persist-hit="true"/>
    <artifact-stats type="transition" persist-bin="true" persist-hit="true"/>
    <artifact-stats type="service" persist-bin="true" persist-hit="true"/>
    <artifact-stats type="service" sub-type="entity-auto" persist-bin="true" persist-hit="false"/>
    <artifact-stats type="service" sub-type="entity-implicit" persist-bin="true" persist-hit="false"/>
    <artifact-stats type="entity" persist-bin="true"/>
    </server-stats>

    <webapp-list>
    <webapp name="webroot" http-port="8080" https-enabled="false">
    <root-screen host=".*" location="component://webroot/screen/webroot.xml"/>
    </webapp>
    </webapp-list>

    <screen-facade boundary-comments="true">
    <!-- The default conf file has a macro location defined for html already, but this is an example of how to
    refer to a file to override the default macros. -->
    <screen-text-output type="html" mime-type="text/html"
    macro-template-location="template/screen-macro/ScreenHtmlMacros.ftl"/>
    </screen-facade>

    <entity-facade crypt-pass="MoquiDefaultPassword:CHANGEME">
    <datasource group-name="transactional" database-conf-name="postgres" schema-name="public" startup-add-missing="true" runtime-add-missing="false">
    <inline-jdbc pool-minsize="5" pool-maxsize="50">
    <xa-properties user="moqui" password="moqui" serverName="localhost" portNumber="5432"
    databaseName="MoquiDEFAULT"/>
    </inline-jdbc>
    <!-- <inline-jdbc jdbc-uri="jdbc:postgresql://127.0.0.1/MoquiDEFAULT"
    jdbc-username="moqui" jdbc-password="moqui" pool-minsize="2" pool-maxsize="50"/> -->
    </datasource>
    </entity-facade>

    <repository-list>
    <!-- <repository name="main" location="http://localhost:8081/rmi" type="rmi" workspace="default"
    username="admin" password="admin"/> -->
    </repository-list>
    <component-list>
    <!-- This loads the tools component over top of the default one, which will result in a warning but works
    fine. Use something like this to refer to components in a JCR repository. -->
    <component name="tools" location="component/tools"/>
    </component-list>

    最佳答案

    如果您下载了二进制发行版,则MoquiDefaultConf.xml文件位于预构建的可执行war文件中,尽管您可以在源代码库中看到它:

    https://github.com/moqui/moqui/blob/master/framework/src/main/resources/MoquiDefaultConf.xml

    在此处,您将看到Postgres的示例配置:

        <datasource group-name="transactional" database-conf-name="postgres" schema-name="public" startup-add-missing="true" runtime-add-missing="false">
    <inline-jdbc pool-minsize="5" pool-maxsize="50">
    <xa-properties user="moqui" password="moqui" serverName="localhost" portNumber="5432"
    databaseName="MoquiDEFAULT"/>
    </inline-jdbc>
    <!-- <inline-jdbc jdbc-uri="jdbc:postgresql://127.0.0.1/MoquiDEFAULT"
    jdbc-username="moqui" jdbc-password="moqui" pool-minsize="2" pool-maxsize="50"/> -->
    </datasource>

    请特别注意数据源元素上的以下两个属性:startup-add-missing =“true” runtime-add-missing =“false”。 Postgres不支持动态创建表,因此必须全部在系统运行之前创建它们,而不是默认模式,即仅在需要时(第一次写入完成时)创建表。

    MoquiDefaultConf.xml文件还具有“tenantcommon”实体组的定义,将其指向Derby:
        <datasource group-name="tenantcommon" database-conf-name="derby" schema-name="MOQUI">
    <inline-jdbc pool-minsize="2" pool-maxsize="10">
    <xa-properties databaseName="${moqui.runtime}/db/derby/MoquiDEFAULT" createDatabase="create"/>
    </inline-jdbc>
    </datasource>

    要将这些实体也放置在Postgres中,您需要向运行时使用的Moqui Conf XML文件添加类似的定义。

    关于postgresql - Moqui 1.4.1 Postgresql配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28115977/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com