- 浏览: 202165 次
- 性别:
- 来自: 青岛
最新评论
-
sunysh005:
界面太丑了,功能没有问题
SWFUpload+commons-fileupload 上传文件 -
liwh1989:
liwh1989 写道
SWFUpload+commons-fileupload 上传文件 -
liwh1989:
...
SWFUpload+commons-fileupload 上传文件 -
liwh1989:
SWFUpload+commons-fileupload 上传文件 -
貌似掉线:
已用上。多谢!
native2ascii的 java实现
// 参考:http://book.csdn.net/bookfiles/269/10026911927.shtml // remote.server.SimpleServer.java package remote.server; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.lang.reflect.Method; import java.net.ServerSocket; import java.net.Socket; import java.util.HashMap; import java.util.Map; import share.call.Call; /** *@date 2010-3-13 下午04:38:44 *@author dycc */ public class SimpleServer { private Map<String,Object> objs = new HashMap<String,Object>(); private ObjectInputStream in; private ObjectOutputStream out; public void service()throws IOException{ ServerSocket server_socket = new ServerSocket(8002); System.out.println("----- server started. -----"); while(true){ try{ Socket socket = server_socket.accept(); // ObjectInputStream 会发生阻塞!! in = new ObjectInputStream(socket.getInputStream()); Call call = (Call)in.readObject(); System.out.println("-- get call [" + call.getClassName() + ":" + call.getMethodName() + "]"); call = invoke(call); out = new ObjectOutputStream(socket.getOutputStream()); out.writeObject(call); out.flush(); } catch(Exception e){ e.printStackTrace(); } finally{ try{ if(in != null){ in.close(); } if(out != null){ out.close(); } } catch(Exception e){ } } } } public Call invoke(Call call){ Object obj = objs.get(call.getClassName()); if(obj == null){ try { obj = Class.forName(call.getClassName()).newInstance(); objs.put(call.getClassName(), obj); } catch (Exception e) { e.printStackTrace(); } } try { Method method = obj.getClass().getMethod( call.getMethodName(), call.getParamTypes()); Object result = method.invoke(obj, call.getParams()); call.setResult(result); } catch (Exception e) { e.printStackTrace(); } return call; } public static void main(String[] args)throws Exception{ SimpleServer server = new SimpleServer(); server.service(); } } // remote.service.HelloService.java package remote.service; import java.util.Date; /** *@date 2010-3-13 下午04:29:29 *@author dycc */ public interface HelloService { public String echo(String msg); public Date getTime(); } // remote.service.HelloServiceImpl.java package remote.service; import java.util.Date; /** *@date 2010-3-13 下午04:30:44 *@author dycc */ public class HelloServiceImpl implements HelloService{ public String echo(String msg) { return "echo:" + msg; } public Date getTime() { return new Date(); } } // share.call.Call.java package share.call; import java.io.Serializable; /** *@date 2010-3-13 下午04:32:04 *@author dycc */ public class Call implements Serializable{ /** * */ private static final long serialVersionUID = 1L; private String className; private String methodName; @SuppressWarnings(value="unchecked") private Class[] paramTypes; private Object[] params; private Object result; public Call(){ } @SuppressWarnings(value="unchecked") public Call(String className,String methodName, Class[] paramTypes,Object[] params){ this.className = className; this.methodName = methodName; this.paramTypes = paramTypes; this.params = params; } public String getClassName() { return className; } public void setClassName(String className) { this.className = className; } public String getMethodName() { return methodName; } public void setMethodName(String methodName) { this.methodName = methodName; } @SuppressWarnings(value="unchecked") public Class[] getParamTypes() { return paramTypes; } @SuppressWarnings(value="unchecked") public void setParamTypes(Class[] paramTypes) { this.paramTypes = paramTypes; } public Object[] getParams() { return params; } public void setParams(Object[] params) { this.params = params; } public Object getResult() { return result; } public void setResult(Object result) { this.result = result; } public String toString(){ StringBuffer sb = new StringBuffer(); sb.append("{className=" + className); sb.append(",methodName=" + methodName); sb.append(",result=" + result); sb.append("}"); return sb.toString(); } } // locale.client.SimpleClient.java package locale.client; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.Socket; import share.call.Call; /** *@date 2010-3-13 下午04:58:48 *@author dycc */ public class SimpleClient { private ObjectInputStream in; private ObjectOutputStream out; public void invoke(){ try{ Socket socket = new Socket("localhost",8002); out = new ObjectOutputStream(socket.getOutputStream()); Call call = new Call("remote.service.HelloServiceImpl", "getTime",new Class[]{},new Object[]{}); out.writeObject(call); out.flush(); // ObjectInputStream 会发生阻塞!! in = new ObjectInputStream(socket.getInputStream()); call = (Call)in.readObject(); System.out.println("result=" + call.getResult()); } catch(Exception e){ e.printStackTrace(); } finally{ try{ if(in != null){ in.close(); } if(out != null){ out.close(); } } catch(Exception e){ } } } public static void main(String[] args){ SimpleClient client = new SimpleClient(); client.invoke(); } }
发表评论
-
ubuntu 里安装 db2
2011-04-11 16:17 5257# 下载 http://www-01.ibm.com ... -
几个小算法题
2011-04-03 13:40 1118/** * 数字三角 * 当 n == 7 时输 ... -
获取 SkyDrive 的文件外链固定地址
2011-04-03 11:47 1443javascript: var id = window.se ... -
常用知识记录
2011-04-02 17:25 1606sql 部分 1. 查询已创建的数据库 // ... -
Java 与 C++ 在表达式运算上的一点异同
2010-12-25 00:24 12641. java public class Main{ ... -
SWFUpload+commons-fileupload 上传文件
2010-12-17 19:20 10968说明:使用SWFUpload 上传文件,可在客户端校验文件大小 ... -
在 ubuntu 下搭建 ftp 服务端 [ vsftpd ]
2010-11-16 20:11 1873vsftpd 1. 安装 ftp 服务端 ... -
Tomcat 常用操作
2010-11-16 13:47 2642tomcat 常用操作 1. 安装 tomcat 1.1 ... -
在 ubuntu 下搭建 svn 服务端
2010-11-13 20:43 2972参考: http://wiki.ubunt ... -
正则表达式常用功能代码
2010-11-02 19:37 12951. 校验 /** * 校验 email * @pa ... -
三种常见的排序方法[选择,冒泡,快速]
2010-10-17 17:51 1093public class Main{ public ... -
Filter 常用代码
2010-10-12 22:50 12021. 压缩 Filter // GZIPFilter.jav ... -
log4j 常用配置代码
2010-10-12 14:35 1370Reference library: commons-log ... -
计算组合数并输出
2010-09-14 09:35 5584问题描述:计算一组数据的组合数并输出 例如:输入1,2,3 ... -
native2ascii的 java实现
2010-09-13 13:49 3865描述:简单模拟JDK自带的 native2ascii.exe ... -
计算全排列
2010-09-13 09:04 1577问题描述:计算一组数 ... -
apache commons dbcp 学习与使用
2010-06-18 20:37 1580类结构 org |_demo |_d ... -
Java常用功能代码
2010-06-10 14:33 58771. 屏幕截图 public static ... -
一个关于组合数的问题
2010-05-03 20:09 11591. 题目来源 未解之谜俱 ... -
Java常用功能代码[ 2 ]
2010-04-27 17:35 13871. 加载所有 jar 包中同名的配置文件 /** * ...
相关推荐
java远程方法调用,可以实现远程调用,仅作参考
Eclipse 插件RMI Plug-in for Eclipse 2.0 博文链接:https://robinjie.iteye.com/blog/34606
java 远程过程调用例子 先 java Projram 然后 打开一个新的控制台 java Program2
rmi java 远程方法调用
Java远程方法调用.pdf
Java远程方法调用是一种分布式系统技术。它允许一个java虚拟机调用运行在网络中另一个地方的JVM上的对象方法. 这种技术对开发大型系统尤为重要,因为它使得在多台机器上分布资源和处理负载的想法成为可能。
适用于b/s,c/s的远程方法调用组建,android开发也适用
【完整课程列表】 java教学大纲.doc 优质精品课程推荐 武汉...优质精品课程推荐 武汉大学Java语言程序设计教程 第11章 java远程方法调用.ppt 优质精品课程推荐 武汉大学Java语言程序设计教程 序论 面向对象的概念.ppt
讲述利用java rmi进行分布式应用开发的相关知识
Java RMI 远程方法调用的一个小例子
远程方法调用 客户端调用服务端的方法 客户端和服务端代码都有
三种方式实现java远程调用(rmi) 方式一:原始方式 方式二:spring 方式三:jndi 解压,放到myeclipse上可用
Java 远程方法调用 (Java RMI) 是一个 Java API,它执行远程过程调用 (RPC) 的面向对象等价物,支持序列化 Java 类的直接传输和分布式垃圾收集。 远程过程调用:消息传递远程过程调用 (RPC) 是一种允许程序调用位于...
rmi 远程方法调用 客户端
本文档主要讲述的是Java 远程方法调用RMI参数详解;根据RMI参数意义,可以归结为以下几点,我们可以根据这几点通过优化GC, 网络等待,流传输协议(http/rmi special socket)等方面来优化RMI。
绍Java远程方法调用实践
Java RMI远程方法调用详解-例子代码,例子详解在:http://blog.csdn.net/guyuealian/article/details/51992182