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; } }