JBoss + EJB3 + MySql : 開發第一個EJB
JBoss開發Bean并不困難,而對于不知道的人來說,數據庫配置才是比較棘手的問題。現在我們就來一步一步開發一個EJB3 + MySql的Bean。
一、MySql數據庫的配置
1. 配置數據源
在 %JBOSS_HOME%/docs/examples/jca 目錄下找到一個名叫 "mysql-db.xml" 的文件,這個是官方為我們寫好的針對mysql的數據源配置文件,我們改改它就行了。
將 mysql-db.xml 復制到 /server/default/deploy 目錄下,并將文件內容修改為:
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: mysql-ds.xml 41017 2006-02-07 14:26:14Z acoliver $ -->
<!-- Datasource config for MySQL using 3.0.9 available from:
http://www.mysql.com/downloads/api-jdbc-stable.html
-->
<datasources>
<local-tx-datasource>
<jndi-name>MySqlDS</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/ejb</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password>0000</password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources><user-name>是你的mysql數據庫用戶名,同理<password>是連接密碼。
2. 配置persistence.xml
persistence.xml 是 Java Persistence 規范要求我們定義的一個部署描述文件,作用是配置一些基本信息,如EntityManager服務的名稱。我們在項目目錄的 METAINF/ 目錄下創建這個文件:
<?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">
<!-- entity就是EntityManager服務名 -->
<persistence-unit name="entity" transaction-type="JTA">
<!-- 這里必須跟mysql-db.xml文件中的<jndi-name>一樣,即MySqlDs -->
<jta-data-source>java:/MySqlDS</jta-data-source>
<!-- 以下是hibernate的相關配置,可省略 -->
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.connection.characterEncoding" value="UTF-8" />
</properties>
</persistence-unit>
</persistence>
二、開發Bean
1. 開發Entity Bean
我們創建一個名為 User 的實體Bean, 用來保存一個用戶的基本信息,如用戶名,密碼。
package dev.entity;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "DB_USER")
public class User implements Serializable {
@Id
@Column(name = "C_ID")
private int id;
@Column(name = "C_NAME")
private String name;
@Column(name = "C_PASSWORD")
private String pwd;
//get() and set()
}
然后編寫以下語句創建數據表 DB_USER:
create table DB_USER( C_ID int key, C_NAME varchar(40), C_PASSWORD varchar(40) );
我們的Session Bean將包括2個功用:一是創建并持久化一個User類,二是從數據庫中取回一個User對象。
首先創建遠程接口 UserBeanRemote :
package dev.bean;
import javax.ejb.Remote;
import dev.entity.*;
@Remote
public interface UserBeanRemote {
void createUser(User user); //創建User
User getUser(int id); //查詢并獲取User
}然后創建會話Bean : UserBean
package dev.bean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import dev.entity.*;
@Stateless
public class UserBean implements UserBeanRemote {
@PersistenceContext(unitName = "entity")
private EntityManager manager;
public void createUser(User user) {
manager.persist(user);
}
public User getUser(int id) {
return manager.find(User.class, id);
}
}至此 Bean開發完畢。
三、部署 EJB
Eclipse中,在項目名上右擊,選擇 Export. 在彈出的向導中選擇 EJB JAR file. 然后按照提示即可完成部署。
四、編寫測試代碼
public class Client {
public static void main(String[] args) {
try {
Context context = initContext();
UserBeanRemote ubr = (UserBeanRemote)context.lookup("UserBean/remote");
User user = new User();
user.setId(4);
user.setName("bruce lee");
user.setPwd("123456");
ubr.createUser(user);
/*User user = (User)ubr.getUser(2);
System.out.println(user.getName());*/
System.out.println("success!");
}
catch (Exception ex) {
ex.printStackTrace();
}
}
/*
* 這一部分是寫死的
* 固定寫法
*/
public static Context initContext() throws javax.naming.NamingException {
Properties prop = new Properties();
prop.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
prop.put(Context.URL_PKG_PREFIXES,"org.jboss.naming:org.jnp.interfaces");
prop.put(Context.PROVIDER_URL, "jnp://localhost:1099");
return new javax.naming.InitialContext(prop);
}
}至此一個簡單的EJB3已經開發完成。
來自:http://blog.csdn.net/tracker_w/article/details/9327549
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!