I've read a few other threads related to this, but it doesn't seem that I've discovered my fault. I've created a Java class with @Endpoint and @PayloadRoot annotations, configured the Marshalling beans as per the airline example, however, I continue to get this error. Below are examples of my code (trimmed for brevity, doesn't include the WSDL generator). Hopefully someone can see something I overlooked. For reference, I'm using Netbeans 6.0 (which has some nice support for JAXB Binding generation, btw), Java 1.5, Spring 2.0, and Spring WS 1.0.2, and JAXB 2.1.
Full Error
catalog-ws-servlet.xmlCode:No adapter for endpoint [public javax.xml.bind.JAXBElement<com.mg21.ws.bindings.catalog.Product> com.mg21.shotgun.ws.endpoint.ProductEndpoint.productRequest(int)]: Does your endpoint implement a supported interface like MessageHandler or PayloadEndpoint?
ProductEndpoint.javaCode:<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <bean class="org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping"> <property name="interceptors"> <list> <bean class="org.springframework.ws.server.endpoint.interceptor.PayloadLoggingInterceptor"/> <bean class="org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor"> <property name="schema" value="/WEB-INF/schemas/catalog.xsd"/> <property name="validateRequest" value="true"/> <property name="validateResponse" value="true"/> </bean> </list> </property> <property name="order" value="1"/> </bean> <bean id="marshallingEndpoint" class="com.mg21.ws.endpoint.ProductEndpoint"> <description> This endpoint handles echo requests. </description> <property name="productService" ref="productService"/> </bean> <bean id="productService" class="com.mg21.ws.service.ProductService"> <description> This bean is our "business" service. </description> </bean> <bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller"> <description> The JAXB 2 Marshaller is used by the endpoints. </description> <property name="contextPath" value="com.mg21.ws.bindings.catalog"/> </bean> <bean class="org.springframework.ws.server.endpoint.adapter.GenericMarshallingMethodEndpointAdapter"> <description> This adapter allows for methods that need and returns marshalled objects. The MarshallingEndpoint uses JAXB 2 objects. </description> <constructor-arg ref="marshaller"/> </bean> </beans>
ProductRequest.javaCode:@Endpoint public class ProductEndpoint { public static final String NAMESPACE_URI = "http://www.12gaugemedia.com/ws/services/catalog"; public static final String PRODUCT_REQUEST_LOCAL_NAME = "productRequest"; public static final String PRODUCT_RESPONSE_LOCAL_NAME = "productResponse"; private ProductService productService; private ObjectFactory objectFactory = new ObjectFactory(); @PayloadRoot(localPart = PRODUCT_REQUEST_LOCAL_NAME, namespace = NAMESPACE_URI) public JAXBElement<Product> productRequest(int id){ return objectFactory.createProductResponse(productService.productRequest(id)); } public void setProductService(ProductService productService) { this.productService = productService; } }
catalog.xsdCode:public class ProductService { public Product productRequest (int i){ Product product = new Product(); product.setName("Product 1"); product.setDescr("Lorem Ipsum"); product.setBlurb("Dolor Amit"); return product; } }
Thanks!Code:<?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="qualified" targetNamespace="http://www.12gaugemedia.com/ws/services/catalog" xmlns:tns="http://www.12gaugemedia.com/ws/services/catalog"> <element name="productRequest"> <simpleType> <restriction base = "int"> <pattern value="([\d])+"/> </restriction> </simpleType> </element> <element name="productResponse" type="tns:Product" /> <complexType name="Product"> <all> <element name="name" /> <element name="descr" /> <element name="blurb" /> </all> </complexType> </schema>


Reply With Quote