实现两个独立服务器之间的通信
2013-01-13 14:26
267 查看
在实施项目的过程中,一个项目一般是不会只是架构在一个服务器上,针对项目的各个部分分布在各自独立的服务器中。
例如手机网游的服务器架构:
View Code
本人技术水平不足,希望各位朋友予以指点,共同进步,Eamil:zhong678*yeah.net , QQ:982925115
例如手机网游的服务器架构:
View Code
public void exec(HttpRequest request, HttpResponse response) { // TODO Auto-generated method stub ByteArrayOutputStream bos = null; ObjectOutputStream oos = null; try { ChannelBuffer cb = request.getContent(); byte[] b = cb.array(); ByteArrayInputStream bis = new ByteArrayInputStream(b); ObjectInputStream data = new ObjectInputStream(bis); String className = data.readUTF(); String methodName = data.readUTF(); int count = data.read(); Class c = Class.forName(className); //#debug System.out.println(className + "." + methodName); List<Class> cl = new ArrayList<Class>(); List<Object> vl = new ArrayList<Object>(); for (int i = 0; i < count ; i++) { cl.add((Class) data.readObject()); vl.add(data.readObject()); } Class[] cls = new Class[cl.size()]; cl.toArray(cls); String mk = toMethodKey(className, methodName, cls); Method m = methods.get(mk); if (m == null) { m = c.getMethod(methodName, cls); methods.put(mk, m); } Object[] values = new Object[vl.size()]; vl.toArray(values); Object o = m.invoke(c, values); bos = new ByteArrayOutputStream(); oos = new ObjectOutputStream(bos); oos.writeObject(o); oos.flush(); response.getContent().writeBytes(bos.toByteArray()); cl.clear(); vl.clear(); } catch (Exception e) { e.printStackTrace(); try { response.setStatus(HttpResponseStatus.INTERNAL_SERVER_ERROR);//.setStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR); bos = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(bos); dos.writeUTF(e.getClass() + "." + e.getMessage()); bos.flush(); response.getContent().writeBytes(bos.toByteArray()); bos.close(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } finally { if (oos != null) try { oos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
本人技术水平不足,希望各位朋友予以指点,共同进步,Eamil:zhong678*yeah.net , QQ:982925115
相关文章推荐
- linux下实现两个线程之间的通信
- 使用Intent和Bundle在两个Activity之间进行通信添加上一步按钮实现回退
- linux下实现两个线程之间的通信
- 通过共享内存,实现两个进程A,B之间的通信
- Linux进程间通信-----使用数据报套接字实现两个进程之间的通信
- LINUX 实现两个进程之间的通信
- Android 使用socket实现两个真机之间的通信
- 直接读取进程内存实现两个应用程序之间的通信
- Android Fragment基础之动态添加Fragment 实现两个Fragment之间的通信
- 从跨域和同域两个角度实现多页面之间的通信
- tcp 多路复用实现 两个客户端之间的通信
- VC运用命名管道实现两个进程之间通信的流程
- 串行通信总结(实现两个单片机之间的通信)(很好的例子,跟风进步)
- 如何实现Android两个模拟器之间的通信
- Android 使用socket实现两个真机之间的通信
- MQ实现两个应用系统之间的通信-----实际操作(二)
- Android 使用AIDL实现了两个app之间的通信
- JavaScript实现父子两个窗口之间互相通信
- Linux下的有名管道(06)---使用两个管道实现两个进程之间的通信(手机模式)
- MQ实现两个应用系统之间的通信----理论知识(一)