Orbeon Forms配置SQL Server报错,Tomcat启动失败求助
一、Orbeon数据库配置错误
错误日志
2024-07-01T18:53:45,482 ERROR relational - Data source
sqlitenot configured
2024-07-01T18:53:45,484 ERROR XFormsServer - The following Orbeon Forms configurations are incomplete:
The database configuration is missing or incomplete.
配置冲突分析
你同时混用了容器管理数据源(orbeon.xml+web.xml的jdbc/sqlserver配置)和直接JDBC配置(properties-local.xml里的oxf.fr.persistence.sqlserver.*参数),两种配置方式冲突,导致Orbeon无法正确识别SQL Server数据源,反而默认查找SQLite配置。
修复方案
方案1:使用容器管理数据源(生产环境推荐)
- 修改
properties-local.xml,移除直接JDBC参数,添加容器数据源的JNDI引用:
<properties> <property as="xs:string" name="oxf.fr.persistence.provider" value="sqlserver"/> <!-- 指定Tomcat中配置的数据源JNDI名称 --> <property as="xs:string" name="oxf.fr.persistence.sqlserver.datasource" value="jdbc/sqlserver"/> </properties>
- 删除
orbeon.properties中的oxf.fr.persistence.provider=sqlserver(properties-local.xml优先级更高,重复配置易引发冲突) - 确认
orbeon.xml的Resource配置与web.xml的res-ref-name完全一致(均为jdbc/sqlserver)
方案2:直接使用JDBC配置(测试场景可选)
- 删除
orbeon.xml中的<Resource>配置,以及web.xml中的<resource-ref>配置 - 补全
properties-local.xml的JDBC URL参数,添加SSL信任配置(避免连接失败):
<property as="xs:string" name="oxf.fr.persistence.sqlserver.url" value="jdbc:sqlserver://192.168.2.235;databaseName=OrbeonDB;trustServerCertificate=true"/>
- 移除Orbeon
WEB-INF/lib下的JDBC驱动,只保留Tomcatlib目录中的驱动(避免类加载冲突)
二、Tomcat启动故障(tomcat-users.xml格式错误)
错误日志
01-Jul-2024 23:24:04.429 SEVERE [Catalina-utility-2] org.apache.catalina.users.MemoryUserDatabase.backgroundProcess Error reloading memory user database [UserDatabase] from updated source [file:/C:/Program%20Files/Apache%20Software%20Foundation/Tomcat%209.0/conf/tomcat-users.xml]
org.xml.sax.SAXParseException; lineNumber: 11; columnNumber: 2; The markup in the document following the root element must be well-formed.
修复步骤
- 打开Tomcat
conf/tomcat-users.xml文件,定位到第11行 - 检查XML格式问题:
- 确保文件只有一个根元素(必须是
<tomcat-users>) - 排查是否存在未闭合的标签、多余字符或标签嵌套错误
- 确认根元素外没有任何额外内容(比如注释或标签)
- 确保文件只有一个根元素(必须是
- 修复后保存文件,重启Tomcat
额外验证项
- 确认SQL Server服务已启动,1433端口对外开放
- 用数据库客户端测试
orbeon_user对OrbeonDB的读写权限 - 清理Tomcat的
work和temp目录,避免旧配置缓存干扰
内容的提问来源于stack exchange,提问作者Georgiana Iuliana

