我想不通过RMI机制而通过Socket来实现这样一个远程方法调用:客户端(发出请求)
请求的内容是一个对象(包括要处理的数据和处理的方法),服务端(处理请求)通过预先定义好的接口持有这个对象,使用传过来的方法处理数据(服务端只有接口而没有具体的方法)。不想通过RMI实现的原因是想自主地控制网络层,而RMI依赖它的网络层实现。
问题的关键是我所知道的java标准对象序列化是不序列化方法的,方法怎么能和数据一起传递到服务端?方法到达服务端以后怎么执行,通过接口还是需要反射机制的配合?我看过一篇<代理模式与Socket联袂演绎远程方法调用的全过程>,它是在服务端预先定义方法,用代理模式通过socket传递一个call来执行服务端上的方法并返回结果。
我的情况很特殊,必须自己控制网络传输,并且服务端必须能执行一个客户端才有具体实现的方法。请高人指点,谢谢!
请求的内容是一个对象(包括要处理的数据和处理的方法),服务端(处理请求)通过预先定义好的接口持有这个对象,使用传过来的方法处理数据(服务端只有接口而没有具体的方法)。不想通过RMI实现的原因是想自主地控制网络层,而RMI依赖它的网络层实现。
问题的关键是我所知道的java标准对象序列化是不序列化方法的,方法怎么能和数据一起传递到服务端?方法到达服务端以后怎么执行,通过接口还是需要反射机制的配合?我看过一篇<代理模式与Socket联袂演绎远程方法调用的全过程>,它是在服务端预先定义方法,用代理模式通过socket传递一个call来执行服务端上的方法并返回结果。
我的情况很特殊,必须自己控制网络传输,并且服务端必须能执行一个客户端才有具体实现的方法。请高人指点,谢谢!
http://www.jopener.cn/category/web-services-tools/
然后用class.forname("xxx").newInstance();建立一个空对象。
然后再通过反射将socket传过来的值注入新生成的对象中。
如果你的客户端已经有了所要类的代码,那么就不需要做第一步了...
没看明白什么意思,广告?我不是做J2EE、EJB的,这个程序是基于网络的桌面程序,所以我比较倾向于用socket解决问题,等我用timerri朋友给出的方法实现了,我再来个总结,呵呵,先谢过了,可能晚点结贴。
"并且服务端必须能执行一个客户端才有具体实现的方法。"你参数给客户端去算,算好了在接受结果就可以了
自己实现这个过程.
工作量不小.2.要么就强制使用java的序列化.3.要么就定义xml到java类的映射关系
传递xml
然后根据接收到xml来生成java对象.