WEB开发网
开发学院操作系统Linux/Unix websphere ejb远程/本地调用总结 阅读

websphere ejb远程/本地调用总结

 2010-09-27 08:17:41 来源:WEB开发网   
核心提示: public void invoke()...{MapSessionLocalHome mapSessionLocalHome = null;MapSessionLocal mapSessionLocal = null;InitialContext initContext = null;fina

public void invoke()
...{
MapSessionLocalHome mapSessionLocalHome = null;
MapSessionLocal mapSessionLocal = null;
InitialContext initContext = null;
final String JNDIName = "java:comp/env/ejb/MapSession";
try ...{
System.out.println("in invoke()!!!!!!!");
initContext = new InitialContext();
Object obj = initContext.lookup(JNDIName);
mapSessionLocalHome = (MapSessionLocalHome)obj;
mapSessionLocal = mapSessionLocalHome.create();
Person person = new Person("lcl",555);
mapSessionLocal.setMapValue("key1", person);
Person tempPerson = (Person)mapSessionLocal.getMapValue("key1");
tempPerson.setName("wangwu");
tempPerson .setAge(88);
Person changedPerson = (Person)mapSessionLocal.getMapValue("key1");
System.out.println("after changed: " + changedPerson.getName() + "---" + changedPerson.getAge());
}
catch(Exception e)
...{
e.printStackTrace();
}
}

值得一提的是,在本地调用中,对一个object的操作,是在同一内存块中进行的。具体到上面的代码,tempPerson的改变,已经影响到了changedPerson的值。

2:远程方法调用:

前提:被调用者实现了REMOTE接口,适用于不在同一模块中的ejb,servlet.

public static void main(String[] args)
...{
MapSessionHome mapSessionHome = null;
MapSession mapSession = null;
InitialContext initContext = null;
final String JNDIName = "ejb/co/test/bean/MapSessionHome";
try ...{
System.out.println("in MapSessionClient!!!!!!!");
initContext = new InitialContext();
Object obj = initContext.lookup(JNDIName);
mapSessionHome =
(MapSessionHome) PortableRemoteObject.narrow(
obj,
MapSessionHome.class);
mapSession = mapSessionHome.create();
Person person1 = new Person("zhangsan", 100);
mapSession.setMapValue("key1",person1);
Person tempPerson = (Person)mapSession.getMapValue("key1");
tempPerson.setName("lisi");
tempPerson.setAge(500);
System.out.println("before changed: " + tempPerson.getName() + "---" + tempPerson.getAge());
Person changedPerson = (Person)mapSession.getMapValue("key1");
System.out.println("after changed: " + changedPerson.getName() + "---" + changedPerson.getAge());
} catch (Exception e) ...{
e.printStackTrace();
System.exit(0);
}
}

值得一提的是,在远程调用中,对一个object的操作,经过了corba处理,是不在同一内存块中进行的。具体到上面的代码,tempPerson的改变,不影响changedPerson的值(其实理所当然,一个是远程的对象,你个是本地内存对象)。

编缉推荐阅读以下文章

  • 使用 WebSphere Process Server 修复流程
  • 设置并置 WebSphere Application Server 负载均衡器和内容主机
  • 利用 WebSphere Application Server 6.1 构建 SIP 集群应用环境及其性能调优
  • WebSphere Process Server V6.0.2 集群,第 1 部分:了解拓扑
  • 如何实现WebSphere Application Server 6集群环境下的定时服务
  • 迁移集群环境中的 WebSphere Commerce
  • WebSphere Process Server V6.0.2 集群,第 2 部分:安装和配置 WebSphere Process Server 集群
  • Websphere MQ v6集群的负载均衡新功能
  • 将 JUnit 插件集成到 WebSphere Studio 中
  • 使用 IBM WebSphere MQ JMS 提供程序

Tags:websphere ejb 远程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接