[jboss-jira] [JBoss JIRA] (AS7-3959) SerializingCloner can't clone primitive data types

Sebastian Woeste (JIRA) jira-events at lists.jboss.org
Thu Mar 1 04:01:39 EST 2012


    [ https://issues.jboss.org/browse/AS7-3959?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12672472#comment-12672472 ] 

Sebastian Woeste commented on AS7-3959:
---------------------------------------

Its both, the java version used to compile and the one the jboss is running with.

javap -verbose for the GenericBusinessFacadeAdapter prints the following:

Compiled from "GenericBusinessFacadeAdapter.java"
public class de.zeb.control.fw.bl.internal.layerabstraction.GenericBusinessFacadeAdapter extends java.lang.Object implements de.zeb.control.fw.bl.layerabstraction.GenericBusinessFa
cade,org.springframework.beans.factory.InitializingBean
  SourceFile: "GenericBusinessFacadeAdapter.java"
  minor version: 0
  major version: 49
  Constant pool:
const #1 = class        #2;     //  de/zeb/control/fw/bl/internal/layerabstraction/GenericBusinessFacadeAdapter
const #2 = Asciz        de/zeb/control/fw/bl/internal/layerabstraction/GenericBusinessFacadeAdapter;
const #3 = class        #4;     //  java/lang/Object
const #4 = Asciz        java/lang/Object;
const #5 = class        #6;     //  de/zeb/control/fw/bl/layerabstraction/GenericBusinessFacade
const #6 = Asciz        de/zeb/control/fw/bl/layerabstraction/GenericBusinessFacade;
const #7 = class        #8;     //  org/springframework/beans/factory/InitializingBean
const #8 = Asciz        org/springframework/beans/factory/InitializingBean;
const #9 = Asciz        facadeHome;
const #10 = Asciz       Ljava/lang/Object;;
const #11 = Asciz       facadeRemote;
const #12 = Asciz       Lde/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeRemote;;
const #13 = Asciz       facadeLocal;
const #14 = Asciz       Lde/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeLocal;;
const #15 = Asciz       <init>;
const #16 = Asciz       ()V;
const #17 = Asciz       Code;
const #18 = Method      #3.#19; //  java/lang/Object."<init>":()V
const #19 = NameAndType #15:#16;//  "<init>":()V
const #20 = Asciz       LineNumberTable;
const #21 = Asciz       LocalVariableTable;
const #22 = Asciz       this;
const #23 = Asciz       Lde/zeb/control/fw/bl/internal/layerabstraction/GenericBusinessFacadeAdapter;;
const #24 = Asciz       invokeMethod;
const #25 = Asciz       (Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Class;[Ljava/lang/Object;Lde/zeb/control/fw/bl/layerabstraction/context/BusinessFacadeContext;)Ljava/lang/O
bject;;
const #26 = Asciz       Exceptions;
const #27 = class       #28;    //  java/lang/reflect/InvocationTargetException
const #28 = Asciz       java/lang/reflect/InvocationTargetException;
const #29 = Asciz       Signature;
const #30 = Asciz       (Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Class<*>;[Ljava/lang/Object;Lde/zeb/control/fw/bl/layerabstraction/context/BusinessFacadeContext;)Ljava/lan
g/Object;;
const #31 = Method      #1.#32; //  de/zeb/control/fw/bl/internal/layerabstraction/GenericBusinessFacadeAdapter.getFacadeRemote:()Lde/zeb/control/fw/bl/layerabstraction/GenericBusi
nessFacadeRemote;
const #32 = NameAndType #33:#34;//  getFacadeRemote:()Lde/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeRemote;
const #33 = Asciz       getFacadeRemote;
const #34 = Asciz       ()Lde/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeRemote;;
const #35 = InterfaceMethod     #36.#38;        //  de/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeRemote.invokeMethod:(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/
Class;[Ljava/lang/Object;Lde/zeb/control/fw/bl/layerabstraction/context/BusinessFacadeContext;)Ljava/lang/Object;
const #36 = class       #37;    //  de/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeRemote
const #37 = Asciz       de/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeRemote;
const #38 = NameAndType #24:#25;//  invokeMethod:(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Class;[Ljava/lang/Object;Lde/zeb/control/fw/bl/layerabstraction/context/BusinessFa
cadeContext;)Ljava/lang/Object;
const #39 = Method      #1.#40; //  de/zeb/control/fw/bl/internal/layerabstraction/GenericBusinessFacadeAdapter.getFacadeLocal:()Lde/zeb/control/fw/bl/layerabstraction/GenericBusin
essFacadeLocal;
const #40 = NameAndType #41:#42;//  getFacadeLocal:()Lde/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeLocal;
const #41 = Asciz       getFacadeLocal;
const #42 = Asciz       ()Lde/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeLocal;;
const #43 = InterfaceMethod     #44.#38;        //  de/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeLocal.invokeMethod:(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/C
lass;[Ljava/lang/Object;Lde/zeb/control/fw/bl/layerabstraction/context/BusinessFacadeContext;)Ljava/lang/Object;
const #44 = class       #45;    //  de/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeLocal
const #45 = Asciz       de/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeLocal;
const #46 = class       #47;    //  de/zeb/control/fw/bl/layerabstraction/MethodDelegateException
const #47 = Asciz       de/zeb/control/fw/bl/layerabstraction/MethodDelegateException;
const #48 = String      #49;    //  GenericBusinessFacadeAdapter.exMsg.missingEJBFacadeInstance
const #49 = Asciz       GenericBusinessFacadeAdapter.exMsg.missingEJBFacadeInstance;
const #50 = Method      #51.#53;        //  de/zeb/control/fw/bl/internal/layerabstraction/Messages.getString:(Ljava/lang/String;)Ljava/lang/String;
const #51 = class       #52;    //  de/zeb/control/fw/bl/internal/layerabstraction/Messages
const #52 = Asciz       de/zeb/control/fw/bl/internal/layerabstraction/Messages;
const #53 = NameAndType #54:#55;//  getString:(Ljava/lang/String;)Ljava/lang/String;
const #54 = Asciz       getString;
const #55 = Asciz       (Ljava/lang/String;)Ljava/lang/String;;
const #56 = Method      #46.#57;        //  de/zeb/control/fw/bl/layerabstraction/MethodDelegateException."<init>":(Ljava/lang/String;)V
const #57 = NameAndType #15:#58;//  "<init>":(Ljava/lang/String;)V
const #58 = Asciz       (Ljava/lang/String;)V;
const #59 = Asciz       aBeanName;
const #60 = Asciz       Ljava/lang/String;;
const #61 = Asciz       aMethodName;
const #62 = Asciz       paramTypes;
const #63 = Asciz       [Ljava/lang/Class;;
const #64 = Asciz       aArgs;
const #65 = Asciz       [Ljava/lang/Object;;
const #66 = Asciz       aContext;
const #67 = Asciz       Lde/zeb/control/fw/bl/layerabstraction/context/BusinessFacadeContext;;
const #68 = Asciz       ret;
const #69 = Asciz       afterPropertiesSet;
const #70 = class       #71;    //  java/lang/Exception
const #71 = Asciz       java/lang/Exception;
const #72 = Method      #1.#73; //  de/zeb/control/fw/bl/internal/layerabstraction/GenericBusinessFacadeAdapter.getFacadeHome:()Ljava/lang/Object;
const #73 = NameAndType #74:#75;//  getFacadeHome:()Ljava/lang/Object;
const #74 = Asciz       getFacadeHome;
const #75 = Asciz       ()Ljava/lang/Object;;
const #76 = class       #77;    //  java/lang/IllegalArgumentException
const #77 = Asciz       java/lang/IllegalArgumentException;
const #78 = String      #79;    //  GenericBusinessFacadeAdapter.3
const #79 = Asciz       GenericBusinessFacadeAdapter.3;
const #80 = Method      #76.#57;        //  java/lang/IllegalArgumentException."<init>":(Ljava/lang/String;)V
const #81 = Field       #1.#82; //  de/zeb/control/fw/bl/internal/layerabstraction/GenericBusinessFacadeAdapter.facadeRemote:Lde/zeb/control/fw/bl/layerabstraction/GenericBusinessF
acadeRemote;
const #82 = NameAndType #11:#12;//  facadeRemote:Lde/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeRemote;
const #83 = Field       #1.#84; //  de/zeb/control/fw/bl/internal/layerabstraction/GenericBusinessFacadeAdapter.facadeLocal:Lde/zeb/control/fw/bl/layerabstraction/GenericBusinessFa
cadeLocal;
const #84 = NameAndType #13:#14;//  facadeLocal:Lde/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeLocal;
const #85 = String      #86;    //  GenericBusinessFacadeAdapter.4
const #86 = Asciz       GenericBusinessFacadeAdapter.4;
const #87 = Field       #1.#88; //  de/zeb/control/fw/bl/internal/layerabstraction/GenericBusinessFacadeAdapter.facadeHome:Ljava/lang/Object;
const #88 = NameAndType #9:#10;//  facadeHome:Ljava/lang/Object;
const #89 = Asciz       setFacadeHome;
const #90 = Asciz       (Ljava/lang/Object;)V;
const #91 = Asciz       aFacadeHome;
const #92 = Asciz       setFacadeRemote;
const #93 = Asciz       (Lde/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeRemote;)V;
const #94 = Asciz       aFacadeRemote;
const #95 = Asciz       setFacadeLocal;
const #96 = Asciz       (Lde/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeLocal;)V;
const #97 = Asciz       aFacadeLocal;
const #98 = Asciz       SourceFile;
const #99 = Asciz       GenericBusinessFacadeAdapter.java;

{
public de.zeb.control.fw.bl.internal.layerabstraction.GenericBusinessFacadeAdapter();
  Code:
   Stack=1, Locals=1, Args_size=1
   0:   aload_0
   1:   invokespecial   #18; //Method java/lang/Object."<init>":()V
   4:   return
  LineNumberTable:
   line 31: 0

  LocalVariableTable:
   Start  Length  Slot  Name   Signature
   0      5      0    this       Lde/zeb/control/fw/bl/internal/layerabstraction/GenericBusinessFacadeAdapter;


public java.lang.Object invokeMethod(java.lang.String, java.lang.String, java.lang.Class[], java.lang.Object[], de.zeb.control.fw.bl.layerabstraction.context.BusinessFacadeContext)
   throws java.lang.reflect.InvocationTargetException;
  Exceptions:
   throws java.lang.reflect.InvocationTargetException  Signature: length = 0x2
   00 1E
  Code:
   Stack=6, Locals=7, Args_size=6
   0:   aload_0
   1:   invokevirtual   #31; //Method getFacadeRemote:()Lde/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeRemote;
   4:   ifnull  28
   7:   aload_0
   8:   invokevirtual   #31; //Method getFacadeRemote:()Lde/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeRemote;
   11:  aload_1
   12:  aload_2
   13:  aload_3
   14:  aload   4
   16:  aload   5
   18:  invokeinterface #35,  6; //InterfaceMethod de/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeRemote.invokeMethod:(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/C
lass;[Ljava/lang/Object;Lde/zeb/control/fw/bl/layerabstraction/context/BusinessFacadeContext;)Ljava/lang/Object;
   23:  astore  6
   25:  goto    69
   28:  aload_0
   29:  invokevirtual   #39; //Method getFacadeLocal:()Lde/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeLocal;
   32:  ifnull  56
   35:  aload_0
   36:  invokevirtual   #39; //Method getFacadeLocal:()Lde/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeLocal;
   39:  aload_1
   40:  aload_2
   41:  aload_3
   42:  aload   4
   44:  aload   5
   46:  invokeinterface #43,  6; //InterfaceMethod de/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeLocal.invokeMethod:(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Cl
ass;[Ljava/lang/Object;Lde/zeb/control/fw/bl/layerabstraction/context/BusinessFacadeContext;)Ljava/lang/Object;
   51:  astore  6
   53:  goto    69
   56:  new     #46; //class de/zeb/control/fw/bl/layerabstraction/MethodDelegateException
   59:  dup
   60:  ldc     #48; //String GenericBusinessFacadeAdapter.exMsg.missingEJBFacadeInstance
   62:  invokestatic    #50; //Method de/zeb/control/fw/bl/internal/layerabstraction/Messages.getString:(Ljava/lang/String;)Ljava/lang/String;
   65:  invokespecial   #56; //Method de/zeb/control/fw/bl/layerabstraction/MethodDelegateException."<init>":(Ljava/lang/String;)V
   68:  athrow
   69:  aload   6
   71:  areturn
  LineNumberTable:
   line 43: 0
   line 45: 7
   line 50: 28
   line 51: 35
   line 53: 56
   line 54: 60
   line 53: 65
   line 57: 69

  LocalVariableTable:
   Start  Length  Slot  Name   Signature
   0      72      0    this       Lde/zeb/control/fw/bl/internal/layerabstraction/GenericBusinessFacadeAdapter;
   0      72      1    aBeanName       Ljava/lang/String;
   0      72      2    aMethodName       Ljava/lang/String;
   0      72      3    paramTypes       [Ljava/lang/Class;
   0      72      4    aArgs       [Ljava/lang/Object;
   0      72      5    aContext       Lde/zeb/control/fw/bl/layerabstraction/context/BusinessFacadeContext;
   25      3      6    ret       Ljava/lang/Object;
   53      3      6    ret       Ljava/lang/Object;
   69      3      6    ret       Ljava/lang/Object;


public void afterPropertiesSet()   throws java.lang.Exception;
  Exceptions:
   throws java.lang.Exception  Code:
   Stack=3, Locals=1, Args_size=1
   0:   aload_0
   1:   invokevirtual   #72; //Method getFacadeHome:()Ljava/lang/Object;
   4:   ifnonnull       20
   7:   new     #76; //class java/lang/IllegalArgumentException
   10:  dup
   11:  ldc     #78; //String GenericBusinessFacadeAdapter.3
   13:  invokestatic    #50; //Method de/zeb/control/fw/bl/internal/layerabstraction/Messages.getString:(Ljava/lang/String;)Ljava/lang/String;
   16:  invokespecial   #80; //Method java/lang/IllegalArgumentException."<init>":(Ljava/lang/String;)V
   19:  athrow
   20:  aload_0
   21:  invokevirtual   #72; //Method getFacadeHome:()Ljava/lang/Object;
   24:  instanceof      #36; //class de/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeRemote
   27:  ifeq    44
   30:  aload_0
   31:  aload_0
   32:  invokevirtual   #72; //Method getFacadeHome:()Ljava/lang/Object;
   35:  checkcast       #36; //class de/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeRemote
   38:  putfield        #81; //Field facadeRemote:Lde/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeRemote;
   41:  goto    81
   44:  aload_0
   45:  invokevirtual   #72; //Method getFacadeHome:()Ljava/lang/Object;
   48:  instanceof      #44; //class de/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeLocal
   51:  ifeq    68
   54:  aload_0
   55:  aload_0
   56:  invokevirtual   #72; //Method getFacadeHome:()Ljava/lang/Object;
   59:  checkcast       #44; //class de/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeLocal
   62:  putfield        #83; //Field facadeLocal:Lde/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeLocal;
   65:  goto    81
   68:  new     #76; //class java/lang/IllegalArgumentException
   71:  dup
   72:  ldc     #85; //String GenericBusinessFacadeAdapter.4
   74:  invokestatic    #50; //Method de/zeb/control/fw/bl/internal/layerabstraction/Messages.getString:(Ljava/lang/String;)Ljava/lang/String;
   77:  invokespecial   #80; //Method java/lang/IllegalArgumentException."<init>":(Ljava/lang/String;)V
   80:  athrow
   81:  return
  LineNumberTable:
   line 64: 0
   line 65: 7
   line 78: 20
   line 79: 30
   line 80: 44
   line 81: 54
   line 83: 68
   line 86: 81

  LocalVariableTable:
   Start  Length  Slot  Name   Signature
   0      82      0    this       Lde/zeb/control/fw/bl/internal/layerabstraction/GenericBusinessFacadeAdapter;


public java.lang.Object getFacadeHome();
  Code:
   Stack=1, Locals=1, Args_size=1
   0:   aload_0
   1:   getfield        #87; //Field facadeHome:Ljava/lang/Object;
   4:   areturn
  LineNumberTable:
   line 92: 0

  LocalVariableTable:
   Start  Length  Slot  Name   Signature
   0      5      0    this       Lde/zeb/control/fw/bl/internal/layerabstraction/GenericBusinessFacadeAdapter;


public void setFacadeHome(java.lang.Object);
  Code:
   Stack=2, Locals=2, Args_size=2
   0:   aload_0
   1:   aload_1
   2:   putfield        #87; //Field facadeHome:Ljava/lang/Object;
   5:   return
  LineNumberTable:
   line 99: 0
   line 100: 5

  LocalVariableTable:
   Start  Length  Slot  Name   Signature
   0      6      0    this       Lde/zeb/control/fw/bl/internal/layerabstraction/GenericBusinessFacadeAdapter;
   0      6      1    aFacadeHome       Ljava/lang/Object;


public de.zeb.control.fw.bl.layerabstraction.GenericBusinessFacadeRemote getFacadeRemote();
  Code:
   Stack=1, Locals=1, Args_size=1
   0:   aload_0
   1:   getfield        #81; //Field facadeRemote:Lde/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeRemote;
   4:   areturn
  LineNumberTable:
   line 106: 0

  LocalVariableTable:
   Start  Length  Slot  Name   Signature
   0      5      0    this       Lde/zeb/control/fw/bl/internal/layerabstraction/GenericBusinessFacadeAdapter;


public void setFacadeRemote(de.zeb.control.fw.bl.layerabstraction.GenericBusinessFacadeRemote);
  Code:
   Stack=2, Locals=2, Args_size=2
   0:   aload_0
   1:   aload_1
   2:   putfield        #81; //Field facadeRemote:Lde/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeRemote;
   5:   return
  LineNumberTable:
   line 113: 0
   line 114: 5

  LocalVariableTable:
   Start  Length  Slot  Name   Signature
   0      6      0    this       Lde/zeb/control/fw/bl/internal/layerabstraction/GenericBusinessFacadeAdapter;
   0      6      1    aFacadeRemote       Lde/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeRemote;


public de.zeb.control.fw.bl.layerabstraction.GenericBusinessFacadeLocal getFacadeLocal();
  Code:
   Stack=1, Locals=1, Args_size=1
   0:   aload_0
   1:   getfield        #83; //Field facadeLocal:Lde/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeLocal;
   4:   areturn
  LineNumberTable:
   line 120: 0

  LocalVariableTable:
   Start  Length  Slot  Name   Signature
   0      5      0    this       Lde/zeb/control/fw/bl/internal/layerabstraction/GenericBusinessFacadeAdapter;


public void setFacadeLocal(de.zeb.control.fw.bl.layerabstraction.GenericBusinessFacadeLocal);
  Code:
   Stack=2, Locals=2, Args_size=2
   0:   aload_0
   1:   aload_1
   2:   putfield        #83; //Field facadeLocal:Lde/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeLocal;
   5:   return
  LineNumberTable:
   line 127: 0
   line 128: 5

  LocalVariableTable:
   Start  Length  Slot  Name   Signature
   0      6      0    this       Lde/zeb/control/fw/bl/internal/layerabstraction/GenericBusinessFacadeAdapter;
   0      6      1    aFacadeLocal       Lde/zeb/control/fw/bl/layerabstraction/GenericBusinessFacadeLocal;


}
                
> SerializingCloner can't clone primitive data types 
> ---------------------------------------------------
>
>                 Key: AS7-3959
>                 URL: https://issues.jboss.org/browse/AS7-3959
>             Project: Application Server 7
>          Issue Type: Bug
>          Components: EJB
>    Affects Versions: 7.1.0.Final
>            Reporter: Sebastian Woeste
>            Assignee: jaikiran pai
>              Labels: ejb, jboss-as7
>
> If i try to invoke a method remote the arguments will be cloned by org.jboss.marshalling.cloner.SerializingCloner.
> The SerializingCloner calls the ClassLoaderClassCloner.clone(final Class<?> original) method where an exception will be thrown if the argument is a primitive data type.
> See the forum reference for some more details.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the jboss-jira mailing list