`
LiYunpeng
  • 浏览: 954830 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

关于ActionScript项目中使用RemoteObject遇到的问题

阅读更多
关于在ActionScript项目中,使用RemoteObject的时候遇到的如下Exception

[WARN ] [2013-01-04 22:41:26] org.springframework.flex.core.DefaultExceptionLogger  The following exception occurred during request processing by the BlazeDS MessageBroker and will be serialized back to the client:
java.lang.NullPointerException
at java.util.concurrent.ConcurrentHashMap.get(Unknown Source)
at flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java:1373)
at flex.messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndpoint.java:1005)
at flex.messaging.endpoints.AbstractEndpoint$$FastClassByCGLIB$$1a3ef066.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:689)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.flex.core.MessageInterceptionAdvice.invoke(MessageInterceptionAdvice.java:66)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.adapter.ThrowsAdviceInterceptor.invoke(ThrowsAdviceInterceptor.java:124)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.Cglib2AopProxy$FixedChainStaticTargetInterceptor.intercept(Cglib2AopProxy.java:573)
at flex.messaging.endpoints.AMFEndpoint$$EnhancerByCGLIB$$8f3a8faa.serviceMessage(<generated>)
at flex.messaging.endpoints.amf.MessageBrokerFilter.invoke(MessageBrokerFilter.java:103)
at flex.messaging.endpoints.amf.LegacyFilter.invoke(LegacyFilter.java:158)
at flex.messaging.endpoints.amf.SessionFilter.invoke(SessionFilter.java:44)
at flex.messaging.endpoints.amf.BatchProcessFilter.invoke(BatchProcessFilter.java:67)
at flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:166)
at flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.java:291)
at flex.messaging.endpoints.AMFEndpoint$$EnhancerByCGLIB$$8f3a8faa.service(<generated>)
at org.springframework.flex.servlet.MessageBrokerHandlerAdapter.handle(MessageBrokerHandlerAdapter.java:109)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:931)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)


在ActionScript端,Error
TypeError: Error #1034: Type Coercion failed: cannot convert Object@5425371 to mx.messaging.messages.ErrorMessage.
再无其他任何错误信息


解决办法:在要执行RemoteObject的远程方法之前,注册下在BlazeDS通信时需要用到的通信类,即,添加如下语句
RpcClassAliasInitializer.registerClassAliases();

-------------------------------------
分析

看后台的错误日志,可以分析出,是对于BlazeDS内部的报错,而又是空指针错误,说明是
有些对象没有成功被实例化
再通过前端的错误信息分析,是转换对象的类型失败。

而对于Flex项目来说,就可以直接使用RemoteObject,无论是标签的方式还是AS代码的方式。

那么写法都一样的情况下,其实Flex工程是多了一个initilization的步骤,也就是说,对于ActionScript中的相应通信类,没有成功的转换成BlazeDS中的类。

加的这条语句在以前博客里也写过类似的,就是手动注册需要AS和Java相对应的类

registerClassAliases的源码里注册了如下
// Flex classes
        registerClassAlias("flex.messaging.io.ArrayCollection", ArrayCollection);
        registerClassAlias("flex.messaging.io.ArrayList", ArrayList);
        registerClassAlias("flex.messaging.io.ObjectProxy", ObjectProxy);
       
        // rpc classes
        registerClassAlias("flex.messaging.messages.AcknowledgeMessage", AcknowledgeMessage);
        registerClassAlias("DSK", AcknowledgeMessageExt);
        registerClassAlias("flex.messaging.messages.AsyncMessage", AsyncMessage);
        registerClassAlias("DSA", AsyncMessageExt);
        registerClassAlias("flex.messaging.messages.CommandMessage", CommandMessage);
        registerClassAlias("DSC", CommandMessageExt);
        registerClassAlias("flex.messaging.config.ConfigMap", ConfigMap);
        registerClassAlias("flex.messaging.messages.ErrorMessage", ErrorMessage);
        registerClassAlias("flex.messaging.messages.HTTPMessage", HTTPRequestMessage);
        registerClassAlias("flex.messaging.messages.MessagePerformanceInfo", MessagePerformanceInfo);
        registerClassAlias("flex.messaging.messages.RemotingMessage", RemotingMessage);
        registerClassAlias("flex.messaging.messages.SOAPMessage", SOAPMessage);
分享到:
评论

相关推荐

    Flex的remoteObject例子

    博客链接提供的文档“配置RemoteObject.docx”应该详细介绍了如何在实际项目中配置和使用RemoteObject,包括可能遇到的问题和解决方案。如果你在使用RemoteObject时遇到困难,可以参考该文档或在线搜索相关资源,如...

    flex与java整合

    有两种方式调用:一是直接通过声明的变量调用,二是直接在ActionScript代码中新建RemoteObject对象并调用方法。这两种方式都能实现在客户端调用服务器端的逻辑。 完成上述步骤后,将项目部署到Tomcat服务器,运行...

    activiti+flex项目搭建

    在遇到问题时,利用日志和调试工具进行排查。 总的来说,"activiti+flex"项目搭建涉及到了多个技术层面,包括数据库管理、服务端开发、前端开发以及它们之间的集成。这个过程不仅需要对Activiti和Flex有深入的理解...

    blazeDS(含部署文档).zip

    部署文档通常会包含详细的步骤和可能遇到的问题解决方案。 8. **测试与调试**:通过编写简单的客户端测试程序,验证服务器和客户端之间的数据交互是否正常。BlazeDS还提供了一款名为LiveCycle Data Services ...

    Professional BlazeDS

    10. **最佳实践**:分享在企业级项目中使用BlazeDS的经验,包括设计模式、架构设计和项目管理。 通过阅读《Professional BlazeDS》,读者将掌握如何利用BlazeDS和Flex构建高效、可扩展的RIA,提升Web应用的用户体验...

    Flex + LCDS + Java 入门教程

    最后,我们将探讨性能优化和部署策略,帮助你更好地理解和解决在实际项目中可能遇到的问题。 通过这个Flex + LCDS + Java入门教程,你将具备使用Flex构建富客户端应用,利用LCDS与Java后端无缝通信的能力。无论你是...

    Flex如何连接数据库,通信的详细的教程

    本教程将详细讲解如何使用Flex与数据库进行通信,包括连接MySQL数据库,以及在开发过程中可能遇到的问题及其解决方案。 1. **Flex与数据库的通信基础** Flex可以通过AMF(Action Message Format)或HTTP服务与...

    flex + java web 整合

    标题中的“flex + java web 整合”指的是在Java Web应用程序中集成Adobe Flex技术,用于构建富互联网应用程序(RIA)。...如果你在整合过程中遇到问题,可以查阅相关文档,或在社区如iteye上寻求帮助。

    flex cookbook中文版

    这本书旨在帮助开发者解决在使用Flex进行项目开发时遇到的各种问题,提供了一系列的解决方案和实例代码,覆盖了Flex开发的各个方面。 1. **Flex基础**:书中首先介绍了Flex的基础知识,包括MXML和ActionScript的...

    flex 与java后台整合 PPT

    提供的“flex和j2ee整合.doc”文档很可能是关于这个整合过程的详细指南,包含了步骤、配置示例以及可能遇到的问题和解决方案。阅读这份文档将有助于深入理解Flex与Java的整合技术。 综上所述,Flex与Java的整合是...

    flex远程过程调用部署文档

    Flex远程过程调用(RPC)部署涉及多个关键步骤和技术,主要目标是使Flex客户端能够...遇到问题时,不要犹豫寻求他人的帮助,并且分享你的知识和经验。遵循这些步骤,可以有效地部署和实现Flex应用的远程过程调用功能。

    flex与后台servlet建立连接

    6. **错误处理**:在Flex和Servlet之间的通信过程中,可能会遇到网络问题、数据解析错误等。因此,需要在Flex代码中设置适当的错误处理机制,如添加`faultHandler`事件监听器,以便在出错时能够给出反馈。 7. **...

    flex3和ibatis3的整合

    5. **错误处理和调试**:整合过程中,可能会遇到类型转换错误、网络通信问题等,需要进行异常处理和调试。可以利用Flex的logcat或者Java的日志系统来追踪错误。 6. **安全性考虑**:整合Flex3和iBatis3时,需要考虑...

    flex与spring连接java后台示例

    Flex和Spring是两种在开发富互联网应用程序(RIA)和企业级应用时常用的技术。Flex是Adobe公司推出的一种基于ActionScript的开源框架,主要用于构建...在使用过程中,遇到问题可以参考IT氧吧等技术论坛获取帮助和支持。

    Flex3权威指南源码

    源码中会包含如何使用HTTPService、WebService或RemoteObject来调用远程服务并处理返回的数据。 6. **图形和动画**:Flex 3提供了强大的图形和动画功能,源码可以展示如何使用Graphics API绘制矢量图形,以及如何...

    flex和j2ee整合.doc

    - 使用MXML编写Flex前端应用,创建一个`RemoteObject`实例,设置其目的地为之前定义的`helloWorld`,并添加一个按钮触发远程调用,输入框接收用户输入,以及显示返回结果的标签。 通过以上步骤,我们可以实现Flex...

    Flex Blazeds入门教程

    Flex Blazeds入门教程,由刘铭朝撰写于2008年3月21日,旨在解决开发者在搭建Flex与LCDS(Flex Data Services)工程时遇到的常见问题。这篇教程不仅详细介绍了创建项目的过程,还涵盖了如何整合与部署J2EE项目和LCDS...

    AMF移植代码

    标题"AMF移植代码"暗示我们将讨论在不同环境中使用或重用AMF编码的数据时可能遇到的问题和解决策略。描述中的"移植RTMP看看效果"表明我们可能正在处理基于RTMP(Real-Time Messaging Protocol)的流媒体应用,RTMP常...

    flex amfphp1.9

    在Flex中,你可以使用ActionScript类来映射服务器端的服务,这些类通常会继承自`mx.rpc.remoting.RemoteObject`。 在AMFPHP 1.9中,值得注意的是其对AMF0和AMF3两种版本的支持。AMF0是早期的版本,而AMF3则提供了更...

    Flex与Java通信采用blazeDS的方式的例子helloworld

    在Flex中,我们可以使用RemoteObject组件来调用Java服务。 ```xml &lt;!-- 在.mxml文件中 --&gt; &lt;s:RemoteObject id="helloWorldService" destination="HelloWorldService" fault="faultHandler(event)" /&gt; &lt;!...

Global site tag (gtag.js) - Google Analytics