空序列不能作为变量 $attachment-mediatypes的值
我正在使用镜像 orbeon/orbeon-forms:2025.1-pe,并将MySQL服务器作为数据库。
orbeon.xml:
<Context path="/orbeon">
<Resource
name="jdbc/mysql"
driverClassName="com.mysql.cj.jdbc.Driver"
auth="Container"
type="javax.sql.DataSource"
initialSize="3"
maxActive="10"
maxIdle="10"
maxWait="30000"
poolPreparedStatements="true"
testOnBorrow="true"
validationQuery="select 1"
username="orbeon"
password="XXXXXX"
url="jdbc:mysql://mysql-instance:3306/orbeon"/>
</Context>
properties-prod.xml:
<properties xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:oxf="http://www.orbeon.com/oxf/processors">
<property as="xs:string" name="oxf.crypto.password" value="change-password"/>
<property as="xs:string" name="oxf.fr.persistence.provider.*.*.*" value="mysql"/>
<property as="xs:boolean" name="oxf.fr.persistence.sqlite.active" value="false"/>
</properties>
DDL I have used is here.
我使用的DDL在这里:here。
My Dockerfile
FROM orbeon/orbeon-forms:2025.1-pe
USER root
RUN apt-get update && apt-get install -y wget
RUN mkdir -p /tmp/orbeon
WORKDIR /tmp/orbeon
# JDBC driver for MySQL
RUN wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-j-9.0.0.tar.gz \
&& tar xvfz mysql-connector-j-9.0.0.tar.gz \
&& mv mysql-connector-j-9.0.0/mysql-connector-j-9.0.0.jar /usr/local/tomcat/lib/
# Remove SQLite database and JDBC driver (optional)
RUN rm -f /usr/local/tomcat/webapps/orbeon/WEB-INF/orbeon-demo.sqlite \
&& rm -f /usr/local/tomcat/webapps/orbeon/WEB-INF/lib/sqlite-jdbc-*.jar
# Remove PostgreSQL JDBC driver (optional)
RUN rm -f /usr/local/tomcat/lib/postgresql-*.jar
RUN rm -rf /var/lib/apt/lists/*
# Cleanup
RUN rm -rf /tmp/orbeon
COPY license.xml /usr/local/tomcat/webapps/orbeon/WEB-INF/resources/config/
COPY properties-prod.xml /usr/local/tomcat/webapps/orbeon/WEB-INF/resources/config/
COPY orbeon.xml /usr/local/tomcat/conf/Catalina/localhost/
模式、表等都已经存在于MySQL数据库中,容器中的数据库也已连接。但在运行orbeon容器时,我却遇到了这个错误:
2026-03-10T22:04:39,083 - 86 - INFO lifecycle - event: {"request": "2", "session": "A550BDA573EE2E7D2E930F13582E1A81", "source": "service", "message": "start: handle"}
2026-03-10T22:04:39,083 - 86 - INFO ProcessorService - Start request: GET /orbeon/fr/
2026-03-10T22:04:39,843 - 86 - ERROR XSLTTransformer - Error at line 1097 of oxf:/apps/fr/components/components.xsl:
An empty sequence is not allowed as the value of variable $attachment-mediatypes
2026-03-10T22:04:39,853 - 86 - ERROR PageFlowControllerProcessor - error caught {controller: "oxf:/apps/fr/page-flow.xml", method: "GET", path: "/fr/"}
2026-03-10T22:04:39,876 - 86 - ERROR PageFlowControllerProcessor -
+----------------------------------------------------------------------------------------------------------------------+
|An Error has Occurred |
|----------------------------------------------------------------------------------------------------------------------|
|An empty sequence is not allowed as the value of variable $attachment-mediatypes |
|----------------------------------------------------------------------------------------------------------------------|
|Application Call Stack |
|----------------------------------------------------------------------------------------------------------------------|
|oxf:/apps/fr/components/components.xsl | |1097|
|oxf:/apps/fr/page-flow.xml |reading page view data output | 260|
|······················································································································|
|element=<page id="fr-landing" path="/fr/" model="landing/landing.xhtml" view="html-view.xpl" default-submission="reque|
|st-parameters.xml">[...]</page> |
|page id=fr-landing |
|view =html-view.xpl |
|----------------------------------------------------------------------------------------------------------------------|
|oxf:/apps/fr/html-view.xpl |reading processor output | 34|
|······················································································································|
|element=<p:output name="data" ref="data"/> |
|name =data |
|ref =data |
|----------------------------------------------------------------------------------------------------------------------|
|oxf:/apps/fr/unroll-form.xpl |reading processor output | 107|
|······················································································································|
|element=<p:output name="data" ref="data"/> |
|name =data |
|ref =data |
|----------------------------------------------------------------------------------------------------------------------|
|oxf:/apps/fr/unroll-form.xpl |reading processor output | 95|
|······················································································································|
|element=<p:output name="data" id="after-components"/> |
|name =data |
|id =after-components |
|----------------------------------------------------------------------------------------------------------------------|
|oxf:/apps/fr/components/components.xsl |executing XSLT transformation |1097|
|----------------------------------------------------------------------------------------------------------------------|
|Exception: org.orbeon.saxon.trans.XPathException |
|----------------------------------------------------------------------------------------------------------------------|
|org.orbeon.saxon.expr.CardinalityCheckingIterator |typeError | | 120|
|org.orbeon.saxon.expr.CardinalityCheckingIterator |<init> | | 47|
|org.orbeon.saxon.expr.CardinalityChecker |iterate | | 171|
|org.orbeon.saxon.expr.ExpressionTool |evaluate | | 308|
|org.orbeon.saxon.instruct.GlobalVariable |getSelectValue | | 209|
|org.orbeon.saxon.instruct.GlobalVariable |evaluateVariable | | 233|
如何解决?
解决方案
问题的原因在于你的属性文件被命名为 properties-prod.xml,它覆盖了一个关键的内部文件。该内部文件包含了若干属性文件,其中包括 properties-form-runner.xml,在其中声明了用于 $attachment-mediatypes 的属性。这就是你看到这个错误的原因。
我建议如下:
- 将
properties-prod.xml重命名为properties-local.xml。 - 将你的
Dockerfile更新为使用COPY properties-local.xml,而不是COPY properties-prod.xml。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。