I am trying to move from BlazeDS to GraniteDS. The server boots without any errors but when the Flex client makes a call the server throws an error:
11-Dec-2012 12:55:09 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [GravityServlet] in context with path [] threw exception
java.lang.NullPointerException
at org.granite.gravity.GravityServletUtil.deserialize(GravityServletUtil.java:81)
at org.granite.gravity.GravityServletUtil.deserialize(GravityServletUtil.java:71)
at org.granite.gravity.AbstractGravityServlet.deserialize(AbstractGravityServlet.java:85)
at org.granite.gravity.generic.GravityGenericServlet.doPost(GravityGenericServlet.java:80)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
My current configuration running on
Tomcat 7 is as follows:
web.xml<listener>
<listener-class>org.granite.config.GraniteConfigListener</listener-class>
</listener>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/gravity-amf/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>GravityServlet</servlet-name>
<servlet-class>org.granite.gravity.generic.GravityGenericServlet</servlet-class>
<load-on-startup>3</load-on-startup>
<!--<async-supported>true</async-supported>-->
</servlet>
<servlet-mapping>
<servlet-name>GravityServlet</servlet-name>
<url-pattern>/gravity-amf/*</url-pattern>
</servlet-mapping>
I am not sure if I am using the correct GravityServlet.
services-config.xml<?xml version="1.0" encoding="UTF-8"?>
<services-config>
<services>
<service id="messaging-service"
class="flex.messaging.services.MessagingService"
messageTypes="flex.messaging.messages.AsyncMessage">
<adapters>
<adapter-definition id="default"
class="org.granite.gravity.adapters.SimpleServiceAdapter"
default="true"/>
</adapters>
<destination id="dashboard">
<channels>
<channel ref="habittracker-amf"/>
<channel ref="habittracker-secure-amf"/>
</channels>
</destination>
</service>
</services>
<channels>
<channel-definition id="habittracker-amf" class="org.granite.gravity.channels.GravityChannel">
<endpoint uri="
http://trackitude:8080/gravity-amf/habittracker-amf"
class="flex.messaging.endpoints.AMFEndpoint"/>
</channel-definition>
<channel-definition id="habittracker-secure-amf" class="org.granite.gravity.channels.SecureGravityChannel">
<endpoint uri="
https://trackitude:8443/gravity-amf/habittracker-secure-amf"
class="flex.messaging.endpoints.SecureAMFEndpoint"/>
</channel-definition>
</channels>
</services-config>
The services are annotated as follows:@Service("serviceHtLogin")
@RemoteDestination( id="serviceHtLogin" ,
source="ServiceHtLogin" ,
channel="habittracker-secure-amf")
Spring application-context.xml configuration contains:
<graniteds:flex-filter url-pattern="/*"/>
The first connection the Flex client makes is over the
habittracker-secure-amf channel but it doesn't seem to be getting as far as the service class. Can anyone make any suggestions as to where I have gone wrong?