当前位置: 技术问答>java相关
500分求解决方案
来源: 互联网 发布时间:2015-08-25
本文导语: 由于系统采用分布式结构,所以必须要做一数据服务程序为分布在不同机器上的子系统提供远程数据服务,数据库为oracle8。现在的问题是oracel提供的connection是非序列化的,所以我想将数据服务程序作成rmi 服务时运...
由于系统采用分布式结构,所以必须要做一数据服务程序为分布在不同机器上的子系统提供远程数据服务,数据库为oracle8。现在的问题是oracel提供的connection是非序列化的,所以我想将数据服务程序作成rmi 服务时运行出错。首先要说明的是我没有将connection传到客户端,我只是将运行结果返回客户端。
请问各位大侠有何高招,如能解决问题,另开贴相送400分。
请问各位大侠有何高招,如能解决问题,另开贴相送400分。
|
上面的方法更可笑,别人girl要的就是connection,而你却把它弄掉了:-}
|
Connection跟rmi根本没关系,也互不冲突。你肯定是没弄对。
你为什么要让testInterface implements Serializable?
Remote对象根本就不必Serializable. 只有要传到客户端的对象才要Serializable.
你声明rmiserver是Serializable的,这就等于要求它的所有成员都是Serializable的,而Connection很自然的不是Serializable的,当然不对啦。
你明不明白自己在做什么呀?rmi虽说不难,但连基本的道理还没搞清楚就写程序,不是要命吗?还是找个tutorial仔细看一下rmi的程序应该怎么做吧。
或者,先不管什么rmi, 只实现功能。实现了之后,做remote server只是小菜一碟,写个wrapper就ok了。
你这简化了的代码, 连最关键的extends UnicastRemoteObject都漏了,还不定漏了什么了呢,怎么试啊?
你为什么要让testInterface implements Serializable?
Remote对象根本就不必Serializable. 只有要传到客户端的对象才要Serializable.
你声明rmiserver是Serializable的,这就等于要求它的所有成员都是Serializable的,而Connection很自然的不是Serializable的,当然不对啦。
你明不明白自己在做什么呀?rmi虽说不难,但连基本的道理还没搞清楚就写程序,不是要命吗?还是找个tutorial仔细看一下rmi的程序应该怎么做吧。
或者,先不管什么rmi, 只实现功能。实现了之后,做remote server只是小菜一碟,写个wrapper就ok了。
你这简化了的代码, 连最关键的extends UnicastRemoteObject都漏了,还不定漏了什么了呢,怎么试啊?
|
还没完啊,这个解决方案
PEgirl本来的rmi三大件都没弄好,我们怎么调试啊
另外一看到江接口也序列化更是不可理喻
其实思想是简单的,但实现起来还是要规规矩矩的!
PEgirl本来的rmi三大件都没弄好,我们怎么调试啊
另外一看到江接口也序列化更是不可理喻
其实思想是简单的,但实现起来还是要规规矩矩的!
|
你重新包装的Result的有问题,你应该直接把JDBC中的Result的内容都读取后自己生成可以序列化的结果集,断开connect就可以了
|
做一个ConnectionFactory类,每次在函数中调用它从连接池中取一个connection,这样既不会有序列化错误,也不会每次都生成一个connection.
|
可能应该写一个和rmi完全隔离开的包来访问数据库,另一个包得到结果,处理rmi相关的事宜。
|
rmi处理来的请求,把其他数据库操作装在一个包里,返回结果
|
没appserver?有webserver吧?
通过servlet之间的通信来实现
机器a为子系统,机器b为数据服务
所有的数据处理在b上进行
a将sql语句传到b,如果是查询,b得到结果集,并且将ResultSet转化成可序列化的对象,放在这个时候已经存在的a和b之间的session中,b然后通知a,a从session中取值,断开session
另外每一次数据服务处理完毕关掉连接!!!资源宝贵,你还可以写一个(找一个)数据库连接的连接池来优化连接
通过servlet之间的通信来实现
机器a为子系统,机器b为数据服务
所有的数据处理在b上进行
a将sql语句传到b,如果是查询,b得到结果集,并且将ResultSet转化成可序列化的对象,放在这个时候已经存在的a和b之间的session中,b然后通知a,a从session中取值,断开session
另外每一次数据服务处理完毕关掉连接!!!资源宝贵,你还可以写一个(找一个)数据库连接的连接池来优化连接
|
仔细看了一下PEgirl的代码,解决UnicastRemoteObject问题之后已经调试通过,虽然我用的不是oracle的驱动,但这驱动也没有实现Serializable。
现在确认问题一定出在其他地方。
现在确认问题一定出在其他地方。