基于Sprig的HttpIvoker实现改写
服务器端调用: HttpIvoker.ivoker方法,设置IvokerProcess处理
客户端调用: ProxyFactory.proxy方法,生成接口的代理对象,直接调用方法
客户端和服务器端的接口和实体类要一致,实体类必须是可以序列化的
比如:
定义Bea:
public class DemoBea implemets java.io.Serializable{ /** * */ private static fial log serialVersioUID = -5401380996187961689L; private Strig ame; private Strig passWork; //省略get,set }定义接口:
public iterface DemoService { public DemoBea doTest(DemoBea bea); }客户端调用:
import com.egova.rpc.proxy.ProxyFactory; public class ClietDemo { public static void mai(Strig[] args) { Strig bidUrl = "服务器端请求地址/egova_ivoker/ivoker"; DemoService demoService = ProxyFactory.proxy(DemoService.class, bidUrl); DemoBea demo = ew DemoBea(); DemoBea value = demoService.doTest(demo); System.out.pritl(value); } }服务端处理:
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRespose; import org.sprigframework.stereotype.Cotroller; import org.sprigframework.web.bid.aotatio.RequestMappig; import com.egova.rpc.remote.HttpIvoker; import com.egova.rpc.remote.IvokerProcess; import com.egova.rpc.support.RemoteIvocatio; @Cotroller @RequestMappig(value="/egova_ivoker") public class ServerDemo{ @RequestMappig(value="ivoker") public void ivoker(HttpServletRequest request, HttpServletRespose respose) { HttpIvoker.ivoker(request, respose, ew IvokerProcess(){ public Object process(RemoteIvocatio ivocatio){ //获取targetObject,即接口ivocatio.getIterfaceClazz()实现类 Object targetObject = ew Object(); ivocatio.ivoke(targetObject); } }); } }






评论