Orbeon Forms Postgres 数据库连接
Orbeon Forms Postgres DB connection
我试图在 Postgres DB 中保存 Orbeon 表单。我创建了 数据库持久层 但表单仍然存储在默认的 eXist DB 中。我在 tomcat7 的 "Server.xml" 中创建了上下文(数据库源),并且在 Orbeon4.8 (orbeon/src/resources/config/properties-local.xml) 中创建了 "properties-local.xml" 文件。我的参考是 this.
谁能帮助我如何在 Postgres DB 中保存 orbeon 表单?
我不确定你说的 "created context in the 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&characterEncoding=UTF8&socketTimeout=30&tcpKeepAlive=true"/>
</GlobalNamingResources>
然后在 tomcat 的 context.xml
中,您应该有一个数据源的资源链接:
<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_resources\properties-local.xml
。参见 Storing configurations outside of the Orbeon Forms war file。
此外,请确保您已执行 Orbeon Forms setup。这是一般的数据库配置,不特定于 postgresql 或任何其他数据库实现。他们给出的示例适用于 oracle
但您可以将 oracle
替换为 postgresql
.
配置数据库资源后,您可以通过在属性中添加类似这样的内容来告诉 Orbeon 使用它-local.xml:
<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"/>
我试图在 Postgres DB 中保存 Orbeon 表单。我创建了 数据库持久层 但表单仍然存储在默认的 eXist DB 中。我在 tomcat7 的 "Server.xml" 中创建了上下文(数据库源),并且在 Orbeon4.8 (orbeon/src/resources/config/properties-local.xml) 中创建了 "properties-local.xml" 文件。我的参考是 this.
谁能帮助我如何在 Postgres DB 中保存 orbeon 表单?
我不确定你说的 "created context in the 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&characterEncoding=UTF8&socketTimeout=30&tcpKeepAlive=true"/>
</GlobalNamingResources>
然后在 tomcat 的 context.xml
中,您应该有一个数据源的资源链接:
<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_resources\properties-local.xml
。参见 Storing configurations outside of the Orbeon Forms war file。
此外,请确保您已执行 Orbeon Forms setup。这是一般的数据库配置,不特定于 postgresql 或任何其他数据库实现。他们给出的示例适用于 oracle
但您可以将 oracle
替换为 postgresql
.
配置数据库资源后,您可以通过在属性中添加类似这样的内容来告诉 Orbeon 使用它-local.xml:
<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"/>