RMI Client问题

runi 2003-10-09 11:02:22
在同一个Web应用下面一切正常,当客户端程序在意外一个Web应用下面执行的时候,报错(程序中**处为出错行)
java.lang.ClassCastException

at com.test.rmi.CalculatorClient.<init>(CalculatorClient.java:24)
该错误信息意思应该是没有实例化的对象引用.为什么呢?


RMI Client 程序如下
package com.test.rmi;

import java.rmi.*;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.net.MalformedURLException;
import java.rmi.NotBoundException;

public class CalculatorClient
{

public CalculatorClient()
{
try
{
Calculator c;//Calculator 为远程借口
c= (Calculator) Naming.lookup("//localhost/CalculatorService");//**
System.out.println(c.sub(4, 3));
System.out.println(c.add(4, 5));
System.out.println(c.mul(3, 6));
System.out.println(c.div(9, 3));
}
catch (MalformedURLException murle)
{
System.out.println();
System.out.println(
"MalformedURLException");
System.out.println(murle);
}
catch (RemoteException re)
{
System.out.println();
System.out.println(
"RemoteException");
System.out.println(re);
}
catch (NotBoundException nbe)
{
System.out.println();
System.out.println(
"NotBoundException");
System.out.println(nbe);
}
catch (
java.lang.ArithmeticException
ae)
{
System.out.println();
System.out.println(
"java.lang.ArithmeticException");
System.out.println(ae);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
...全文
80 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mr_wn 2003-10-10
  • 打赏
  • 举报
回复
你应该先看看
jndi为://localhost/CalculatorService
的对象是否正确
runi 2003-10-10
  • 打赏
  • 举报
回复
大家都没有遇到这样的问题吗?
runi 2003-10-10
  • 打赏
  • 举报
回复
问题已经解决了,费了九牛2虎之力.非常感谢etre(林荃).原因是我的server和client的包结构不一样.
etre 2003-10-10
  • 打赏
  • 举报
回复
RmiHelloRemoteIntfc c1=(RmiHelloRemoteIntfc)Naming.lookup("rmi://Fangm:2222/helloObj");
c= (Calculator) Naming.lookup("//localhost/CalculatorService");//**
对比一下啊。看看有什么不同呢?
etre 2003-10-10
  • 打赏
  • 举报
回复
你的服务器是如何写的啊。把所有代码出来吧
runi 2003-10-10
  • 打赏
  • 举报
回复
to:mr_wn(宝盖丁)
我根本就没有用JNDI啊.
runi 2003-10-09
  • 打赏
  • 举报
回复
有高人吗?这个问题已经困惑俺快一天了,问题就出在
c= (Calculator) Naming.lookup("//localhost/CalculatorService");
上,帮忙给看看呀!
看了很多资料都没有涉及这个问题,真得跳楼了?!
runi 2003-10-09
  • 打赏
  • 举报
回复
谢谢啊.为什么会是类型不匹配呢?我的程序在同一个应用下面是没有问题的啊?
Calculator c;//Calculator 为远程借口
c= (Calculator) Naming.lookup("//localhost/CalculatorService");//**
怎么会有类型不匹配呢?如果是类型不匹配的话,编译应该都不会过去的,是吧!?
etre 2003-10-09
  • 打赏
  • 举报
回复
你的错误是类型不匹配
etre 2003-10-09
  • 打赏
  • 举报
回复
给你一个例子吧



import java.io.*;
import java.rmi.*;
import java.rmi.server.*;
import sun.applet.*;
import java.rmi.registry.LocateRegistry;

/**
* Title:
* Description:
* Copyright: Copyright (c) 2002
* Company:
* @author
* @version 1.0
*/

public class RmiHelloServer
{

public RmiHelloServer()
{
}
public static void main(String[] args)
{
//创建并安装安全管理器
if(System.getSecurityManager()==null)
{
System.setSecurityManager(new RMISecurityManager());
}

try{
//创建远程对象
RmiHelloRemoteObj ttt=new RmiHelloRemoteObj();
//启动注册表
LocateRegistry.createRegistry(2222);
//奖名称绑定到对象
Naming.rebind("//Fangm:2222/helloObj",ttt);

System.out.println("RMI服务器正在运行。。。。。。");
}
catch(Exception e)
{
e.printStackTrace();
}


}
}


import java.rmi.server.*;
import java.rmi.*;

/**
* Title:
* Description:
* Copyright: Copyright (c) 2002
* Company:
* @author
* @version 1.0
*/

public class RmiHelloRemoteObj extends UnicastRemoteObject implements RmiHelloRemoteIntfc
{

public RmiHelloRemoteObj() throws RemoteException
{
super();
}

public String helloRemoteObj(String client) throws RemoteException
{
return "Hello World"+client;
}


import java.rmi.*;

/**
* Title:
* Description:
* Copyright: Copyright (c) 2002
* Company:
* @author
* @version 1.0
*/

public interface RmiHelloRemoteIntfc extends Remote
{
String helloRemoteObj(String client) throws RemoteException;
}

import java.rmi.*;
import java.rmi.server.*;

/**
* Title:
* Description:
* Copyright: Copyright (c) 2002
* Company:
* @author
* @version 1.0
*/

public class RmiHelloClient
{

public RmiHelloClient()
{
}
public static void main(String[] args)
{
//创建并安装安全管理器
if(System.getSecurityManager()==null)
{
System.setSecurityManager(new RMISecurityManager());
}

try{
RmiHelloRemoteIntfc c1=(RmiHelloRemoteIntfc)Naming.lookup("rmi://Fangm:2222/helloObj");
System.out.println(c1.helloRemoteObj("Everyone"));
}
catch(Exception e)
{
e.printStackTrace();
}
System.exit(0);



}
}

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧