|
本文主要实现不同tomcat服务器之间通过socket通信,数据格式json。
将服务器A的hibernate对象转化为json,传输给服务器B,生成hibernate对象,然后保存到数据库。
1、new 一个线程,用来启动serverSocket,可以用spring中的@PostConstructor自启动。
核心代码如下:
while(true){
socket = serverSocket.accept();
ExecutorService exec = Executor.newCacheThreadPool();
exec.execute (new RunableImpl());
}
2、服务端RunableImpl
核心代码:
//数据较大时可以生成缓存文件,将数据保存到文件
in = new BufferedReader(new InputStreamReader(socket.getInputStream(), "GB2312"));
String line;
while ((line = in.readLine()) != null) {
msg += line;
}
获得json格式的msg后
//转化为List<User>
JSONObject jsonObject = JSONObject.fromObject( msg);
List<User> list = (List<User>)JSONArray.toCollection(jsonObject.getJSONArray("arraydata"),User.Class);
dao.saveAll(list);
//msg格式如下:"{type:USER,arraydata:[{},{}]}"
3、客户端
//list形式的hibernate对象数据转化为json
List<User> list = dao.findAll();
JSONArray jsonArray = JSONArray.fromObject( list);
strMsg = jsonArray.toString();
//发送数据
Socket socket= new Socket (ip,端口);
out = new PrintWriter(socket.getOutputStream(),true);
out.println(strMsg); //数据较大时,可分组传输
out.flush();
out.close(); |
|
|