Jean-Sebastien Delfino wrote:
Scott Kurz wrote:
Sebastien, I'm surprised the package names would be different. What is
the namespace you're using that isn't mapping to the same package in each
tool?
Just curious...
My app is an order processing app with the following:
WSDL service namespace:
http://sample/Order/Binding
WSDL Order portType namespace:
http://sample/Order
The CXF tool generates interface sample.order.Order
The JAXWS RI tool generates interface sample.order.binding.Order
I gave the same WSDL file (containing the WSDL service) to both tools.
One could argue that both are correct vs the JAX-WS spec as they
generate a correct package name from the namespace of 'the' WSDL
definition, but the funny thing is that they do not pick the same WSDL
definition... JAXWS-RI picks the input definition given to the tool and
CXF the definition that actually contains the portType... and the JAXWS
spec doesn't seem to state which one should be picked (at least I
couldn't find it).
IMHO the CXF behavior is better, but I've not read all 150 pages of the
JAX-WS spec so I may be missing something :)
>
From section 2.2 of the JAX-WS spec:
A wsdl:portType element is mapped to a Java interface in the package
mapped from the wsdl:definitions element (see section 2.1 for a
description of wsdl:definitions mapping).
Section 2.1 says:
A wsdl:definitions element and its associated targetNamespace
attribute is mapped to a Java package. JAXB[10] (see appendix D)
defines a standard mapping from a namespace URI to a Java package
name. By default, this algorithm is used to map the value of a
wsdl:definitions element’s targetNamespace attribute to a Java
package name.
} Conformance (Definitions mapping): In the absence of customizations,
the Java package name is mapped from the value of a wsdl:definitions
element’s targetNamespace attribute using the algorithm defined by
JAXB[10].
So IMO the Java package name that's used to map the portType should
be derived from the targetNamespace of the wsdl:definitions element.
What was this targetNamespace?
Simon