项目中客户端请求时传送的是一个实现了接口的复杂对象,但在服务端使用或从服务端返回客户端使用时却只能转型为接口使用,转型为实例时报java.lang.ClassCastException,不知其解。我用的是aegis绑定方式
[b]问题补充:[/b]
只能转型为接口还说得过去,但转型为接口后在实现类实现的方法就调用不到了,就好像消失了一样,
比如我定义了一个DataI接口,里面定义了nextPage()方法,在返回实现类里实现了,但返回取得这个接口时调用这个方法时却报错
Exception in thread "main" java.lang.IllegalAccessError: nextPage is not delegated.
at org.apache.cxf.aegis.type.basic.InterfaceInvocationHandler.invoke(InterfaceInvocationHandler.java:57)
at $Proxy37.nextPage(Unknown Source)
at shmc.bass.esb.service.DataServiceClient.main(DataServiceClient.java:85)
动态代理都是要么就是以[color=red]接口[/color]产生要么就是动态产生一个[color=red]子类[/color],
不管哪种方式,都不应该转成具体的实例类
可能在cxf运行过程,自动创建了接口的代理类,这样强制转换成另一个类,就会有问题。
没有仔细去研究cxf的实现,纯属于猜测,很多框架都是这么运作的。