Orbeon Forms Postgres数据库连接



我试图将Orbeon表单保存在Postgres DB中。我创建了数据库持久层,但表单仍然存储在默认的eXist DB中。我已经在tomcat7的"Server.xml"中创建了上下文(数据库源(,并在Orbeon4.8(orbeon/src/resources/config/properties local.xml(中创建了"properties local.xml"文件。我的参考是这样的。

有人帮我如何在PostgresDB中保存orbeon表单?

一旦配置了数据库资源,您可以通过在您的properties-local.xml中添加这样的内容来告诉Orbeon使用它:

<property as="xs:string"  name="oxf.fr.persistence.provider.*.*.*" value="postgresql"/>

您可以在properties-form-runner.xml.中看到Orbeon开箱即用接受的资源名称的默认配置

Exist仍将用于示例表单。但你可以用禁用它

<property as="xs:boolean" name="oxf.fr.persistence.exist.active" value="false"/>

如果您需要用默认名称以外的名称定义资源(例如postgresql(,则需要提供如下所示的更多信息(记住用您的资源名称替换所有出现的pg_other_name(。

<property as="xs:string"  name="oxf.fr.persistence.provider.*.*.*" value="pg_other_name"/>
<property as="xs:anyURI"  name="oxf.fr.persistence.pg_other_name.uri" value="/fr/service/postgresql"/>
<property as="xs:string"  name="oxf.fr.persistence.pg_other_name.datasource" value="pg_other_name"/>
<property as="xs:boolean" name="oxf.fr.persistence.pg_other_name.create-flat-view" value="true"/>
<property as="xs:boolean" name="oxf.fr.persistence.pg_other_name.autosave" value="true"/>
<property as="xs:boolean" name="oxf.fr.persistence.pg_other_name.permissions" value="true"/>
<property as="xs:boolean" name="oxf.fr.persistence.pg_other_name.versioning" value="true"/>

我不知道你说的"在Server.xml中创建上下文"是什么意思。

在tomcat的server.xml中,应该定义一个数据源。例如:

<GlobalNamingResources>
    <Resource
        name="jdbc/postgresql"
        auth="Container"
        type="javax.sql.DataSource"
        initialSize="3"
        maxActive="10"
        maxIdle="20"
        maxWait="30000"
        driverClassName="org.postgresql.Driver"
        validationQuery="select 1"
        testOnBorrow="true"
        poolPreparedStatements="true"
        username="orbeon"
        password="orbeon"
        url="jdbc:postgresql://server:5432/database?useUnicode=true&amp;characterEncoding=UTF8&amp;socketTimeout=30&amp;tcpKeepAlive=true"/>
</GlobalNamingResources>

然后,在tomcat的context.xml中,应该有一个用于数据源的ResourceLink:

<ResourceLink global="jdbc/postgresql" name="jdbc/postgresql" type="javax.sql.DataSource"/>

properties-local.xml应该在webapps/orbeon/WEB-INF/resources/config中,或者在tomcat的context.xml中定义的外部目录中,例如:

<Parameter name="oxf.resources.priority.0" override="false" value="org.orbeon.oxf.resources.FilesystemResourceManagerFactory"/>
<Parameter name="oxf.resources.priority.0.oxf.resources.filesystem.sandbox-directory" override="false" value="C:/orbeon_resources"/>

在这种情况下,properties-local.xml应该在这里:C:orbeon_resourcesproperties-local.xml。请参阅在Orbeon Forms war文件之外存储配置。

此外,请确保您已经执行了Orbeon Forms设置。这是一般的数据库配置,不是postgresql或任何其他数据库实现所特有的。他们给出的例子是针对oracle的,但您可以将oracle替换为postgresql

最新更新