当前位置: 技术问答>java相关
急救:JB6中帮助中setSessionContext的这段程序是什么意思?谢谢!
来源: 互联网 发布时间:2015-05-15
本文导语: Writing the setSessionContext() method In the session bean's sessionContext() method add a try block. Modify the method so that it looks like this: public void setSessionContext(SessionContext sessionContext) throws RemoteException { t...
Writing the setSessionContext() method In the session bean's sessionContext() method add a try block. Modify the method so that it looks like this: public void setSessionContext(SessionContext sessionContext)
throws RemoteException {
this.sessionContext = sessionContext;
try {
Context context = new InitialContext();
Object object = context.lookup("java:comp/env/ejb/Employee");
employeeHome = (EmployeeHome) PortableRemoteObject.narrow(object,
EmployeeHome.class);
entityBeanProvider.setEjbHome(employeeHome);
entityBeanResolver.setEjbHome(employeeHome);
}
catch (Exception ex) {
throw new EJBException(ex);
}
}
Note that setSessionContext() sets the value of the ejbHome properties in the EntityBeanProvider and EntityBeanResolver components to the name of the home interface of the Employee entity bean。
现在是这样的,我生成了一个stateless session bean叫BGSessionBean,一个entity bean叫BGEntityBean,我想通过session bean来访问entity bean,因此在server-side加入了entityBeanProvider,entityBeanResolver。帮助说需要在setSessionContext中加入异常处理,我对这个异常处理程序不大清楚。譬如java:comp/env/ejb/Employee是什么意思?employeeHome = (EmployeeHome) PortableRemoteObject.narrow(object,EmployeeHome.class);起什么作用呢?employeeHome是谁的home interface?
EmployeeHome又是谁的home interface?
throws RemoteException {
this.sessionContext = sessionContext;
try {
Context context = new InitialContext();
Object object = context.lookup("java:comp/env/ejb/Employee");
employeeHome = (EmployeeHome) PortableRemoteObject.narrow(object,
EmployeeHome.class);
entityBeanProvider.setEjbHome(employeeHome);
entityBeanResolver.setEjbHome(employeeHome);
}
catch (Exception ex) {
throw new EJBException(ex);
}
}
Note that setSessionContext() sets the value of the ejbHome properties in the EntityBeanProvider and EntityBeanResolver components to the name of the home interface of the Employee entity bean。
现在是这样的,我生成了一个stateless session bean叫BGSessionBean,一个entity bean叫BGEntityBean,我想通过session bean来访问entity bean,因此在server-side加入了entityBeanProvider,entityBeanResolver。帮助说需要在setSessionContext中加入异常处理,我对这个异常处理程序不大清楚。譬如java:comp/env/ejb/Employee是什么意思?employeeHome = (EmployeeHome) PortableRemoteObject.narrow(object,EmployeeHome.class);起什么作用呢?employeeHome是谁的home interface?
EmployeeHome又是谁的home interface?
|
你的问题每次咋都这么字 :)
java:comp/env/ejb/Employee是你的BEAN的JNDI名
CLIENT通过它来早到BEAN,如果你用的是WL和JB6,并DEPLY成功了
你只需要写:Employee就可以了,前面不需要
你把你的ENTITYBENA的JAR放到WL的启动CLASSPATH中,这样就可以被CLIEN调用到了
java:comp/env/ejb/Employee是你的BEAN的JNDI名
CLIENT通过它来早到BEAN,如果你用的是WL和JB6,并DEPLY成功了
你只需要写:Employee就可以了,前面不需要
你把你的ENTITYBENA的JAR放到WL的启动CLASSPATH中,这样就可以被CLIEN调用到了
|
1、异常处理就是try{}catch(){},你问什么?它这里throw了EJBException,说明有异常发生会终止EJB的运行。
2、lookup()方法根据JNDI名寻找对象,这里的java:comp/env是J2EE的默认名字空间,然后你在配置时设置了ejb/Employee的JNDI名字,它会根据这个名字寻找对象。
3、narrow()方法就是“强制类型转换”的意思。把object转成EmployeeHome对象类型。
4、employeeHome是对象名,是EmployeeHome类的一个实例。而EmployeeHome是类的名字。
2、lookup()方法根据JNDI名寻找对象,这里的java:comp/env是J2EE的默认名字空间,然后你在配置时设置了ejb/Employee的JNDI名字,它会根据这个名字寻找对象。
3、narrow()方法就是“强制类型转换”的意思。把object转成EmployeeHome对象类型。
4、employeeHome是对象名,是EmployeeHome类的一个实例。而EmployeeHome是类的名字。
|
java:comp/env/ejb/Employee是ejb引用名称,你需要在ejb-jar.xml中声明ejb/Employee这个ejb引用,在发布时,你还要指定ejb/Employee对应的ejb的jndi.
由于ejb是基于rmi-iiop的分布式组件,employeeHome = (EmployeeHome) PortableRemoteObject.narrow(object,EmployeeHome.class);中narrow检查远程对象object是否实现远程接口,然后可以安全的进行转换
lookup查找ejb时实际上返回该ejb的home接口,然后通过home接口得到ejb的remote接口
由于ejb是基于rmi-iiop的分布式组件,employeeHome = (EmployeeHome) PortableRemoteObject.narrow(object,EmployeeHome.class);中narrow检查远程对象object是否实现远程接口,然后可以安全的进行转换
lookup查找ejb时实际上返回该ejb的home接口,然后通过home接口得到ejb的remote接口
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。