XFireHome M5M6-SNAPSHOTDevelopersDeveloper Space |
This page outlines how to set up XFire for use via Spring's Remoting framework. Setup the DispatcherServlet in the web.xml:You'll need to include the DispatcherServlet in your web.xml. Notice that it provides the locations of where your spring beans are. <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml <!-- The XFire Spring Beans Configuration --> classpath:org/codehaus/xfire/spring/xfire.xml</param-value> </context-param> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/log4j.properties</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>xfire</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>xfire</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> Remote ExporterWhen using a RemoteExporter, you should define a service interface and (at least) one implementation of that interface. Service Interfacepackage org.codehaus.xfire.spring.example; /** * Provides the service contract for the echo service. * * @author <a href="mailto:poutsma@mac.com">Arjen Poutsma</a> */ public interface Echo { String echo(String in); } Service Implementationpackage org.codehaus.xfire.spring.example; /** * Provides a default implementation of the echo service interface. */ public class EchoImpl implements Echo { public String echo(String in) { return in; } } XFireExporterThen, you'll need to create a exporter definition for the service you want to expose. Typically, you'll do this in the servlet context configuration file. Since the dispatcher servlet is named xfire, this file should be called xfire-servlet.xml. <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="urlMap"> <map> <entry key="/EchoService"> <ref bean="echo"/> </entry> </map> </property> </bean> <!-- Declare a parent bean with all properties common to both services --> <bean id="echo" class="org.codehaus.xfire.spring.remoting.XFireExporter"> <property name="serviceFactory"> <ref bean="xfire.serviceFactory"/> </property> <property name="xfire"> <ref bean="xfire"/> </property> <property name="service"> <ref bean="echoBean"/> </property> <property name="serviceInterface"> <value>org.codehaus.xfire.spring.example.Echo</value> </property> </bean> Thus, the methods defined in the Echo interface are exposed at the path /EchoService, backed by the EchoImpl bean. |