论坛首页 Java企业应用论坛

两个系统之间的通讯问题

浏览 12698 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-10-27  
Ivan Li 写道
8000多条记录呢,http中get方法url的大小是有限制的,好像是128k,我觉得字符串的不可行

对象序列化后用http传送
0 请登录后投票
   发表时间:2006-10-27  
我们这个项目有类似的应用
我们这个是中间用一个FTP中转  一边写文件  一边读文件

这个是客户定下的
0 请登录后投票
   发表时间:2006-10-27  
数据放到memcache里面  通过webservice提供访问接口
0 请登录后投票
   发表时间:2006-10-28  
直接用Hessian啊,几个POJO直接在HTTP上传过去,很简单
0 请登录后投票
   发表时间:2006-10-29  
这样的业务是否该使用消息驱动POJO
0 请登录后投票
   发表时间:2006-10-29  
目前直接用http传递序列化的java对象,效果还可以
下面是我的实现过程
服务器端程序主要代码
TaskListenerServlet.java
public void init() throws ServletException {
	TimerTask myTask = new MyTimerTask();
	myTimer = new Timer();
	long startMin=60;
	long intervalMin=60;
	myTimer.schedule(myTask, startMin*1000, intervalMin*1000);
}

MyTimerTask类里的run()方法主要代码
try {
	// 设置网络输出流,idcServletAddress为客户端的servlet地址
	URL url = new URL(idcServletAddress);
	URLConnection uc = url.openConnection();
	uc.setDoOutput(true);
	uc.setDoInput(true);
	uc.setUseCaches(false);
	uc.setRequestProperty("Content-type", "application/octet-stream");
	ObjectOutputStream requestout = new ObjectOutputStream(uc.getOutputStream());
	//发送给客户端的servlet
	IDCInfoBean idcbean = new IDCInfoBean();
	idcbean.setIdc(idc);
	requestout.writeObject(idcbean);
	requestout.flush();
	requestout.close();
	//获取返回的二进制对象流
	ObjectInputStream responsein = new ObjectInputStream(uc.getInputStream());
	//还原
	TransProgramList tpl=  (TransProgramList) responsein.readObject();
	//把数据保存到服务器端数据库里
	CollectTaskService.executeTask(idc , tpl);
	responsein.close();
}catch (Exception e) {
      throw e;
}
 

客户端servlet程序主要代码
public void service(ServletRequest request, ServletResponse response) throws
    ServletException, IOException {
        //封装用于返回的对象输出流         
	ObjectOutputStream out = new ObjectOutputStream(response.getOutputStream());     
	//封装用于接收的对象输入流     
	ObjectInputStream in = new ObjectInputStream(request.getInputStream());     
	IDCInfoBean idcBean=new IDCInfoBean();     
	//按指定类的格式读取对象输入流中的内容     
	try {        
		idcBean=(IDCInfoBean)in.readObject();         
	}catch (Exception e ){
		System.out.println(e.toString());
		//
	}
	String idc = idcBean.getIdc();
	//得到客户端所有节目信息
	List programList =CollectService.collectProgram(idc) ;
	List multiList =CollectService.collectMultiProgram(idc) ;
	//把结果封装到序列化对象里
	TransProgramList tpl = new TransProgramList();
	tpl.setProgramList(programList);
	tpl.setMultiList(multiList);
	//发送对象
	out.writeObject(tpl);    
}    

0 请登录后投票
   发表时间:2006-10-29  
1、对于问题3,比较简单,URL就可以搞定;
2、传递大数据量,用http传递序列化java对象,没有问题;当然你的客户端和服务器端都要是java实现;
3、计划任务可以使用Quartz来完成。
0 请登录后投票
   发表时间:2006-10-30  
可以看看ICE
www.zeroc.com
不过,他使用的是双协议,这个可能得考虑。
0 请登录后投票
   发表时间:2006-11-01  
通过http传送的类(序列化的类),除了属性和get,set方法,不能包含别的方法,
包含别的方法就出错,这个问题怎么解释?
0 请登录后投票
   发表时间:2006-11-06  
用一个中间数据表吧,最简单!!!!!不需要做啥修改
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics