20100930_Dawning_EJB_Jboss_mysql操作步骤

学习笔记: 下面是Ejb3.0 jboss4.2 MySql 的 有关配置的一些操作方式: 1. 手动创建数据库如:foshanshop 2. 手动配置jboss连接jndi。如果jboss版本中有mysql-ds.xml(目录如下:C:/jboss/jboss-4.2.2.GA/server/default/deploy)拿出来修改就可以了,如果没有,创建mysql-ds.xml文件,改文件内容如下: ==================================begin================================== MySqlDS jdbc:mysql://localhost:3306/foshanshop com.mysql.jdbc.Driver root aljoin org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter mySQL =================================end================================== 以上配置的就是jboos和mysql连接的方式,其他可以省略!!! 2. 创建工程如下: =================================begin================================= package com.foshanshop.ejb.bean; import java.io.Serializable; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; /*** * 创建person映射Person表 * * @author Dawning * */ @SuppressWarnings("serial") @Entity @Table(name="Person") public class Person implements Serializable{ private Integer personid; private String name; private String sex; private int age; private Date birthday; @Id @GeneratedValue(strategy = GenerationType.AUTO) public Integer getPersonid() { return personid; } public void setPersonid(Integer personid) { this.personid = personid; } @Column(nullable=false,length=32) public String getName() { return name; } public void setName(String name) { this.name = name; } @Column(nullable = false) public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } @Column(nullable = false) public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Temporal(value = TemporalType.DATE) public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } }//end Entity package com.foshanshop.ejb.dao; import java.util.List; import com.foshanshop.ejb.bean.Person; /*** * 定义Session Bean业务接口 * * @author Dawning * */ public interface PersonDAO { /** * 添加一个Person * @param person 人员 */ public void inserPerson(Person person); /*** * 更新名称 * @param newname 新名称 * @param person 人员ID */ public void updateName(String newname, int personId); /** * 更新person对象 * @param person */ public void mergePerson(Person person); /*** * 删除指定Person * @param personid 人员ID */ public void deletePerson(int personid); /** * 获取指定person * @param personid 人员ID * @return */ public Person getPersonById(int personid); /** * 获取全部Person * @return */ public List getPersonList(); } //end interface package com.foshanshop.ejb.impl; import java.util.List; import javax.ejb.Remote; import javax.ejb.Stateless; import javax.persistence.Query; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import com.foshanshop.ejb.bean.Person; import com.foshanshop.ejb.dao.PersonDAO; /** * SessionBean接口实现 * * @author Dawning * */ @Stateless //有状态Session @Remote(PersonDAO.class) //远程接口 public class PersonDaoBean implements PersonDAO{ //通过@PersitenecContext注释动态注入EntityManager对象,该注释和@EJB注释一样,会在EJB和JNDI //ENC中注册一个指向该资源的引用。 @PersistenceContext(unitName="foshanshop") //EntityManager是由EJB容器自动管理和配置的,包括EntityManager的创建及清理工作。所有我们不需要 //调用它的clone()方法释放资源。借助EntityManager我们可以创建、更新、删除及查询尸体bean。它负责 //将固定数量的一组类映射到数据库中,这组类被称为持久化单元(persistence unit)/ protected EntityManager em; @Override public void deletePerson(int personid) { Person person = em.find(Person.class,personid); if(person!=null) em.refresh(person); } @Override public Person getPersonById(int personid) { return em.find(Person.class,personid); } @Override @SuppressWarnings("unchecked") public List getPersonList() { Query query = em.createQuery("select o from Person o order by o.personid"); return (List)query.getResultList(); } @Override public void inserPerson(Person person) { em.persist(person); } @Override public void mergePerson(Person person) { em.merge(person); } @Override public void updateName(String newname, int personId) { Person person = em.find(Person.class,personId); if(person!=null) person.setName(newname); } } //end Bean =================================end================================== 3. 将该程序打包,扔到jboss部署,请操作一下步骤: 在src目录下创建文件META-INF,然后在创建persistence.xml文件,改文件内容如下: java:/MySqlDS 4.使用build.xml文件ant配置如下: 5.可以使用eclipse打包工具打包,也可以执行ant文件打包 (打成jar文件) 6.包打包好的jar扔到jboss(如:C:/jboss/jboss-4.2.2.GA/server/default/deploy) 后。启动jboss发布,使用一下程序测试: 测试: package com.foshanshop.ejb.test; import java.util.Properties; import javax.naming.InitialContext; import javax.naming.NamingException; 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; ctx = new InitialContext(props); return ctx.lookup(jndipath); } catch (NamingException e) { e.printStackTrace(); } return null; } } //end Fatory package com.foshanshop.ejb.test; import java.util.Date; import java.util.List; import org.jboss.mq.selectors.ParseException; import com.foshanshop.ejb.bean.Person; import com.foshanshop.ejb.dao.PersonDAO; public class EntityBeanTest { public static void main(String[] args) throws ParseException { PersonDAO persondao = (PersonDAO) EJbFactory .getEjB("PersonDaoBean/remote"); System.out.println("_________"+persondao); // 插入数据 if (true) { System.out.println("***************************"); Person person = new Person(); person.setBirthday(new Date()); person.setAge(20); person.setName("xiaoling"); person.setSex("女"); persondao.inserPerson(person); System.out.println("***************************"); } // 查找所有 if (true) { List list = persondao.getPersonList(); for (Object o : list) { Person person = (Person) o; System.out.println("姓名为:" + person.getName() + "生日:" + person.getBirthday() + "性别" + person.getSex()); } } // 根据编号找名字 if (true) { Person person = persondao.getPersonById(1); System.out.println("=========="+person); System.out.println("对应名字:" + person.getName()); } } } //end main

你可能感兴趣的:(Ejb学习资料)