When you run the java2wsdl, add the -s <source-dir> and -classdir <dir> options. This will cause it to generate wrapper types for the messages that the validator can use.
Dan On Thursday 17 January 2008, howesld wrote: > Hi, > I'm doing java to wsdl using cxf 2.0.3 and jaxb 2.0 on Java 5, running > on Tomcat and I have turned on schema validation. I would like to use > document/literal/wrapped, but when I do I get the following error: > > Unmarshalling Error: cvc-elt.1: Cannot find the declaration of element > 'theInt'. > > Here's my interface and class: > > @WebService(targetNamespace="http://test.org/") > public interface IalWebServiceTest { > public void testInt(@WebParam(name="theInt")int myInt) throws > RuntimeException; > } > > @WebService(targetNamespace="http://test.org/") > public class WebServiceTestImpl implements IalWebServiceTest { > public void testInt(int myInt){ > System.out.println("myInt = " + myInt); > } > } > > And my endpoint is configured using spring: > > <beans xmlns="http://www.springframework.org/schema/beans" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xmlns:tx="http://www.springframework.org/schema/tx" > xmlns:aop="http://www.springframework.org/schema/aop" > xmlns:jaxws="http://cxf.apache.org/jaxws" > xsi:schemaLocation=" > http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans.xsd > http://www.springframework.org/schema/tx > http://www.springframework.org/schema/tx/spring-tx-2.0.xsd > http://www.springframework.org/schema/aop > http://www.springframework.org/schema/aop/spring-aop-2.0.xsd > http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> > > <import resource="classpath:META-INF/cxf/cxf.xml"/> > <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/> > <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/> > > <tx:annotation-driven transaction-manager="transactionManager"/> > > <bean id="ialImpl" > class="test.provider.WebServiceTestImpl"> > </bean> > > <jaxws:endpoint > id="ial" > address="/se" > implementor="#ialImpl"> > <jaxws:properties> > <entry key="schema-validation-enabled" value="true" /> > </jaxws:properties> > </jaxws:endpoint> > </beans> > > > Here's the generated wsdl: > > <?xml version="1.0" encoding="utf-8"?><wsdl:definitions > xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" > xmlns:tns="http://test.org/" > xmlns:xsd="http://www.w3.org/2001/XMLSchema" > name="WebServiceTestImplService" targetNamespace="http://test.org/"> > <wsdl:types> > <xsd:schema attributeFormDefault="unqualified" > elementFormDefault="unqualified" targetNamespace="http://test.org/" > xmlns:tns="http://test.org/" > xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element > name="testInt" type="tns:testInt"/> > <xsd:complexType name="testInt"> > <xsd:sequence> > <xsd:element name="theInt" type="xsd:int"/> > </xsd:sequence> > </xsd:complexType> > <xsd:element name="testIntResponse" type="tns:testIntResponse"/> > <xsd:complexType name="testIntResponse"> > <xsd:sequence/> > </xsd:complexType> > </xsd:schema> > </wsdl:types> > > <wsdl:message name="testIntResponse"> > <wsdl:part element="tns:testIntResponse" name="parameters"> > </wsdl:part> > </wsdl:message> > <wsdl:message name="testInt"> > <wsdl:part element="tns:testInt" name="parameters"> > </wsdl:part> > </wsdl:message> > <wsdl:portType name="IalWebServiceTest"> > > <wsdl:operation name="testInt"> > <wsdl:input message="tns:testInt" name="testInt"> > </wsdl:input> > <wsdl:output message="tns:testIntResponse" > name="testIntResponse"> </wsdl:output> > </wsdl:operation> > </wsdl:portType> > <wsdl:binding name="WebServiceTestImplServiceSoapBinding" > type="tns:IalWebServiceTest"> > <soap:binding style="document" > transport="http://schemas.xmlsoap.org/soap/http"/> > > <wsdl:operation name="testInt"> > <soap:operation soapAction="" style="document"/> > <wsdl:input name="testInt"> > <soap:body use="literal"/> > </wsdl:input> > <wsdl:output name="testIntResponse"> > <soap:body use="literal"/> > </wsdl:output> > </wsdl:operation> > > </wsdl:binding> > <wsdl:service name="WebServiceTestImplService"> > <wsdl:port binding="tns:WebServiceTestImplServiceSoapBinding" > name="WebServiceTestImplPort"> > <soap:address location="http://localhost:8080/test/ws/se"/> > </wsdl:port> > </wsdl:service> > </wsdl:definitions> > > Here's a list of the cxf jar's in my project: > cxf-api-2.0.3-incubator.jar > cxf-common-schemas-2.0.3-incubator.jar > cxf-common-utilities-2.0.3-incubator.jar > cxf-rt-bindings-soap-2.0.3-incubator.jar > cxf-rt-bindings-xml-2.0.3-incubator.jar > cxf-rt-core-2.0.3-incubator.jar > cxf-rt-databinding-jaxb-2.0.3-incubator.jar > cxf-rt-frontend-jaxws-2.0.3-incubator.jar > cxf-rt-frontend-simple-2.0.3-incubator.jar > cxf-rt-transports-http-2.0.3-incubator.jar > cxf-rt-ws-security-2.0.3-incubator.jar > cxf-tools-common-2.0.3-incubator.jar > > When I use just document/literal (i.e. I add > "@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)" to my > interface and class), I don't get the error and the message prints to > system.out. > > Thanks for any help you can give. -- J. Daniel Kulp Principal Engineer, IONA [EMAIL PROTECTED] http://www.dankulp.com/blog
