egova_invoker基于Spring的HttpInvoker實現(xiàn)改寫
基于Spring的HttpInvoker實現(xiàn)改寫
服務器端調用: HttpInvoker.invoker 方法,設置InvokerProcess處理
客戶端調用: ProxyFactory.proxy 方法,生成接口的代理對象,直接調用方法
客戶端和服務器端的接口和實體類要一致,實體類必須是可以序列化的
比如:
定義Bean:
public class DemoBean implements java.io.Serializable{
/**
*
*/
private static final long serialVersionUID = -5401380996187961689L;
private String name;
private String passWork;
//省略get,set
}
定義接口:
public interface DemoService {
public DemoBean doTest(DemoBean bean);
}
客戶端調用:
import com.egova.rpc.proxy.ProxyFactory;
public class ClientDemo {
public static void main(String[] args) {
String bindUrl = "服務器端請求地址/egova_invoker/invoker";
DemoService demoService = ProxyFactory.proxy(DemoService.class, bindUrl);
DemoBean demo = new DemoBean();
DemoBean value = demoService.doTest(demo);
System.out.println(value);
}
}
服務端處理:
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.egova.rpc.remote.HttpInvoker;
import com.egova.rpc.remote.InvokerProcess;
import com.egova.rpc.support.RemoteInvocation;
@Controller
@RequestMapping(value="/egova_invoker")
public class ServerDemo{
@RequestMapping(value="invoker")
public void invoker(HttpServletRequest request, HttpServletResponse response) {
HttpInvoker.invoker(request, response, new InvokerProcess(){
public Object process(RemoteInvocation invocation){
//獲取targetObject,即接口invocation.getInterfaceClazz()實現(xiàn)類
Object targetObject = new Object();
invocation.invoke(targetObject);
}
});
}
}評論
圖片
表情
