The reply I got from the Apache CXF users mailing list is that the XML Schema specification leaves this point up to the implementation and so is not considered a bug.
Thread here (the post is dated September 26th 2013, is on page 2 and I don't seem to be able to provide a link directly to that page). The relevant conclusion is here. I quote:
My thoughts on this:
1) According to the schema spec, if the schemaLocation hint isn't specified, it's up to the application to figure out how to resolve it if needed. Thus, I don't really consider this a "bug". We specifically just use the information provided and is part of the "compilation unit" (aka: wsdl).
2) Personally, I think it's pretty silly to NOT provide the schemaLocation and would STRONGLY STRONGLY recommend adding it. The only time I've ever seen it not specified is when importing schemas that are also embedded in the same wsdl (so there isn't a location).
When ever I see things like "up to the application" in specs, that, to me, is an interoperability nightmare. Just specify it.3) That all said, the root issue would be in XmlSchema's SchemaBuilder class. If there isn't a schemaLocation, it assumes it's part of the compilation unit it's working on and continues. Doesn't try to resolve anything. If you want to pursue a patch or something, it would be around 680 of SchemaBuilder.java. But even changing that MAY require more support from CXF's side to pre-populate the namespaces it already knows to avoid it going off to the internet for them. Not really sure.
So, it is confirmed that:
- the default
wsimport
tool that ships with Oracle Java 7 does use a catalog to resolve an import statement even without a schemaLocation attribute. - the Apache CXF 2.7.6
wsdl2java
tool does not use a catalog to resolve an import statement without a schemaLocation attribute - the Apache CXF community does not view this as a bug.