package com.workingmouse.webservice.axis; import org.apache.axis.AxisFault; import org.apache.axis.MessageContext; import org.apache.axis.handlers.soap.SOAPService; import org.apache.axis.providers.java.RPCProvider; /** * Axis provider for RPC-style services that uses Spring Framework * to retrieve service classes and resolve their dependencies. * Simply delegates to {@link com.workingmouse.webservice.axis.SpringBeanProvider}. *
* To use this class:
* 1. Configure {@link com.workingmouse.webservice.axis.SpringAxisServlet} as your axis servlet in web.xml.
*
* <servlet> * <servlet-name>axis</servlet-name> * <display-name>Apache-Axis Servlet</display-name> * <servlet-class>de.soapwars.webservice.axis.SpringAxisServlet</servlet-class> * </servlet> ** 2. Configure your server-config.wsdd service to use this class as the service handler. *
* <service name="products.jws" provider="Handler" style="document" use="literal"> * <parameter name="handlerClass" value="de.soapwars.webservice.axis.SpringBeanRPCProvider"/> * <parameter name="wsdlTargetNamespace" value="http://www.ioof.com.au/schemas/public"/> * <parameter name="springBean" value="productWS"/> * </service> ** 3. Configure a Spring-managed bean in axis-servlet.xml that will act as the web service end point. *
* <bean id="productWS" class="de.soapwars.webservice.ProductWebServices"> * <property name="productServices"><ref bean="productServices"/></property> * </bean> ** * @author Tom Czarniecki (cThomas AT workingmouse DOT com) * * @see com.workingmouse.webservice.axis.SpringAxisServlet * @see com.workingmouse.webservice.axis.SpringBeanProvider */ public class SpringBeanRPCProvider extends RPCProvider { /** * its serializable */ private static final long serialVersionUID = -7067788485671530833L; private final SpringBeanProvider provider = new SpringBeanProvider(); /** * @see org.apache.axis.providers.java.JavaProvider#makeNewServiceObject(org.apache.axis.MessageContext, java.lang.String) */ protected Object makeNewServiceObject(MessageContext msgContext, String clsName) throws Exception { return provider.getBean(msgContext.getAxisEngine(), clsName); } /** * @see org.apache.axis.providers.java.JavaProvider#getServiceClass(java.lang.String, org.apache.axis.handlers.soap.SOAPService, org.apache.axis.MessageContext) */ protected Class getServiceClass(String clsName, SOAPService service, MessageContext msgContext) throws AxisFault { return provider.getBeanClass(service.getEngine(), clsName); } /** * @see org.apache.axis.providers.java.JavaProvider#getServiceClassNameOptionName() */ protected String getServiceClassNameOptionName() { return SpringBeanProvider.BEAN_OPTION_NAME; } }