EJB-03:
package com.zh.ejb;
import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Stateless;
@Stateless
@Remote
@Local
public class UserManagerBean implements UserManager{
@Override
public void addUser(User user) {
System.out.println("User[username="+user.getUsername() +"]has been saved");
user.setId(10);
}
}
远程客户端在EJB端改变对象值客户端不可见
本地客户端在EJB端改变对象值客户端可见
所传输的对象要实现序列化接口(本地web客户端可以不实现序列化接口)
使用本地WEB客户端时出现ClasscastException
$JBOSS_HONE/server/default/deploy/jboss-web.deployer/META-INF/jboss-service.xml
<attribute name="UseJBossWebLoader">true</attribute>
EJB-04
package com.zh.ejb;
import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Stateless;
@Stateless(name="ejb04beanname")
@Remote({Ejb04Interface01.class,Ejb04Interface02.class})
@Local({Ejb04Interface03.class,Ejb04Interface04.class})
public class Ejb04Bean implements Ejb04Interface01,Ejb04Interface02 ,Ejb04Interface03 ,Ejb04Interface04{
@Override
public void m1() {
System.out.println("method m1 has been invoked");
}
@Override
public void m2() {
System.out.println("method m2 has been invoked");
}
@Override
public void m3() {
System.out.println("method m3 has been invoked");
}
@Override
public void m4() {
System.out.println("method m4 has been invoked");
}
}
远程客户端只可以访问@Remote后面的接口
本地客户端@Remote,@Local都可以
也可以将@Remote,@Local直接定义在相应的接口上
本文深入探讨了EJB组件的应用实践,包括@Stateless注解的使用、远程与本地客户端的区别及其实现细节。同时,文章还介绍了如何通过@Remote和@Local注解来指定远程和本地接口,并解释了客户端调用的不同行为。
33

被折叠的 条评论
为什么被折叠?



