救命啊。。。EJB中java.lang.ClassCastException的异常
请大家看看这是什么问题~~
我在JBuilder里对一张表(stuffandduty)建立了:
EBean-->生成了Stuffandduty.java 、StuffanddutyBean.java 、 StuffanddutyHome.java三个文件。(interface为local)
DTO-->生成了StuffanddutyDtoAssembler.java 和 StuffanddutyDto.java两个文件。(已进行了序列化)
SBean--->StuffanddutySBHome.java 、 StuffanddutySB.java 、StuffanddutySBBean.java三个文件。(interface为remote)
其中加了写函数。。。
建立完这些之后我deploy了一下,重新rebuild了我的project
在主函数中调用的方法为:
StuffanddutySB sdSB = null;
Context ctx = GetContext.getContext();
// StuffanddutySBHome sdSBHome = (StuffanddutySBHome) ctx.lookup("StuffanddutySB");
// sdSB = sdSBHome.create();//第一种方法
Object ref = ctx.lookup("StuffanddutySB");
*** StuffanddutySBHome sdSBHome = (StuffanddutySBHome)PortableRemoteObject.narrow(ref, StuffanddutySBHome.class);
sdSB = sdSBHome.create();
单步执行,到***出现异常:
java.lang.ClassCastException
at com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:229)
at javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:137)
at qesuite.plugin.tqm.QPlan.QplanGUI.BasicInforPanel.loadData(BasicInforPanel.java:143)
at qesuite.plugin.tqm.QPlan.QplanGUI.BasicInforPanel.<init>(BasicInforPanel.java:122)
at qesuite.plugin.tqm.QPlan.QplanGUI.QPlanFrame.<init>(QPlanFrame.java:26)
at qesuite.plugin.tqm.QPlan.management.PlanList.actionPerformed(PlanList.java:121)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
at java.awt.Component.processMouseEvent(Component.java:5488)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1774)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
Caused by: java.lang.ClassCastException: $Proxy24
at com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:212)
... 29 more
尝试修改过的方法:
1.$JBOSS_HOME/server/default/deploy/jbossweb- tomcat55.sar/META-INF目录下的jboss-service.xml文件,UseJBossWebLoader的属性值为 true
2.网上有关资料说:StuffanddutySBHome sdSBHome = (StuffanddutySBHome)PortableRemoteObject.narrow(ref, StuffanddutySBHome.class);
这句话强制类型转换的对象不对。那应该怎么修改?我做的这个东东是嵌在一个大工程里面,其他的EJB的调用方法如上就能够正确执行。。。
3.将ejb和工程里面的上面相应.class全部删掉,重新生成,但是还是不行。。。。
请各位帮帮忙,看一下,我已经苦恼两天了。。。。