2011-03-19 5 views
0

나는 엔티티 빈을 가지고 있고 그 클래스의 객체를 전송할 때 내가 그 오류가 발생했습니다 ActionScript 클래스에 대응하는 것 :GraniteDS는 actionscript 클래스에서 java bean으로 변환 할 수 없습니다 ... 어떻게 해결할 수 있습니까?

13:54:07,750 ERROR [AMFMessageFilter] AMF message error 
org.granite.messaging.amf.io.AMF3SerializationException 
    at org.granite.messaging.amf.io.AMF3Deserializer.readObject(AMF3Deserializer.java:94) 
    at org.granite.messaging.amf.io.AMF3Deserializer.readAMF3Array(AMF3Deserializer.java:261) 
    at org.granite.messaging.amf.io.AMF3Deserializer.readObject(AMF3Deserializer.java:124) 
    at org.granite.messaging.amf.io.AMF3Deserializer.readAMF3Object(AMF3Deserializer.java:403) 
    at org.granite.messaging.amf.io.AMF3Deserializer.readObject(AMF3Deserializer.java:126) 
    at org.granite.messaging.amf.io.AMF3Deserializer.readObject(AMF3Deserializer.java:88) 
    at org.granite.messaging.amf.io.AMF0Deserializer.readAMF3Data(AMF0Deserializer.java:324) 
    at org.granite.messaging.amf.io.AMF0Deserializer.readData(AMF0Deserializer.java:376) 
    at org.granite.messaging.amf.io.AMF0Deserializer.readArray(AMF0Deserializer.java:239) 
    at org.granite.messaging.amf.io.AMF0Deserializer.readData(AMF0Deserializer.java:362) 
    at org.granite.messaging.amf.io.AMF0Deserializer.readBodies(AMF0Deserializer.java:155) 
    at org.granite.messaging.amf.io.AMF0Deserializer.<init>(AMF0Deserializer.java:94) 
    at org.granite.messaging.webapp.AMFMessageFilter.doFilter(AMFMessageFilter.java:93) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 
    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:230) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182) 
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446) 
    at java.lang.Thread.run(Thread.java:619) 
Caused by: java.lang.RuntimeException: Could not read externalized object: [email protected] 
    at org.granite.messaging.amf.io.AMF3Deserializer.readAMF3Object(AMF3Deserializer.java:373) 
    at org.granite.messaging.amf.io.AMF3Deserializer.readObject(AMF3Deserializer.java:126) 
    at org.granite.messaging.amf.io.AMF3Deserializer.readObject(AMF3Deserializer.java:88) 
    ... 30 more 
Caused by: org.granite.messaging.amf.io.convert.NoConverterFoundException: Cannot convert: [email protected] to: java.util.Set<com.xpress.spt.beans.SptStatusHist> 
    at org.granite.messaging.amf.io.convert.Converters.getConverter(Converters.java:119) 
    at org.granite.messaging.amf.io.convert.Converters.convert(Converters.java:132) 
    at org.granite.hibernate.HibernateExternalizer.readExternal(HibernateExternalizer.java:189) 
    at org.granite.messaging.amf.io.AMF3Deserializer.readAMF3Object(AMF3Deserializer.java:369) 
    ... 32 more 
13:54:07,750 ERROR [[AMFMessageServlet]] Servlet.service() for servlet AMFMessageServlet threw exception 
org.granite.messaging.amf.io.AMF3SerializationException 
    at org.granite.messaging.amf.io.AMF3Deserializer.readObject(AMF3Deserializer.java:94) 
    at org.granite.messaging.amf.io.AMF3Deserializer.readAMF3Array(AMF3Deserializer.java:261) 
    at org.granite.messaging.amf.io.AMF3Deserializer.readObject(AMF3Deserializer.java:124) 
    at org.granite.messaging.amf.io.AMF3Deserializer.readAMF3Object(AMF3Deserializer.java:403) 
    at org.granite.messaging.amf.io.AMF3Deserializer.readObject(AMF3Deserializer.java:126) 
    at org.granite.messaging.amf.io.AMF3Deserializer.readObject(AMF3Deserializer.java:88) 
    at org.granite.messaging.amf.io.AMF0Deserializer.readAMF3Data(AMF0Deserializer.java:324) 
    at org.granite.messaging.amf.io.AMF0Deserializer.readData(AMF0Deserializer.java:376) 
    at org.granite.messaging.amf.io.AMF0Deserializer.readArray(AMF0Deserializer.java:239) 
    at org.granite.messaging.amf.io.AMF0Deserializer.readData(AMF0Deserializer.java:362) 
    at org.granite.messaging.amf.io.AMF0Deserializer.readBodies(AMF0Deserializer.java:155) 
    at org.granite.messaging.amf.io.AMF0Deserializer.<init>(AMF0Deserializer.java:94) 
    at org.granite.messaging.webapp.AMFMessageFilter.doFilter(AMFMessageFilter.java:93) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 
    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:230) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182) 
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446) 
    at java.lang.Thread.run(Thread.java:619) 
Caused by: java.lang.RuntimeException: Could not read externalized object: com.xpress.spt.beans.SptPromo[email protected] 
    at org.granite.messaging.amf.io.AMF3Deserializer.readAMF3Object(AMF3Deserializer.java:373) 
    at org.granite.messaging.amf.io.AMF3Deserializer.readObject(AMF3Deserializer.java:126) 
    at org.granite.messaging.amf.io.AMF3Deserializer.readObject(AMF3Deserializer.java:88) 
    ... 30 more 
Caused by: org.granite.messaging.amf.io.convert.NoConverterFoundException: Cannot convert: [email protected] to: java.util.Set<com.xpress.spt.beans.SptStatusHist> 
    at org.granite.messaging.amf.io.convert.Converters.getConverter(Converters.java:119) 
    at org.granite.messaging.amf.io.convert.Converters.convert(Converters.java:132) 
    at org.granite.hibernate.HibernateExternalizer.readExternal(HibernateExternalizer.java:189) 
    at org.granite.messaging.amf.io.AMF3Deserializer.readAMF3Object(AMF3Deserializer.java:369) 
    ... 32 more 

내 자바 빈 클래스 : 여기

package com.xpress.spt.beans; 


import java.sql.Timestamp; 
import java.util.HashSet; 
import java.util.Set; 
import javax.persistence.CascadeType; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.FetchType; 
import javax.persistence.Id; 
import javax.persistence.JoinColumn; 
import javax.persistence.ManyToOne; 
import javax.persistence.OneToMany; 
import javax.persistence.Table; 
import javax.persistence.UniqueConstraint; 


/** 
* SptPromotion entity. @author MyEclipse Persistence Tools 
*/ 
@Entity 
@Table(name="SPT_PROMOTION" 
    ,schema="SPT_DEV" 
, uniqueConstraints = {@UniqueConstraint(columnNames="LABEL"), @UniqueConstraint(columnNames="SHORT_DESCRIPTION"), @UniqueConstraint(columnNames="DESCRIPTION")} 
) 

public class SptPromotion implements java.io.Serializable { 


    // Fields  
    private static final long serialVersionUID = 1L; 
    private Long sptCode; 
    private SptMatrixRule sptMatrixRule; 
    private SptStatus sptStatus; 
    private SptProcess sptProcess; 
    private String shortDescription; 
    private String description; 
    private String label; 
    private Timestamp creationDate; 
    private String username; 
    private String bcFlag; 
    private String prorationFlag; 
    private String countConstraintFlag; 
    private String minCommFlag; 
    private Long minCommPeriod; 
    private Long priority; 
    private Timestamp startPromoDate; 
    private Timestamp endPromoDate; 
    private Timestamp lastRunDate; 
    private Set<SptStatusHist> sptStatusHists = new HashSet<SptStatusHist>(0); 
    private Set<SptPromotionParameter> sptPromotionParameters = new HashSet<SptPromotionParameter>(0); 
    private Set<SptPromotionMechanism> sptPromotionMechanisms = new HashSet<SptPromotionMechanism>(0); 
    private Set<SptCustomerPromotionHist> sptCustomerPromotionHists = new HashSet<SptCustomerPromotionHist>(0); 
    private Set<SptLoadData> sptLoadDatas = new HashSet<SptLoadData>(0); 
    private Set<SptDependency> sptDependenciesForSptCode = new HashSet<SptDependency>(0); 
    private Set<SptDependency> sptDependenciesForDepSptCode = new HashSet<SptDependency>(0); 
    private Set<SptQualifiedCustomer> sptQualifiedCustomers = new HashSet<SptQualifiedCustomer>(0); 
    private Set<SptPromotionCriteria> sptPromotionCriterias = new HashSet<SptPromotionCriteria>(0); 
    private Set<SptProcessLog> sptProcessLogs = new HashSet<SptProcessLog>(0); 


    // Constructors 

    /** default constructor */ 
    public SptPromotion() { 
    } 

    /** minimal constructor */ 
    public SptPromotion(Long sptCode, SptMatrixRule sptMatrixRule, SptStatus sptStatus, SptProcess sptProcess, String shortDescription, String description, String label, Timestamp creationDate, String username, String bcFlag, String prorationFlag, String countConstraintFlag, Long priority, Timestamp startPromoDate) { 
     this.sptCode = sptCode; 
     this.sptMatrixRule = sptMatrixRule; 
     this.sptStatus = sptStatus; 
     this.sptProcess = sptProcess; 
     this.shortDescription = shortDescription; 
     this.description = description; 
     this.label = label; 
     this.creationDate = creationDate; 
     this.username = username; 
     this.bcFlag = bcFlag; 
     this.prorationFlag = prorationFlag; 
     this.countConstraintFlag = countConstraintFlag; 
     this.priority = priority; 
     this.startPromoDate = startPromoDate; 
    } 

    /** full constructor */ 
    public SptPromotion(Long sptCode, SptMatrixRule sptMatrixRule, SptStatus sptStatus, SptProcess sptProcess, String shortDescription, String description, String label, Timestamp creationDate, String username, String bcFlag, String prorationFlag, String countConstraintFlag, String minCommFlag, Long minCommPeriod, Long priority, Timestamp startPromoDate, Timestamp endPromoDate, Timestamp lastRunDate, Set<SptStatusHist> sptStatusHists, Set<SptPromotionParameter> sptPromotionParameters, Set<SptPromotionMechanism> sptPromotionMechanisms, Set<SptCustomerPromotionHist> sptCustomerPromotionHists, Set<SptLoadData> sptLoadDatas, Set<SptDependency> sptDependenciesForSptCode, Set<SptDependency> sptDependenciesForDepSptCode, Set<SptQualifiedCustomer> sptQualifiedCustomers, Set<SptPromotionCriteria> sptPromotionCriterias, Set<SptProcessLog> sptProcessLogs) { 
     this.sptCode = sptCode; 
     this.sptMatrixRule = sptMatrixRule; 
     this.sptStatus = sptStatus; 
     this.sptProcess = sptProcess; 
     this.shortDescription = shortDescription; 
     this.description = description; 
     this.label = label; 
     this.creationDate = creationDate; 
     this.username = username; 
     this.bcFlag = bcFlag; 
     this.prorationFlag = prorationFlag; 
     this.countConstraintFlag = countConstraintFlag; 
     this.minCommFlag = minCommFlag; 
     this.minCommPeriod = minCommPeriod; 
     this.priority = priority; 
     this.startPromoDate = startPromoDate; 
     this.endPromoDate = endPromoDate; 
     this.lastRunDate = lastRunDate; 
     this.sptStatusHists = sptStatusHists; 
     this.sptPromotionParameters = sptPromotionParameters; 
     this.sptPromotionMechanisms = sptPromotionMechanisms; 
     this.sptCustomerPromotionHists = sptCustomerPromotionHists; 
     this.sptLoadDatas = sptLoadDatas; 
     this.sptDependenciesForSptCode = sptDependenciesForSptCode; 
     this.sptDependenciesForDepSptCode = sptDependenciesForDepSptCode; 
     this.sptQualifiedCustomers = sptQualifiedCustomers; 
     this.sptPromotionCriterias = sptPromotionCriterias; 
     this.sptProcessLogs = sptProcessLogs; 
    } 


    // Property accessors omitted 
    //............. 

} 

와 해당 ActionScript 클래스 Gas3 코드 생성 도구에 의해 생성 :

/** 
* Generated by Gas3 v2.1.0 (Granite Data Services). 
* 
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE 
* THE GENERATOR. INSTEAD, EDIT THE INHERITED CLASS (SptPromotion.as). 
*/ 

package com.xpress.spt.beans { 

    import flash.utils.IDataInput; 
    import flash.utils.IDataOutput; 
    import flash.utils.IExternalizable; 
    import mx.collections.ListCollectionView; 
    import org.granite.collections.IPersistentCollection; 
    import org.granite.meta; 

    use namespace meta; 

    [Bindable] 
    public class SptPromotionBase implements IExternalizable { 

     private var __initialized:Boolean = true; 
     private var __detachedState:String = null; 

     private var _bcFlag:String; 
     private var _countConstraintFlag:String; 
     private var _creationDate:Date; 
     private var _description:String; 
     private var _endPromoDate:Date; 
     private var _label:String; 
     private var _lastRunDate:Date; 
     private var _minCommFlag:String; 
     private var _minCommPeriod:Number; 
     private var _priority:Number; 
     private var _prorationFlag:String; 
     private var _shortDescription:String; 
     private var _sptCode:Number; 
     private var _sptCustomerPromotionHists:ListCollectionView; 
     private var _sptDependenciesForDepSptCode:ListCollectionView; 
     private var _sptDependenciesForSptCode:ListCollectionView; 
     private var _sptLoadDatas:ListCollectionView; 
     private var _sptMatrixRule:SptMatrixRule; 
     private var _sptProcess:SptProcess; 
     private var _sptProcessLogs:ListCollectionView; 
     private var _sptPromotionCriterias:ListCollectionView; 
     private var _sptPromotionMechanisms:ListCollectionView; 
     private var _sptPromotionParameters:ListCollectionView; 
     private var _sptQualifiedCustomers:ListCollectionView; 
     private var _sptStatus:SptStatus; 
     private var _sptStatusHists:ListCollectionView; 
     private var _startPromoDate:Date; 
     private var _username:String; 

     meta function isInitialized(name:String = null):Boolean { 
      if (!name) 
       return __initialized; 

      var property:* = this[name]; 
      return (
       (!(property is SptPromotion) || (property as SptPromotion).meta::isInitialized()) && 
       (!(property is IPersistentCollection) || (property as IPersistentCollection).isInitialized()) 
      ); 
     } 

     //setters and getters omitted 
     //........... 

     public function readExternal(input:IDataInput):void { 
      __initialized = input.readObject() as Boolean; 
      __detachedState = input.readObject() as String; 
      if (meta::isInitialized()) { 
       _bcFlag = input.readObject() as String; 
       _countConstraintFlag = input.readObject() as String; 
       _creationDate = input.readObject() as Date; 
       _description = input.readObject() as String; 
       _endPromoDate = input.readObject() as Date; 
       _label = input.readObject() as String; 
       _lastRunDate = input.readObject() as Date; 
       _minCommFlag = input.readObject() as String; 
       _minCommPeriod = function(o:*):Number { return (o is Number ? o as Number : Number.NaN) } (input.readObject()); 
       _priority = function(o:*):Number { return (o is Number ? o as Number : Number.NaN) } (input.readObject()); 
       _prorationFlag = input.readObject() as String; 
       _shortDescription = input.readObject() as String; 
       _sptCode = function(o:*):Number { return (o is Number ? o as Number : Number.NaN) } (input.readObject()); 
       _sptCustomerPromotionHists = input.readObject() as ListCollectionView; 
       _sptDependenciesForDepSptCode = input.readObject() as ListCollectionView; 
       _sptDependenciesForSptCode = input.readObject() as ListCollectionView; 
       _sptLoadDatas = input.readObject() as ListCollectionView; 
       _sptMatrixRule = input.readObject() as SptMatrixRule; 
       _sptProcess = input.readObject() as SptProcess; 
       _sptProcessLogs = input.readObject() as ListCollectionView; 
       _sptPromotionCriterias = input.readObject() as ListCollectionView; 
       _sptPromotionMechanisms = input.readObject() as ListCollectionView; 
       _sptPromotionParameters = input.readObject() as ListCollectionView; 
       _sptQualifiedCustomers = input.readObject() as ListCollectionView; 
       _sptStatus = input.readObject() as SptStatus; 
       _sptStatusHists = input.readObject() as ListCollectionView; 
       _startPromoDate = input.readObject() as Date; 
       _username = input.readObject() as String; 
      } 
      else { 
       _sptCode = function(o:*):Number { return (o is Number ? o as Number : Number.NaN) } (input.readObject()); 
      } 
     } 

     public function writeExternal(output:IDataOutput):void { 
      output.writeObject(__initialized); 
      output.writeObject(__detachedState); 
      if (meta::isInitialized()) { 
       output.writeObject(_bcFlag); 
       output.writeObject(_countConstraintFlag); 
       output.writeObject(_creationDate); 
       output.writeObject(_description); 
       output.writeObject(_endPromoDate); 
       output.writeObject(_label); 
       output.writeObject(_lastRunDate); 
       output.writeObject(_minCommFlag); 
       output.writeObject(_minCommPeriod); 
       output.writeObject(_priority); 
       output.writeObject(_prorationFlag); 
       output.writeObject(_shortDescription); 
       output.writeObject(_sptCode); 
       output.writeObject(_sptCustomerPromotionHists); 
       output.writeObject(_sptDependenciesForDepSptCode); 
       output.writeObject(_sptDependenciesForSptCode); 
       output.writeObject(_sptLoadDatas); 
       output.writeObject(_sptMatrixRule); 
       output.writeObject(_sptProcess); 
       output.writeObject(_sptProcessLogs); 
       output.writeObject(_sptPromotionCriterias); 
       output.writeObject(_sptPromotionMechanisms); 
       output.writeObject(_sptPromotionParameters); 
       output.writeObject(_sptQualifiedCustomers); 
       output.writeObject(_sptStatus); 
       output.writeObject(_sptStatusHists); 
       output.writeObject(_startPromoDate); 
       output.writeObject(_username); 
      } 
      else { 
       output.writeObject(_sptCode); 
      } 
     } 
    } 
} 

어떤 도움을 기쁘게 ??? 사전 : 당신의 예외에서

+0

만약 내가 추측했다면, 사용자 정의 네임 스페이스 "메타"문제입니다. 그러나 AS3 클래스에는 공용 변수가 없으므로 정확하게 당신은 이전하기를 기대하고 있습니까? 일반적으로 AMF 객체 변환은 객체의 public 속성을 끝에서 다른 객체로 전달합니다. – JeffryHouser

+0

목록 중 하나에있는 객체 중 하나 일 것 같습니다. 디시리얼라이저가 몇 단계 아래로 내려간 것처럼 보입니다. 컬렉션에있는 모든 객체가 직렬화 가능합니까? –

답변

1

에 감사 ...

Caused by: org.granite.messaging.amf.io.convert.NoConverterFoundException: 
Cannot convert: [email protected] 
to: java.util.Set<com.xpress.spt.beans.SptStatusHist> 

... 난 당신이 SptStatusSet<SptStatusHist> 사이에 형의 충돌이있을 거라 생각.

3

그런 문제가있었습니다. 제 경우에는 모듈을 사용할 때 발생합니다.

그래서 주 응용 프로그램에 특정 클래스를 미리로드해야했습니다. Main.mxml에

:

private var loadClasses:Array = [Funcionario, Cliente, Projeto]; 
1

우리는 열거 형으로도 그 문제를 가지고 있었다. 화강암의 최근 업그레이드로 해결되었습니다. 그것은 당신이 화강암 단지를 어디에 두 었는지에 달려 있습니다. jboss/server/default/lib에이 오류가있을 수 있습니다. 프로젝트 내의 granite.jar이 발생하지 않아야합니다. 어쨌든 화강암 단지의 신선한 업데이 트를 할 ...