WURFL and Spring DispatcherServlet issue
Posted: Fri Mar 23, 2012 3:53 pm
I am using wurfl-1.3.1.1.jar Java API with the Spring configuration running in a war deployed to Tomcat 7. I have WURFL configured in Spring's application context file as follows:
The server starts fine and the logging indicates the WURFL repository file was loaded successfully. In my controller method, I have the following:
On the line where I attempt to call getDeviceForRequest() method, I get the following stack trace:
The root cause seems to indicate that WURFL's getting routed through Spring's DispatcherServlet and ends up in an infinite loop, but I don't know how to resolve this. Any ideas would be appreciated. Let me know if I need to provide more info.
Code: Select all
<bean id="wurflModel" class="net.sourceforge.wurfl.spring.SpringWURFLModel">
<property name="wurfl" value="file:C:/wurfl-2.3.xml.zip"/>
</bean>
Code: Select all
WURFLHolder wurflHolder = (WURFLHolder)request.getSession().getServletContext().getAttribute("net.sourceforge.wurfl.core.WURFLHolder");
WURFLManager wurfl = wurflHolder.getWURFLManager();
Device device = wurfl.getDeviceForRequest(request);
Code: Select all
org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.StackOverflowError
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:839)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:574)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
........
java.lang.StackOverflowError
net.sourceforge.wurfl.spring.SpringWurflManager.getDeviceForRequest(SpringWurflManager.java:366)
net.sourceforge.wurfl.spring.SpringWurflManager.getDeviceForRequest(SpringWurflManager.java:366)
net.sourceforge.wurfl.spring.SpringWurflManager.getDeviceForRequest(SpringWurflManager.java:366)
net.sourceforge.wurfl.spring.SpringWurflManager.getDeviceForRequest(SpringWurflManager.java:366)
net.sourceforge.wurfl.spring.SpringWurflManager.getDeviceForRequest(SpringWurflManager.java:366)
net.sourceforge.wurfl.spring.SpringWurflManager.getDeviceForRequest(SpringWurflManager.java:366)
net.sourceforge.wurfl.spring.SpringWurflManager.getDeviceForRequest(SpringWurflManager.java:366)
net.sourceforge.wurfl.spring.SpringWurflManager.getDeviceForRequest(SpringWurflManager.java:366)
.........