I'm trying to install ORDS with Tomcat in a container deployment to OpenShift but getting an error about the ords.war file being corrupt.
ORDS version: 24.4.0.345.1601.
Tomcat version: 9.0.105.
Java version: openjdk 21.0.7 2025-04-15 LTS.
These versions appear compatible, according to the installation checklist, although Tomcat images are only built with Temurin or Corretto Java and this has not been a problem with previous versions of ORDS (<22). https://docs.oracle.com/en/database/oracle/oracle-rest-data-services/24.4/ordig/installing-REST-data-services.html
Truncated Dockerfile, to show the commands causing the error:
# ords:24.4.0.345.1601 contains the contents of ords-24.4.0.345.1601.zip
FROM ords:24.4.0.345.1601 AS ords-builder
FROM tomcat:9.0.105-jdk21
#
# SECTION REMOVED
#
COPY --from=ords-builder /ords /u01/ords
RUN chgrp -R 0 /u01/ && \
chmod -R g=u /u01/ && \
chmod -R ug=rwx /u01/ords/bin/ && \
chmod -R ug=rwx /u01/ords/ords.war
RUN ls -l /u01/ords/ords.war
RUN /u01/ords/bin/ords --verbose --config /u01/ords_conf config set jdbc.InitialLimit 10 && \
/u01/ords/bin/ords --verbose --config /u01/ords_conf config set jdbc.MaxLimit 20 && \
/u01/ords/bin/ords --verbose --config /u01/ords_conf install \
--admin-user ${DBA_USER_NAME} \
--db-hostname ${DB_HOSTNAME} \
--db-port= {DB_PORT} \
--db-servicename= {DB_SERVICENAME} \
--feature-sdw true \
--feature-rest-enabled-sql true \
--feature-db-api true \
--gateway-mode proxied \
--gateway-user ${APEX_PUBLIC_USER_NAME} \
--proxy-user
--password-stdin <<EOF
${DBA_PASSWORD}
${APEX_PUBLIC_USER_PASSWORD}
EOF
RUN /u01/ords/bin/ords --verbose --config /u01/ords_conf war $CATALINA_HOME/webapps/ords.war
Truncated output:
STEP 18/26: RUN ls -l /u01/ords/ords.war
-rwxrwxr--. 1 root root 32505856 Jun 3 15:24 ords.war
STEP 19/26: RUN /u01/ords/bin/ords --verbose --config /u01/ords_conf config set jdbc.InitialLimit 10 && /u01/ords/bin/ords --verbose --config /u01/ords_conf config set jdbc.MaxLimit 20 && /u01/ords/bin/ords --verbose --config /u01/ords_conf install --admin-user ${DBA_USER_NAME} --db-hostname ${DB_HOSTNAME} --db-port= {DB_PORT} --db-servicename= {DB_SERVICENAME} --feature-sdw true --feature-rest-enabled-sql true --feature-db-api true --gateway-mode proxied --gateway-user ${APEX_PUBLIC_USER_NAME} --proxy-user --password-stdin <<EOF
${DBA_PASSWORD}
${APEX_PUBLIC_USER_PASSWORD}
EOF
Error: Invalid or corrupt jarfile /u01/ords/ords.war
What does that even mean? I can open the ords.war file in 7-Zip, so it does not appear to be corrupt.
ORDS 24.4 was downloaded from https://www.oracle.com/technologies/appdev/rest-data-services-downloads-244.html
I can see there is a My Oracle Support article that covers this error for ORDS 24 but or team is not associated with a support identifier to read it: https://support.oracle.com/knowledge/Middleware/3063870_1.html.
The --verbose flag doesn't seem to do anything? How else can we debug this?
Thanks.