ejb3.0入门(1):Stateless Session Bean

来源:互联网 发布:首届网络空间战略论坛 编辑:程序博客网 时间:2024/06/11 17:24

 ejb3.0一个显著的变化:

原来系统的业务处理类

接口类:

public interface IBussinessLogic {
    
public void doSomething();
}

实现类:

public class BussinessLogic implements IBussinessLogic {
    
public void doSomething() {
        
// bussiness logic        
    }

}

现在要把它改成ejb,只需要在BussinessLogic类加上描述符。

@Stateless
@Local({IBussinessLogic.class})
@LocalBinding(jndiBinding="ejb/BussinessLogic")

@LocalBinding缺省时的jndi:

  • 如果应用是部署到EAR文件,JNDI名的格式是:本地接口的stub:EAR-FILE-BASE-NAME/EJB-CLASS-NAME/local。 远端接口:EAR-FILE-BASE-NAME/EJB-CLASS-NAME/local
  • 如果bean被部署到JAR文件,JNDI名是EJB-CLASS-NAME/local and EJB-CLASS-NAME/remote。
  • EJB client类

    public class EJBClient {

        
    public static void main(String[] args) {
            
    try {
                InitialContext ctx 
    = new InitialContext();
                IBussinessLogic bean 
    = (IBussinessLogic ) ctx.lookup("ejb/BussinessLogic ");
                bean.doSomething();
            }
     catch (NamingException e) {
                e.printStackTrace();
            }

        }


    }

    jndi.properties

    java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
    java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
    java.naming.provider.url=localhost