ejb 3 初探

ejb3.0开发web,ejb作为M(模型层),推荐使用eclipse+myeclipse开发(虽然jbuilderejb结合的更紧密)


1.依然将ejb所用的jar包导入工程


 下面的jar文件是必需的:


 [jboss安装目录]/client/commons-logging.jar


 [jboss安装目录]/client/concurrent.jar


 [jboss安装目录]/client/ejb3-persistence.jar


 [jboss安装目录]/client/hibernate-annotations.jar


 [jboss安装目录]/client/hibernate-client.jar


 [jboss安装目录]/client/javassist.jar


 [jboss安装目录]/client/jboss-annotations-ejb3.jar


 [jboss安装目录]/client/jboss-aop-jdk50-client.jar


 [jboss安装目录]/client/jboss-aspect-jdk50-client.jar


 [jboss安装目录]/client/jboss-common-client.jar


 [jboss安装目录]/client/jboss-ejb3-client.jar


 [jboss安装目录]/client/jboss-ejb3x.jar


 [jboss安装目录]/client/jboss-j2ee.jar


 [jboss安装目录]/client/jboss-remoting.jar


 [jboss安装目录]/client/jbosssx-client.jar


 [jboss安装目录]/client/jboss-transaction-client.jar


 [jboss安装目录]/client/jnp-client.jar


 [jboss安装目录]/client/trove.jar


 [jboss安装目录]/client/jbossws-client.j


 [jboss安装目录]/client/jboss-jaxws.jar


 [jboss安装目录]/client/xmlsec.jar


相当的多!


现在写第一stateless session bean(无状态会话bean)


 ejb3的标注式声明比较快捷!


2.写业务规范包(接口包)


:


 com.sk.DAO //包名


 package com.sk.DAO;


Login接口


 import com.sk.domain.User;
  
  
 public interface Login {


  public User login(String username,String password);


 }


3.写业务实现类(实现相应接口的类)


:


 com.sk.DAOImp //包名


写类LoginBean 并实现 Login接口(ejb3约定:实现接口的类的名称一律用接口名+Bean来标识)


package com.sk.DAOImp;
  
  
import java.sql.CallableStatement;


import java.sql.Connection;


import java.sql.ResultSet;


import java.sql.SQLException;
  
  
import javax.ejb.Remote;


import javax.ejb.Stateless;
  
  
import com.sk.DAO.Login;


import com.sk.domain.User;


import com.sk.tools.DBOper;
  
  
@Stateless  //表示此Bean为无状态Bean(服务端不存储Bean的状态,可节省Server的内存)


@Remote({Login.class}) //表示遥控(@remote)的接口,本地(@local)必须保证与EJB相关业务逻辑操作者与调用者在同一ApplicationServer


public class LoginBean implements Login {
  
  
 public User login(String username, String password) {


  // TODO Auto-generated method stub


  try {


   Connection conn= DBOper.getConnection();


   CallableStatement cs=conn.prepareCall("{call up_users_login(?,?)}");


   cs.setString(1, username);


   cs.setString(2, password);


   ResultSet rs= cs.executeQuery();


   while(rs.next()){


    User user=new User(rs.getString("username"),rs.getString("password"),rs.getString("description"),rs.getBoolean("isadmin"));


    return user;


    //User对象必须实现序列化,(用于web传播)


   }


  } catch (SQLException e) {


   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return null;
 }
  
  
}
至此,ejb3登陆功能,已经实现
最后可通过以下方法得的想要的对象
public class EJBFactory {
    public static Object getEJB(String jndipath) {
        try {
            Properties props = new Properties();
//           
            props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
            props.setProperty("java.naming.provider.url", "localhost:1099");
            props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");

            InitialContext ctx = new InitialContext(props);
            return ctx.lookup(jndipath);
        } catch (NamingException e) {
            e.printStackTrace();
        }
        return null;
    }
}
调用此方法需要注意:
 Login loginAdmin= (Login)EJBFactory.getEJB("LoginBean/remote");
  
  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gamebox1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值