Myeclipse+JBoss开发EJB3.0

本文介绍了如何使用Myeclipse 8.5结合JBoss 5.0.0.GA开发EJB3.0项目。EJB用于企业级应用,重点在于服务器端和客户端的交互。尽管现代开发更倾向于Web框架,但EJB3.0简化了开发流程。文中详细说明了设置环境、创建EJB Project、编写EntityBean和SessionBean的步骤,并涉及JNDI和JPA的使用。
摘要由CSDN通过智能技术生成

EJB是用来开发企业应用的技术规范,主要是开发服务器端与客户端。我们比较熟悉的是web应用的开发,我们需要把写好的项目部署到web服务器器上,比如tomcat,然后通过网页访问;而EJB项目需要将服务器端代码打包成jar包,然后部署到服务器上(由于tomcat只是个web容器,不能用来部署EJB项目,所以这里我们用到的是JBoss,两者同样都是开源的),然后通过客户端代码访问并执行服务器端程序。所以说EJB项目主要注重服务器端和客户端的开发,但是由于ajax技术和其他web框架(如spring,hibernate)的兴起,现在的主流还是web开发。但是EJB并不过时,特别是EJB3.0出现以后,我们可以更加轻松快速的开发EJB项目,并且现在的主流框架大多支持EJB规范。

这里我们用到的是Myeclipse8.5+jboss-5.0.0.GA.,jboss的下载地址:http://www.jboss.org/jbossas/downloads/,下载完并安装。在Myeclipse选择Window->Preferences->MyEclipse->Servers->JBoss 5.x,选择JBoss server为[Enable],路径为你的安装路径,然后下次就可以通过Servers来启动JBoss了。

接下来创建一个EJB Project,开始写服务器端代码。这里用到了EntityBean和SessionBean。EntityBean就是实体类,与web项目中的实体类功能相同;SessionBean描述了与客户端的会话,当客户端执行完以后,SessionBean和他的数据就会消失。这个项目用到了JNDI和JPA,JPA是java的数据持久化API,通过EntityManager(实体管理器)来管理ORM映射,需要注意的是EJB里的Entity都要实现Serializable接口以实现远程交流。JNDI是java的命名和目录API,这里借助JNDI让JBoss来维护SessionBean。下面给出src目录下的代码:

Student类:

package test.ejb.beans;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="t_student")
public class Student implements Serializable{
	private static final long serialVersionUID = 1L;
	@Id
	@GeneratedValue
	private int id;
	private String name;
	
	public Student(){}
	
	public Student(int id,String name){
		this.id=id;
		this.name=name;
	}
	
	public int getId(){return id;}
	public void setId(int id){this.id = id;}
	public String getName(){return name;}
	public void setName(String name){this.name = name;}
}

StudentDao类:

package test.ejb.dao;

import java.util.List;
import test.ejb.beans.Student;

public interface StudentDao {
	public Student get(int id) ;
	public void saveOrUpdate(Student domain);
	public void remove(Student domain);
	public List<Student> getAll();
}

StudentSessionBean类:

package test.ejb.dao.impl;

import java.util.List;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import test.ejb.beans.Student;
import test.ejb.dao.StudentDao;

@Stateless
@Remote(StudentDao.class)
public class StudentSessionBean implements StudentDao{
	@PersistenceContext
	private EntityManager entityManager;
	
	public Student get(int id) {
		return entityManager.find(Student.class,id);
	}

	public void remove(Student domain) {
		entityManager.remove(entityManager.merge(domain));
	}

	public void saveOrUpdate(Student domain) {
		entityManager.merge(domain);
	}

	@SuppressWarnings("unchecked")
	public List<Student> getAll() {
		String jpql="select s from Student s";
		Query query=entityManager.createQuery(jpql);
		return query.getResultList();
	}
}

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="EJBProjectPU" transaction-type="JTA">
  		<jta-data-source>java:DefaultMySqlDS</jta-data-source>		
  		<properties>
  			<property name="hibernate.hbm2ddl.auto" value="update" /> 
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
            <property name="hibernate.show_sql" value="true" />  
            <property name="hibernate.format_sql" value="true" />  
        </properties>  
	</persistence-unit>
</persistence>

这样,服务器的的代码就基本完成了,接下来需要将这个项目打成jar包,放在D:\jboss-5.0.0.GA\server\default\deploy目录下,接下来需要在该目录下写一个mssql-ds.xml,表示与数据库连接的数据源,并且需要把mysql的驱动包放在D:\jboss-5.0.0.GA\server\default\lib目录下,下面是mssql-ds.xml的内容:

<?xml version="1.0" encoding="UTF-8"?>
<datasources>
  <local-tx-datasource>
    <jndi-name>DefaultMySqlDS</jndi-name>
    <connection-url>jdbc:mysql://localhost:3306/xuliang?useUnicode=true&characterEncoding=UTF-8</connection-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <user-name>root</user-name>
    <password></password>
    <metadata>
       <type-mapping>mySQL</type-mapping>
    </metadata>
  </local-tx-datasource>
</datasources>

最后,简单的写一个客户端代码测试一下,你可以将客户端代码放在任何地方,但是需要将服务器端的jar包导入,并且将D:\jboss-5.0.0.GA\client目录下的jbossall-client.jar和jnp-client.jar包导入,代码如下:

package xxx.xxx.xxx;

import java.util.Properties;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import test.ejb.beans.Student;
import test.ejb.dao.StudentDao;

public class EntityBeanTest {
	public static void main(String[] args) throws NamingException {
		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");   
		InitialContext ctx = new InitialContext(props);   
		StudentDao  studentDao= (StudentDao)ctx.lookup("StudentSessionBean/remote");   
		Student stu=new Student();
		stu.setId(999);
		stu.setName("xuliang");
		studentDao.saveOrUpdate(stu);
		System.out.println(studentDao.get(1));   
	}
}

启动jboss,然后运行上面的代码,就能将记录插入数据库并查询出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值