对stub没理解透 rpc method是动态分配端口的。有个port mapper 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 嗬嗬! 当你的客户端在找到home接口且调用create的时候,server向你的客户端回传的stub 我问你你的CLIENT是放在哪里的!?是WEBLOGIC上吗?如果是的话他就能自动找到STUB,如果你CLIENT不是在WEBLOGIC上的,那你的CLIENT STUB一定放在了类路径下,否则应该编译都通不过的! 那在RMI中也是区分client stub和server stub的吗? 另外,我client没有放在WEBLOGIC下呀,我是在JBUILDER7中测试的 SERVER端不叫STUB而叫SKELETON!你在JBUILDER中测试时,肯定将WEBLOGIC.JAR文件以及相应的home,remote接口放到了类路径中!比如以下的一个EJB CLIENT:import javax.naming.Context; import javax.naming.InitialContext; import javax.rmi.PortableRemoteObject; import java.math.BigDecimal; //import Converter; //import ConverterHome; public class ConverterClient{ public static void main(String[] args) { try { Context initial = new InitialContext(); Object objref = initial.lookup ("java:comp/env/ejb/SimpleConverter"); ConverterHome home = (ConverterHome)PortableRemoteObject.narrow(objref,ConverterHome.class);//如果HOME接口找不到的话程序将会报错! Converter currencyConverter = home.create();//REMOTE接口没有找到也会报错! BigDecimal param = new BigDecimal ("100.00"); BigDecimal amount =currencyConverter.dollarToYen(param); System.out.println(amount); amount = currencyConverter.yenToEuro(param); System.out.println(amount); System.exit(0); } catch (Exception ex) { System.err.println("Caught an unexpected exception!"); ex.printStackTrace(); } }}所以归纳起来就是CLIENT 通过JNDI获得HOME接口时获得的只是HOME接口的一个子类即EJB的STUB,然后调用的那个CREATE方法就是通过STUB和SEKLETON通信生成的!在RMI中同样也是如此!Naming.lookup(String name)得到的是STUB,调用METHOD的时候就是STUB和SEKLETON通信的时候! 从数据库中读数据在table中显示的问题 发个正则问题 求JDK6.0 API 走过路过都来down一个 怎么运行JAVA项目程序? 高分求解关于线程CPU利用率的问题 类字段(或者叫数据成员)必须在初始化块使用它之前定义吗? 关于类加载器的相关问题 jsp乱码 我能改变jakarta-tomcat-4.0.1的工作目录吗? 关于数组中的引用类型求教 谢啦 请问java web Start到底为何物 向JTable中加入单元编辑器
当你的客户端在找到home接口且调用create的时候,
server向你的客户端回传的stub
你在JBUILDER中测试时,肯定将WEBLOGIC.JAR文件以及相应的home,remote接口放到了类路径中!
比如以下的一个EJB CLIENT:
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;
import java.math.BigDecimal;
//import Converter;
//import ConverterHome;
public class ConverterClient
{
public static void main(String[] args)
{
try
{
Context initial = new InitialContext();
Object objref = initial.lookup
("java:comp/env/ejb/SimpleConverter");
ConverterHome home =
(ConverterHome)PortableRemoteObject.narrow(objref,ConverterHome.class);//如果HOME接口找不到的话程序将会报错!
Converter currencyConverter = home.create();//REMOTE接口没有找到也会报错!
BigDecimal param = new BigDecimal ("100.00");
BigDecimal amount =currencyConverter.dollarToYen(param);
System.out.println(amount);
amount = currencyConverter.yenToEuro(param);
System.out.println(amount);
System.exit(0);
}
catch (Exception ex)
{
System.err.println("Caught an unexpected exception!");
ex.printStackTrace();
}
}
}
所以归纳起来就是CLIENT 通过JNDI获得HOME接口时获得的只是HOME接口的一个子类即EJB的STUB,然后调用的那个CREATE方法就是通过STUB和SEKLETON通信生成的!在RMI中同样也是如此!
Naming.lookup(String name)得到的是STUB,调用METHOD的时候就是STUB和SEKLETON通信的时候!