Ta aqui o stacktrace de uma Exception: (me ajudou a entender melhor o ciclo da requisição)
O request está passando pelo VRaptor!
O BlazeDS tem uma servlet que fica, normalmente, em: http://servidor/nomedoprojeto/messagebroker/amf
Essa servlet é uma fachada para todos os acessos, ou seja, TODA requisição realizada pelo cliente Flex (através do AMF) o servidor Java recebe através dessa servlet. Portanto, passa pelo VRaptor.
A requisição também passa pelo provider:
at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)
No entanto, nesse momento que a classe passa pelo provider é apenas uma mensagem que contém a localização do serviço, parametros, e outras informações da requisição. (Não existe a classe criada!)
Depois, por dentro do BlazeDS é criada a classe que executa a lógica e retorna o resultado em outra mensagem.
Vou verificar se essa classe responsável por criar o serviço não tem uma interface que eu possa implementar para alterar o comportamento da criação. Se eu conseguisse, teria uma maneira do VRaptor injetar daí?
Stacktrace:
<blockquote>15:42:35,133 DEBUG [VRaptor ] VRaptor received a new request
15:42:35,145 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ResourceLookupInterceptor
15:42:35,146 DEBUG [DefaultResourceTranslator] trying to access /messagebroker/amf
15:42:35,148 DEBUG [VRaptor ] VRaptor ended the request
15:42:35,195 DEBUG [VRaptor ] VRaptor received a new request
15:42:35,204 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ResourceLookupInterceptor
15:42:35,205 DEBUG [DefaultResourceTranslator] trying to access /messagebroker/amf
[BlazeDS]Unable to create a new instance of type ‘br.com.cauirs.tipos.Quantidade’.
flex.messaging.MessageException: Unable to create a new instance of type ‘br.com.cauirs.tipos.Quantidade’. Types cannot be instantiated without a public, no arguments constructor.
at flex.messaging.util.ClassUtil.createDefaultInstance(ClassUtil.java:161)
at flex.messaging.io.amf.AbstractAmfInput.createObjectInstance(AbstractAmfInput.java:179)
at flex.messaging.io.amf.Amf3Input.readScriptObject(Amf3Input.java:409)
at flex.messaging.io.amf.Amf3Input.readObjectValue(Amf3Input.java:152)
at flex.messaging.io.amf.Amf3Input.readObject(Amf3Input.java:130)
at flex.messaging.io.amf.Amf3Input.readScriptObject(Amf3Input.java:437)
at flex.messaging.io.amf.Amf3Input.readObjectValue(Amf3Input.java:152)
at flex.messaging.io.amf.Amf3Input.readObject(Amf3Input.java:130)
at flex.messaging.io.amf.Amf3Input.readScriptObject(Amf3Input.java:437)
at flex.messaging.io.amf.Amf3Input.readObjectValue(Amf3Input.java:152)
at flex.messaging.io.amf.Amf3Input.readObject(Amf3Input.java:130)
at flex.messaging.io.amf.Amf3Input.readArray(Amf3Input.java:358)
at flex.messaging.io.amf.Amf3Input.readObjectValue(Amf3Input.java:156)
at flex.messaging.io.amf.Amf3Input.readObject(Amf3Input.java:130)
at flex.messaging.io.amf.Amf3Input.readScriptObject(Amf3Input.java:437)
at flex.messaging.io.amf.Amf3Input.readObjectValue(Amf3Input.java:152)
at flex.messaging.io.amf.Amf3Input.readObject(Amf3Input.java:130)
at flex.messaging.io.amf.Amf0Input.readObjectValue(Amf0Input.java:123)
at flex.messaging.io.amf.Amf0Input.readArrayValue(Amf0Input.java:359)
at flex.messaging.io.amf.Amf0Input.readObjectValue(Amf0Input.java:127)
at flex.messaging.io.amf.Amf0Input.readObject(Amf0Input.java:94)
at flex.messaging.io.amf.AmfMessageDeserializer.readObject(AmfMessageDeserializer.java:227)
at flex.messaging.io.amf.AmfMessageDeserializer.readBody(AmfMessageDeserializer.java:206)
at flex.messaging.io.amf.AmfMessageDeserializer.readMessage(AmfMessageDeserializer.java:126)
at flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:145)
at flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.java:291)
at flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java:353)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at br.com.caelum.vraptor.resource.DefaultResourceNotFoundHandler.couldntFind(DefaultResourceNotFoundHandler.java:41)
at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:71)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:23)
at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)
at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:636)</blockquote>