Another issue is why doesn't the Container class implement
ContainerInvokerContainer? This
is the assumed behavior as evidenced by the prevelance of unsafe downcasts
scattered
throughout the container invoker code:

jboss 713>grep -nr '(ContainerInvokerContainer)container' .
./ejb/plugins/jrmp/server/JRMPContainerInvoker.java:154:      Method[]
methods =
((ContainerInvokerContainer)container).getRemoteClass().getMethods();
./ejb/plugins/jrmp/server/JRMPContainerInvoker.java:159:      methods =
((ContainerInvokerContainer)container).getHomeClass().getMethods();
./ejb/plugins/jrmp/server/JRMPContainerInvoker.java:205:
((ContainerInvokerContainer)container).getRemoteClass(),
./ejb/plugins/jrmp/server/JRMPContainerInvoker.java:206:
((ContainerInvokerContainer)container).getHomeClass(),
./ejb/plugins/jrmp/server/JRMPContainerInvoker.java:214:
((ContainerInvokerContainer)container).getRemoteClass(),
./ejb/plugins/jrmp/server/JRMPContainerInvoker.java:215:
((ContainerInvokerContainer)container).getHomeClass(),
./ejb/plugins/jrmp/server/JRMPContainerInvoker.java:222:
((ContainerInvokerContainer)container).getRemoteClass(),
./ejb/plugins/jrmp/server/JRMPContainerInvoker.java:223:
((ContainerInvokerContainer)container).getHomeClass(),
./ejb/plugins/jrmp/server/JRMPContainerInvoker.java:252:
((ContainerInvokerContainer)container).getContainerInvoker().getEJBHome());
./ejb/plugins/jrmp/server/JRMPContainerInvoker.java:261:
((ContainerInvokerContainer)container).getContainerInvoker());
./ejb/plugins/jrmp/server/JRMPContainerInvoker.java:377:      if
(!m.getDeclaringClass().isAssignableFrom(((ContainerInvokerContainer)contain
er).getHomeClass())) {
./ejb/plugins/jrmp/server/JRMPContainerInvoker.java:418:      if
(!m.getDeclaringClass().isAssignableFrom(((ContainerInvokerContainer)contain
er).getRemoteClass())) {
./ejb/plugins/jrmp12/server/JRMPContainerInvoker.java:73:      this.home =
(EJBHome)Proxy.newProxyInstance(((ContainerInvokerContainer)container).getHo
meClass().getClassLoader(),
./ejb/plugins/jrmp12/server/JRMPContainerInvoker.java:74:         new
Class[] {((ContainerInvokerContainer)container).getHomeClass(),
handleClass },
./ejb/plugins/jrmp12/server/JRMPContainerInvoker.java:82:
this.statelessObject =
(EJBObject)Proxy.newProxyInstance(((ContainerInvokerContainer)container).get
RemoteClass().getClassLoader(),
./ejb/plugins/jrmp12/server/JRMPContainerInvoker.java:83:            new
Class[] { ((ContainerInvokerContainer)container).getRemoteClass() } ,
./ejb/plugins/jrmp12/server/JRMPContainerInvoker.java:120:      return
(EJBObject)Proxy.newProxyInstance(((ContainerInvokerContainer)container).get
RemoteClass().getClassLoader(),
./ejb/plugins/jrmp12/server/JRMPContainerInvoker.java:121:
new Class[] { ((ContainerInvokerContainer)container).getRemoteClass() },
./ejb/plugins/jrmp12/server/JRMPContainerInvoker.java:127:      return
(EJBObject)Proxy.newProxyInstance(((ContainerInvokerContainer)container).get
RemoteClass().getClassLoader(),
./ejb/plugins/jrmp12/server/JRMPContainerInvoker.java:128:
new Class[] { ((ContainerInvokerContainer)container).getRemoteClass() },
./ejb/plugins/jrmp12/server/JRMPContainerInvoker.java:138:
list.add(Proxy.newProxyInstance(((ContainerInvokerContainer)container).getRe
moteClass().getClassLoader(),
./ejb/plugins/jrmp12/server/JRMPContainerInvoker.java:139:
new Class[] { ((ContainerInvokerContainer)container).getRemoteClass() },
./ejb/plugins/jrmp13/server/JRMPContainerInvoker.java:71:      this.home =
(EJBHome)Proxy.newProxyInstance(((ContainerInvokerContainer)container).getHo
meClass().getClassLoader(),
./ejb/plugins/jrmp13/server/JRMPContainerInvoker.java:72:         new
Class[] {((ContainerInvokerContainer)container).getHomeClass(),
handleClass },
./ejb/plugins/jrmp13/server/JRMPContainerInvoker.java:80:
this.statelessObject =
(EJBObject)Proxy.newProxyInstance(((ContainerInvokerContainer)container).get
RemoteClass().getClassLoader(),
./ejb/plugins/jrmp13/server/JRMPContainerInvoker.java:81:            new
Class[] { ((ContainerInvokerContainer)container).getRemoteClass() } ,
./ejb/plugins/jrmp13/server/JRMPContainerInvoker.java:118:      return
(EJBObject)Proxy.newProxyInstance(((ContainerInvokerContainer)container).get
RemoteClass().getClassLoader(),
./ejb/plugins/jrmp13/server/JRMPContainerInvoker.java:119:
new Class[] { ((ContainerInvokerContainer)container).getRemoteClass() },
./ejb/plugins/jrmp13/server/JRMPContainerInvoker.java:125:      return
(EJBObject)Proxy.newProxyInstance(((ContainerInvokerContainer)container).get
RemoteClass().getClassLoader(),
./ejb/plugins/jrmp13/server/JRMPContainerInvoker.java:126:
new Class[] { ((ContainerInvokerContainer)container).getRemoteClass() },
./ejb/plugins/jrmp13/server/JRMPContainerInvoker.java:136:
list.add(Proxy.newProxyInstance(((ContainerInvokerContainer)container).getRe
moteClass().getClassLoader(),
./ejb/plugins/jrmp13/server/JRMPContainerInvoker.java:137:
new Class[] { ((ContainerInvokerContainer)container).getRemoteClass() },
./ejb/plugins/jrmp13/server/JRMPContainerInvoker.java:174:       this.home =
(EJBHome)Proxy.newProxyInstance(((ContainerInvokerContainer)container).getHo
meClass().getClassLoader(),
./ejb/plugins/jrmp13/server/JRMPContainerInvoker.java:175:           new
Class[] { ((ContainerInvokerContainer)container).getHomeClass(),
handleClass },
./ejb/plugins/jrmp13/server/JRMPContainerInvoker.java:183:
this.statelessObject =
(EJBObject)Proxy.newProxyInstance(((ContainerInvokerContainer)container).get
RemoteClass().getClassLoader(),
./ejb/plugins/jrmp13/server/JRMPContainerInvoker.java:184:               new
Class[] { ((ContainerInvokerContainer)container).getRemoteClass() },
./ejb/plugins/jrmp13/server/JRMPContainerInvoker.java:220:      return
(EJBObject)Proxy.newProxyInstance(((ContainerInvokerContainer)container).get
RemoteClass().getClassLoader(),
./ejb/plugins/jrmp13/server/JRMPContainerInvoker.java:221:
                     new Class[] {
((ContainerInvokerContainer)container).getRemoteClass() },
./ejb/plugins/jrmp13/server/JRMPContainerInvoker.java:227:      return
(EJBObject)Proxy.newProxyInstance(((ContainerInvokerContainer)container).get
RemoteClass()
.getClassLoader(),
./ejb/plugins/jrmp13/server/JRMPContainerInvoker.java:228:
                     new Class[] {
((ContainerInvokerContainer)container).getRemoteClass() },
./ejb/plugins/jrmp13/server/JRMPContainerInvoker.java:238:
list.add(Proxy.newProxyInstance(((ContainerInvokerContainer)container).getRe
moteClass().getClassLoader(),
./ejb/plugins/jrmp13/server/JRMPContainerInvoker.java:239:
                     new Class[] {
((ContainerInvokerContainer)container).getRemoteClass() },
./ejb/plugins/local/BaseLocalContainerInvoker.java:113:      if
(((ContainerInvokerContainer)container).getLocalClass() == null)
./ejb/plugins/local/BaseLocalContainerInvoker.java:125:      Method[]
methods =
((ContainerInvokerContainer)container).getLocalClass().getMethods();
./ejb/plugins/local/BaseLocalContainerInvoker.java:130:      methods =
((ContainerInvokerContainer)container).getLocalHomeClass().getMethods();
./ejb/plugins/local/BaseLocalContainerInvoker.java:139:         Class
localHome = ((ContainerInvokerContainer)container).getLocalHomeClass();
./ejb/plugins/local/BaseLocalContainerInvoker.java:172:         Class
localHome = ((ContainerInvokerContainer)container).getLocalHomeClass();


_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to