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.MsgProvider; /** * Axis provider for message-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>com.workingmouse.webservice.axis.SpringAxisServlet</servlet-class>
 * </servlet>
 * 
* 2. Configure your server-config.wsdd service to use this class as the service handler. *
 * <service name="formRequest.jws" provider="Handler" style="message">
 *   <parameter name="handlerClass" value="com.workingmouse.webservice.axis.SpringBeanMsgProvider"/>
 *   <parameter name="wsdlTargetNamespace" value="http://www.ioof.com.au/schemas"/>
 *   <parameter name="springBean" value="formRequestWS"/>
 * </service>
 * 
* 3. Configure a Spring-managed bean in axis-servlet.xml that will act as the web service end point. *
 * <bean id="formRequestWS" class="com.workingmouse.webservice.forms.FormRequestWebService">
 *   <property name="documentServices"><ref bean="documentServices"/></property>
 * </bean>
 * 
* * @author Tom Czarniecki (cThomas AT workingmouse DOT com) * * @see com.workingmouse.webservice.axis.SpringAxisServlet * @see com.workingmouse.webservice.axis.SpringBeanProvider */ public class SpringBeanMsgProvider extends MsgProvider { 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, 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(msgContext, clsName); } /** * @see org.apache.axis.providers.java.JavaProvider#getServiceClassNameOptionName() */ protected String getServiceClassNameOptionName() { return SpringBeanProvider.BEAN_OPTION_NAME; } }