The system property fcrepo.jms.baseUrl may be defined in order to override the URIs that are used by messages emitted from the repository. This is useful, for example, when URIs used by backend infrastructure are different from URIs used by external, user-facing services.
By default, the fcrepo.jms.baseUrl is equal to the incoming request's base URL.
The URI provided by fcrepo.jms.baseUrl must be an http(s) URL, but more importantly the implementation recognizes the URI as a template. This allows an administrator to override some or all of the request URL as local needs dictate. Example values for fcrepo.jms.baseUrl include:
However, there is a bug in Fedora whereby a fcrepo.jms.baseUrl with no port (e.g. http://external.org/fcrepo/rest) cannot be used to override a request url that contains a port (e.g. http://internal.org:8080/fcrepo/rest/foo). When fcrepo.jms.baseUrl is set equal to http://external.org/fcrepo/rest, the expectation is that repository messages for http://internal.org:8080/fcrepo/rest/foo will be emitted as http://external.org/fcrepo/rest/foo (no port), but currently are emitted as http://external.org:8080/fcrepo/rest/foo (with a port).