关于rmi的疑惑,请熟悉的朋友指点一下

问题描述

第一我想问的是 调远程的方法时,是把远程的实现类下载到客户端再执行吗,我怎么感觉是这样的,在服务器端写的system.out.println会在客户端输出,在服务器端没出现,在客户端调用的方法时,如果此方法在服务端调用了其它方法时(在客户端没有执行的环境,只能在服务器那执行,如连数据库操作)会在客户端报错,客户端没有这个环境你当然不能执行啊, 我想像的rmi,只要你把服务器方法返回的结果给客户端就行了,至于中间的调用过程怎么拿到客户端去执行啊,求大家说明一下这是什么状况,想不通了下面是部分代码服务接口public interface Service extends Remote{public List<Entity> list(String id,String name);}服务实现public class LiebaoServiceImpl implements Service,Remote,Serializable{/** * uid */private static final long serialVersionUID = 1L;@Overridepublic List<Entity> list(String id,String name) {// TODO Auto-generated method stubSystem.out.println("coming...........");System.out.println("coming...........");List<Entity> list = new ArrayList<Entity>();Test t = new Test();list = t.test();//执行业务操作并返回(这里会在客户端出错,到客户端执行了)return list;} }//绑定jndi服务public class InitJndiService {public void init(){Properties pros = new Properties();pros.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.rmi.registry.RegistryContextFactory");pros.put(Context.PROVIDER_URL, "rmi://localhost:1099");try {LocateRegistry.createRegistry(1099);InitialContext ini = new InitialContext(pros);Service service = new ServiceImpl();ini.bind("Service", service);ini.close();} catch (NamingException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (RemoteException e) {// TODO Auto-generated catch blocke.printStackTrace();}};}客户端调用:public static void main(String[] arg){ System.setProperty(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.rmi.registry.RegistryContextFactory");System.setProperty(Context.PROVIDER_URL, "rmi://localhost:1099"); System.setSecurityManager(new SecurityManager(){@Overridepublic void checkPermission(Permission perm) {// TODO Auto-generated method stub}});try {InitialContext ctx = new InitialContext();Service service = (Service)ctx.lookup("Service"); System.out.println(service.List("3444","ddd")); } catch (NamingException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (RemoteException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (NotBoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} } 【客户端输出会报错误(空指针): coming........... coming........... XXXXXXXXX其它的信息(服务器端业务类信息) Caused by: java.lang.NullPointerExceptionat com.jdbc.ConnectionFactory.getConn服务器那不打印任何信息如不调业务方法test(),list方法只返回个字符串或自己new个Entity和ArrayList返回则没有问题,不知道这种情况是咋回事,如何解决,我想的是客户端只接收结果的,怎么产生的结果由服务器负责,为什么现在不是这样呢,初次搞rmi,请大家说说

解决方案

LiebaoServiceImpl需要继承UnicastRemoteObject类,并且我看你的LiebaoServiceImpl 实现接口有些多余, Service已经继承Remote接口,根本不需要再实现Remote接口,而且不明白你实现Serializable接口有什么用。public LiebaoServiceImple extends UnicastRemoteObject implements Service{}如果还不明白请参见http://dreamzhong.iteye.com/admin/blogs/1140526

时间: 2024-07-30 10:53:17

关于rmi的疑惑,请熟悉的朋友指点一下的相关文章

c++递归-初学递归,有些疑惑请大家帮助

问题描述 初学递归,有些疑惑请大家帮助 是利用递归解决迷宫问题 初学C++,要利用递归解决迷宫问题,迷宫需要自己输入,0代表可以走通,1代表走不通,下面是我的程序,求各位看看那里有问题,为什么不出结果 #include #include using namespace std; struct point { int x,y; }; int xmove[4]={0,1,0,-1}; int ymove[4]={1,0,-1,0}; class Maze { public: Maze(int r,i

语言 基础-C语言,基础理解,请老师,朋友留步。

问题描述 C语言,基础理解,请老师,朋友留步. error C2105: '++' needs l-value 这个错误对于 char p[10]; ++p; 出现这个错误我能理解明白: 但是,对于下面这个:++(x+1);同样出现:error C2105: '++' needs l-value:学生就不明白了,希望有老师或者C语言基础理解好的朋友讲解一下:百度未查到此类情况: 新来的没悬赏: 解决方案 char p[10],p里面存储的就是这个长度为10的数组的第一个元素的地址,并且p上面存储

springside3.3.2的使用!请成功搭建环境的朋友指点一下!

问题描述 第一次使用springside,在下载了最新版的springside3.3.2按照官方文档一键安装方法,但出现了几个问题:1.首先在解压时出现需要覆盖的选项.选择替换后,完成解压.然后要运行bin下的quick-start.bat,可解压后没有bin文件夹,quick-start.bat文件是直接在springside-3.3.2文件下的2.运行quick-start.bat完成这步后[img=http://tu.6.cn/pic/show-new/id/9440125/][/img]

虚拟机-求对nmap和端口扫描工具较熟悉的朋友进来看看

问题描述 求对nmap和端口扫描工具较熟悉的朋友进来看看 我在虚拟机中,使用nmap -sn 192.168.1.0/24,同时用wireshark抓包,-sn应该是ping吧,然而wireshark里是arp广播. 然后使用了nmap -PS 192.168.1.0/24,我看资料这里应该是用tcp syn进行扫描,但在wireshark里,先进行了arp广播,然后再进行了tcp扫描(这里的扫描并非广播,而是目的地址是arp广播的结果) 于是,我有如下的问题: 1.扫描存活主机,为什么都会先使

关于WMS系统的硬件,服务器和存储站有什么区别?请懂的朋友给点意见,谢谢啦

问题描述 生产制造业,公司决定购入一套WMS系统.供应商报了硬件的报价如下:服务器--型号:HP DL380p Gen8 8-SFF CTO Server 单价(含17%税):65487元 数量:2(双机热备)存储站--型号:HP StorageWorks P2000 单价:149299元 数量:1---AP控制器--单价:153322元========================================================服务器不是也能存储数据么?存储站是干什么用的?另

Myeclipse5.5安装Groovy不能用,请用过或者知道的朋友指点一下

问题描述 最近刚开始学习Groovy,想把我的Myeclipse上面安装上Groovy的插件,不过弄了好久都不好用,有没有用过或者了解的朋友指点一下

请大神帮忙指点

问题描述 本人想学C#,以前学过C++,无项目开发经验,请各位大神指点该如何入手学比较好,谢谢! 解决方案 解决方案二:不是大神,但建议你可以买本c#入门经典,自己先看看基本语法,然后自己写一些代码多熟悉熟悉就好了解决方案三:C#语法比C++要简单如果你C++学的好的话,学C#应该会很容易问题是不知道你到底会什么还是找本书先啃着吧解决方案四:谢过啦,看了些视频觉得效果不错,先看着吧解决方案五:入坑啊,看看有没地方找培训机构的书或资料,入门会好些

mfc中可以设置列表视图中某一项的颜色吗?网上只有设置某一行颜色的办法,,请大神们指点一下??

问题描述 mfc中可以设置列表视图中某一项的颜色吗?网上只有设置某一行颜色的办法,,请大神们指点一下?? mfc中可以设置列表视图中某一项的颜色吗?网上只有设置某一行颜色的办法,,请大神们指点一下,比如我想使列表视图中0行1列的字符串显示为红色,能实现吗 解决方案 设置视图背景颜色

java 方法传值问题:请大家帮忙看看指点指点:代码如下:

问题描述 java 方法传值问题:请大家帮忙看看指点指点:代码如下: package com.imooc; public class Test{ public static void main(String[] args) { Circle c1 = new Circle(1); Circle c2 = new Circle(2); swap1(c1,c2); System.out.println("After swap1:"+c1.radius+c2.radius); swap2(c