Thoughts on JAX RS (no, really) - microbean/microbean-settings GitHub Wiki
It just occurred to me that the matching algorithm that JAX-RS uses in section 3.7.2 is, if you squint and look at it sideways, a way of imperfectly selecting objects that more or less "match" a given demand. I need to sit with this a bit, but I think I'm on the right track.
If MIME types are seen as Java types, and all the other stuff is qualifiers….
HTTP has the notion of a 404 Not Found error, a 503 Service Unavailable error and a 410 Gone error (among others, obviously). You get a 404 when you thought there was a value there, but at the moment (or maybe for all time) there is not. You get a 503 when you thought there was a value there, and maybe there is, but it can't be served to you temporarily. You get a 410 Gone error when the thing you were trying to get really truly permanently doesn't exist.
If you "take the web out" but keep the semantics: a configuration system is an HTTP system where the client is asking for particular types (like MIME types) indexed under a particular path, and can receive responses from the "server" ranging from "here you go" to "nope, never had that and never will" to "well I don't have what you want exactly but here's something close" and so on and so on. All the caching issues are the same. The fact that the "transport" is local Java calls is basically immaterial.