Hmm.. Is this in maven or other build system? It looks like its picking up some old jars someplace as the class: org.apache.cxf.tools.java2wsdl.processor.JavaToProcessor no longer even exists.
> Note that this is both in the IDEA integration with CXF and via the > command line. The JDK I'm using is 1.6.0.03. If using 2.1 snapshot, you may want to flip to 1.6.0_04. 03 includes the 2.0 JAXWS/JAXB API's which may cause issues with the 2.1 versions that CXF 2.1 requires. _04 includes the proper 2.1 versions and I have gone through and made sure CXF builds and runs with _04. Dan On Monday 25 February 2008, Phil Weighill-Smith wrote: > I've tried out the 2.1 snapshot available today and found that the API > has changed in some way in CXF so now trying to generate a WSDL from > Java code gives: > > Exception in thread "main" java.lang.NoSuchMethodError: > org.apache.cxf.tools.java2wsdl.processor.internal.ServiceBuilderFactor >y.newBuilder()Lorg/apache/cxf/service/ServiceBuilder; at > org.apache.cxf.tools.java2wsdl.processor.JavaToProcessor.getServiceBui >lder(JavaToProcessor.java:144) at > org.apache.cxf.tools.java2wsdl.processor.JavaToProcessor.process(JavaT >oProcessor.java:87) > > Note that this is both in the IDEA integration with CXF and via the > command line. The JDK I'm using is 1.6.0.03. > > Any suggestions? > > Phil :n. > > ----- Original Message ----- > From: "Daniel Kulp" <[EMAIL PROTECTED]> > To: cxf-user@incubator.apache.org > Cc: "Phil Weighill-Smith" <[EMAIL PROTECTED]> > Sent: 22 February 2008 17:26:59 o'clock (GMT) Europe/London > Subject: Re: Problem generating WSDL from Java API with CXF 2.0.3 > > On Friday 22 February 2008, Phil Weighill-Smith wrote: > > Dan, sorry it's been several weeks since you e-mailed this to me and > > I've not actioned it. Where do I find CXF's official JIRA app? > > https://issues.apache.org/jira/browse/CXF > > That said, the namespace issue in the WrapperClassGenerator should be > fixed with the latest 2.1 snapshots. I'll probably be doing new > snapshots again today since I've fixed a TON of bugs over the last > couple days. That MAY also fix the other issues you note below as it > will totally delegate to JAXB to generate the getUserResponse type in > the wsdl. Any chance you can try with the latest 2.1 snapshots (or > wait till tomorrow/monday and try the ones I'll deploy later today?) > > Dan > > > By the way, I have also hit a problem where the response parts are > > generated with incomplete result definitions. For example, if I have > > a method in my SEI like: > > > > > > @WebService(name = "UserModule", > > targetNamespace = > > "http://www.volantis.com/xmlns/2008/01/mss/user-module") > > @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, > > use = SOAPBinding.Use.LITERAL, > > parameterStyle = SOAPBinding.ParameterStyle.WRAPPED) > > public interface UserModule { > > User getUser(@WebParam(name="name") final String name); > > ... > > } > > > > > > where User is, for example, like this: > > > > > > @XmlJavaTypeAdapter(UserAdapter.class) > > public interface User { > > String getName(); > > String getPassword(); > > } > > > > > > with an implementation like: > > > > > > @XmlType(name = "User") > > public class UserImpl implements User { > > private String name; > > private String password; > > > > public void setName(final String name) { > > this.name = name; > > } > > > > public String getName() { > > return name; > > } > > > > public void setPassword(final String password) { > > this.password = password; > > } > > > > public String getPassword() { > > return password; > > } > > } > > > > > > and the adapter looks like: > > > > > > public final class UserAdapter extends > > XmlAdapter<UserImpl, User> { > > @Override > > public UserImpl marshal(final User user) throws Exception { > > return (UserImpl) user; > > } > > > > @Override > > public User unmarshal(final UserImpl user) throws Exception { > > return user; > > } > > } > > > > I get some WSDL like this: > > > > > > <wsdl:definitions name="UserModuleService" > > > > targetNamespace="http://com.volantis.openapi.mss.usermodule" > > xmlns:ns1="http://www.volantis.com/xmlns/2008/01/mss/user-module" > > xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" > > xmlns:tns="http://com.volantis.openapi.mss.usermodule" > > xmlns:xsd="http://www.w3.org/2001/XMLSchema" > > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> <wsdl:types> > > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" > > > > xmlns="http://www.volantis.com/xmlns/2008/01/mss/user-module" > > attributeFormDefault="unqualified" > > elementFormDefault="unqualified" > > > > targetNamespace="http://www.volantis.com/xmlns/2008/01/mss/user-modu > >le "> <xs:element name="getUser" type="getUser"/> > > <xs:complexType name="getUser"> > > <xs:sequence> > > <xs:element minOccurs="0" name="name" > > type="xs:string"/> > > </xs:sequence> > > </xs:complexType> > > <xs:element name="getUserResponse" > > type="getUserResponse"/> <xs:complexType name="getUserResponse"> > > <xs:sequence> > > <xs:element minOccurs="0" name="return"/> > > </xs:sequence> > > </xs:complexType> > > ... > > </xs:schema> > > <wsdl:types> > > ... > > <wsdl:message name="getUser"> > > <wsdl:part name="parameters" element="ns1:getUser"> > > </wsdl:part> > > </wsdl:message> > > ... > > <wsdl:message name="getUserResponse"> > > <wsdl:part name="parameters" element="ns1:getUserResponse"> > > </wsdl:part> > > </wsdl:message> > > ... > > <wsdl:portType name="UserModule"> > > <wsdl:operation name="getUser"> > > <wsdl:input name="getUser" message="ns1:getUser"> > > </wsdl:input> > > <wsdl:output name="getUserResponse" > > message="ns1:getUserResponse"> </wsdl:output> > > </wsdl:operation> > > ... > > </wsdl:portType> > > <wsdl:binding name="UserModuleServiceSoapBinding" > > type="ns1:UserModule"> <soap:binding style="document" > > > > transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation > > name="getUser"> > > <soap:operation soapAction="" style="document"/> > > <wsdl:input name="getUser"> > > <soap:body use="literal"/> > > </wsdl:input> > > <wsdl:output name="getUserResponse"> > > <soap:body use="literal"/> > > </wsdl:output> > > </wsdl:operation> > > ... > > </wsdl:binding> > > <wsdl:service name="UserModuleService"> > > <wsdl:port name="UserModulePort" > > binding="ns1:UserModuleServiceSoapBinding"> > > <soap:address location="http://localhost:9090/mss"/> > > </wsdl:port> > > </wsdl:service> > > </wsdl:definitions> > > > > > > > > > > As you can see, the (bolded) "return" element has no type, and I get > > no XSD element or type definition for the User implementation for > > some reason. Any ideas? > > > > Phil :n. > > > > On Fri, 2008-02-01 at 22:26 -0500, Daniel Kulp wrote: > > > This is definitely a bug and I see where the improper code is > > > found. > > > > > > Line 202 of WrapperClassGenerator specifically sets the namespace > > > to "" for the generated class. This needs to be updated to either > > > not output it or output the correct namespace. I'll need to > > > experiment a bit to figure out which. > > > > > > Can you log a JIRA (feel free to assign to me) so it gets tracked. > > > (I'm busy with other stuff for the next couple days). Better > > > yet, check out CXF from Svn, experiment a bit by editing those > > > lines, then attach a patch to that jira. :-) > > > > > > Dan > > > > > > On Thursday 31 January 2008, Phil Weighill-Smith wrote: > > > > Regarding target namespace and the elementFormDefault issues... > > > > > > > > Interestingly the package-info.java approach doesn't seem to > > > > work. Whilst this sets the default element form to qualified, > > > > each element is then generated with the form="unqualified" > > > > attribute set. D'oh! I guess I'll have to use the XmlElement > > > > approach. Will let you know what happens. > > > > > > > > I've also set the XmlSchema namespace as you have suggested, and > > > > have explicitly set the @WebService(targetNamespace) to the same > > > > value but I still get a WSDL targetNamespace derived from the > > > > package name. How do I override this behaviour? > > > > > > > > The package-info.java has: > > > > > > > > @javax.xml.bind.annotation.XmlSchema( > > > > namespace = > > > > "http://com.volantis.xmlns/2008/01/mss/user-module", > > > > elementFormDefault = > > > > javax.xml.bind.annotation.XmlNsForm.QUALIFIED) package > > > > com.volantis.openapi.mss.usermodule; > > > > > > > > and the SEI interface has: > > > > > > > > @WebService(name = "UserModule", > > > > targetNamespace = > > > > "http://com.volantis.xmlns/2008/01/mss/user-module") > > > > @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, > > > > use = SOAPBinding.Use.LITERAL, > > > > parameterStyle = > > > > SOAPBinding.ParameterStyle.WRAPPED) public interface UserModule > > > > { > > > > ... > > > > List<User> getSubscribers( > > > > @WebParam(name = "application") > > > > final String applicationID, > > > > @WebParam(name = "subscription") > > > > final String subscriptionID, > > > > @WebParam(name = "includeExtensionParameters") > > > > final boolean includeExtensionParameters, > > > > @WebParam(name = "includeSubscriptions") > > > > final boolean includeSubscriptions) throws > > > > PersistenceException; ... > > > > > > > > but the WSDL is generated with: > > > > > > > > <wsdl:definitions name="UserModuleService" > > > > > > > > targetNamespace="http://com.volantis.openapi.mss.usermodule" > > > > xmlns:ns1="http://com.volantis.xmlns/2008/01/mss/user-module" > > > > xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" > > > > xmlns:tns="http://com.volantis.openapi.mss.usermodule" > > > > xmlns:xsd="http://www.w3.org/2001/XMLSchema" > > > > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> <wsdl:types> > > > > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" > > > > > > > > xmlns:tns="http://com.volantis.xmlns/2008/01/mss/user-module" > > > > attributeFormDefault="unqualified" > > > > elementFormDefault="qualified" > > > > > > > > targetNamespace="http://com.volantis.xmlns/2008/01/mss/user-modu > > > >le "> ... > > > > <xs:complexType name="getSubscribersResponse"> > > > > <xs:sequence> > > > > <xs:element form="unqualified" > > > > maxOccurs="unbounded" minOccurs="0" name="return" > > > > type="xs:anyType"/> </xs:sequence> > > > > </xs:complexType> > > > > ... > > > > </xs:schema> > > > > </wsdl:types> > > > > > > > > <wsdl:message name="getSubscribersResponse"> > > > > <wsdl:part name="parameters" > > > > element="ns1:getSubscribersResponse"> </wsdl:part> > > > > </wsdl:message> > > > > ... > > > > > > > > What I want to see is: > > > > > > > > * the WSDL targetNamespace matching the ns1 URI > > > > * the elements generated with form "qualified" > > > > * the sequence returned by getSubscribersResponse using > > > > the generated schema type for User. > > > > > > > > Any suggestions? > > > > > > > > Phil :n( > > > > > > > > On Mon, 2008-01-28 at 10:31 -0500, Daniel Kulp wrote: > > > > > 2) Create a package-info.java class in the package containing > > > > > the beans. > > > > > It would look like: > > > > > > > > > > @javax.xml.bind.annotation.XmlSchema( > > > > > namespace = "http://the.namespace.to.use", > > > > > elementFormDefault = > > > > > javax.xml.bind.annotation.XmlNsForm.QUALIFIED) > > > > > package the package; -- J. Daniel Kulp Principal Engineer, IONA [EMAIL PROTECTED] http://www.dankulp.com/blog