public void setPassword(String password)
{
this.password = password;
}
}
eclipse + JBoss 5 + EJB3开发指南(6):编写第一个实体Bean程序(3)
时间:2011-09-18 blogjava 哈佛校训
三、配置persistence.xml文件
在META-INF目录中建立一个persistence.xml文件,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<persistence-unit name="myentity">
<jta-data-source>java:/MyPIM</jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="none" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
</properties>
</persistence-unit>
</persistence>
其中<jta-data-source>元素的值就是mysql-ds.xml文件中配置的数据源名。如果使用注释配置 session bean,META-INF目录下只有两个文件即可:MANIFEST.MF和persistence.xml。
四、在session bean中调用实体bean
package service;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import entity.User;
@Stateless
public class UserBean implements UserBeanRemote
{
@PersistenceContext(unitName="myentity")
protected EntityManager em;
@Override
public String getPassword()
{
User user = em.find(User.class, 1);
return user.getPassword();
}
}
其中UserBeanRemote为远程接口。要注意的是,@PersistenceContext注释的unitName属性值必须和 persistence.xml文件中的<persistence-unit>元素的name属性值相同。
五、客户端调用session bean
InitialContext ctx = new InitialContext();
UserBeanRemote userBeanRemote = (UserBeanRemote) ctx.lookup ("MyEnterprise/UserBean/remote");
System.out.println(userBeanRemote.getPassword());
由于本书的程序都在一个ear包中,因此,默认的jndi名是MyEnterprise/UserBean/remote,如果直接 发布包含EJB的jar包,默认的jndi名称为UserBean/remote。
运行上面的代码后,将输出如下的字符串:
TaokQpoNJQb02eafO/JgYw==
|