Spring MVC und HttpServiceInvokerExporter

Will man in einem Spring-Projekt die annotationsbasierte Konfiguration von Spring MVC Controllern mit dem Veröffentlichen eines HttpServiceInvoker-Dienstes verbinden, stößt man möglicherweise auf folgende Fehlermeldung beim Starten:

No adapter for handler [org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter@4cfc65]: Does your handler implement a supported interface like Controller?

Der Grund ist, daß durch das Aktivieren der @Controller-Auswertung der DefaultAnnotationHandlerMapping und AnnotationMethodHandlerAdapter registriert werden und somit das Default Mapping deaktiviert wird.

<mvc:annotation-driven />

Deshalb muß man zusätzlich in der Spring-Konfiguration den Default HTTP Request Handler, der die Anfragen an den HttpInvokerService weiterleitet, aktivieren:

<bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/>

Danach klappts auch wieder mit dem Aufruf des Remote-Services. Die komplette Spring-Konfiguration würde in der XML-Version folgendermaßen aussehen:

        <!-- Configures Remoting per HttpInvokerService -->
	<bean id="beanNameUrlMapping"
		class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
	<bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/>
	<bean name="/fooService"
		class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter"
		lazy-init="false">
		<property name="service" ref="fooService" />
		<property name="serviceInterface" value="de.oio.FooService" />
	</bean>

	<!-- Configures the @Controller programming model -->
	<mvc:annotation-driven />
	<context:component-scan base-package="de.oio.controller" />
	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/view/jsp/" />
		<property name="suffix" value=".jsp" />
	</bean>

Idealerweise müßte es für das Remoting auch einen annotationsbasierten Ansatz geben, dann müßte man die exportierenden Services nicht im XML konfigurieren und hätte somit keinen Bruch zur Konfiguration der Spring MVC Controller. Bestrebungen dazu gibt es schon, nur umgesetzt wurde es noch nicht.

Short URL for this post: http://wp.me/p4nxik-17W
This entry was posted in Spring Universe and tagged , , . Bookmark the permalink.

Leave a Reply