EJB3.0高速入门项目开发步骤
EJB3.0开发步骤
1. 开发环境
IDE开发工具:Eclipse Java EE IDE for Web Developers
EJB容器:jboss-4.2.3.GA
后台数据库:MysQL5.1
2. 开发步骤
2.1 在Eclipse中配置jboss-4.2.3.GA
1. 点击小三角,选中New server
2. 选中JBOSS AS4.2
3. 点击ADD。进行JBOSS配置
4. 在Home Directory中。点击Browser选择JBOSS4.2的安装文件夹,在JRE中配置JRE的安装文件夹,点击finish
在finish。就可以完毕对JBOSS在Eclipse中的配置。
2.2 新建EJB3.0projecttitan
1. 右键->New->Project
2. 选择EJB Project->next
3. Project name为“titan”,Targetruntime选择配置好的JBOSS4.2,EJB module version选择3.0,然后finish。新的EJB3.0project创建成功。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenQ4NTI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
2.3 项目开发
2.3.1 开发Cabin实体Bean
package com.titan.domain;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity//告知persistence provider这是一个映射到数据的实体类,而且能够受管于EntityManager服务。
@Table(name="CABIN")//告知EJB容器。beanclass 应该被映射到哪一张数据库表。
public
classCabin implementsjava.io.Serializable{
/**
*
*/
private
staticfinal
longserialVersionUID = 1L;
/**
*
*/
private
intid;
private String
name;
private
intdeckLevel;
private
intshipId;
private
intbedCount;
@Id//表示CAbin实体的主键,主键标志是必须的
@Column(name="ID")//定义怎样将成员属性映射到数据库表CABIN中的字段。并不是是必须的
public
intgetId() {
return
id;
}
public
voidsetId(int id) {
this.id =id;
}
@Column(name="NAME")
public String getName() {
return
name;
}
public
voidsetName(String name) {
this.name =name;
}
@Column(name="DECK_LEVEL")
public
intgetDeckLevel() {
return
deckLevel;
}
public
voidsetDeckLevel(int deckLevel) {
this.deckLevel= deckLevel;
}
@Column(name="SHIP_ID")
public
intgetShipId() {
returnshipId;
}
public
voidsetShipId(int shipId) {
this.shipId= shipId;
}
@Column(name="BED_COUNT")
public
intgetBedCount() {
return
bedCount;
}
public
voidsetBedCount(int bedCount) {
this.bedCount= bedCount;
}
}
2.3.2开发远程接口TravelAgentRemote
package com.titan.travelagent;
import javax.ejb.Remote;
import com.titan.domain.Cabin;
@Remote//表示这是一个远程接口
public
interfaceTravelAgentRemote {
public
voidcreateCabin(Cabin cabin);
public Cabin findCabin(int id);
}
2.3.3开发远程接口的实现Bean类TravelAgentBean(StatelessBean)
package com.titan.travelagent;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import com.titan.domain.Cabin;
@Stateless//表示这是一个无状态sessionbean
public
classTravelAgentBean implementsTravelAgentRemote {
//@PersistenceContext告知EJB容器,必须用一个EntityManager实例来设置manager数据成员。
@PersistenceContext(unitName="titan")
privateEntityManager
manager;
public
voidcreateCabin(Cabin cabin) {
// TODO Auto-generated method stub
manager.persist(cabin);
}
public Cabin findCabin(int id) {
// TODO Auto-generated method stub
return
manager.find(Cabin.class, id);
}
}
2.3.4在META-INF下创建文件persistence.xml文件
配置例如以下:
<?xml
version="1.0"encoding="UTF-8"
?>
<persistence
version="1.0"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/persistencehttp://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit
name="titan">
<jta-data-source>java:/titan</jta-data-source>
<properties>
<property
name="hibernate.hbm2ddl.auto"value="create-drop"/>
</properties>
</persistence-unit>
</persistence>
2.3.5在com.titan.clients包下开发客户端程序
packagecom.titan.clients;
importjavax.naming.InitialContext;
importjavax.naming.Context;
importjavax.naming.NamingException;
importjavax.rmi.PortableRemoteObject;
importcom.titan.domain.Cabin;
importcom.titan.travelagent.TravelAgentRemote;
importjava.util.Properties;
importjavax.rmi.PortableRemoteObject;
public classClient {
public static void main(String[]args){
try {
Context jndiContext=getInitialContext();
Objectref=jndiContext.lookup("TravelAgentBean/remote");
TravelAgentRemotedao=(TravelAgentRemote)
PortableRemoteObject.narrow(ref, TravelAgentRemote.class);
Cabin cabin_1=new Cabin();
cabin_1.setId(1);
cabin_1.setName("MasterSuite");
cabin_1.setDeckLevel(1);
cabin_1.setShipId(1);
cabin_1.setBedCount(3);
dao.createCabin(cabin_1);
Cabin cabin_2=dao.findCabin(1);
System.out.println(cabin_2.getId());
System.out.println(cabin_2.getName());
System.out.println(cabin_2.getShipId());
System.out.println(cabin_2.getDeckLevel());
System.out.println(cabin_2.getBedCount());
} catch (ClassCastException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static Context getInitialContext()throws NamingException {
// TODO Auto-generated method stub
Properties p=new Properties();
//...制定专有EJB厂商的JNDI属性
p.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
p.put(Context.PROVIDER_URL, "://localhost:1099");
return newjavax.naming.InitialContext(p);
}
}
至此项目的client开发完毕。
2.4 配置MySql的datasource
1. 将mysql-connector-java-5.1.16.jar包放置到JBOSS_HOME\server\default\lib文件夹下.
2. 将配置好的mysql-ds.xml放到JBOSS_HOME\server\default\deploy文件夹下。配置例如以下:
<?
xmlversion="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>titan</jndi-name>
<connection-url>jdbc:mysql://192.168.9.85:3306/titan</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password>root</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>
2.4.1创建数据库
1、创建数据库titan
2、创建数据表cabin
DROP TABLE IFEXISTS `cabin`;
CREATE TABLEcabin (
ID int(11) NOT NULL,
NAME varchar(255) DEFAULT NULL,
DECK_LEVEL int(11) DEFAULT NULL,
SHIP_ID int(11) DEFAULT NULL,
BED_COUNT int(11) DEFAULT NULL,
PRIMARY KEY (`ID`)
)
3. 执行
1. 将titanproject公布到JBOSS。启动JBOSS
2. 打开client程序。右键->Run As->Java Application
3. 在数据库里能够查询到对应的数据记录,在控制台中能够看到对应的查询结果。
EJB3.0高速入门项目开发步骤的更多相关文章
- Struts2入门项目开发小步骤
Step1: Struts2的获取和添加到项目中: 在官方网站:http://struts.apache.org 获取Struts的其中一个版本. 在开发项目之前,需要添加struts2的类库支持,也 ...
- Dropwizard入门及开发步骤
Dropwizard介绍 Dropwizard结构的服务组成 开发步骤 Dropwizard介绍 Dropwizard是一个微服务框架, 是各项技术的一个集成封装.它包含了以下组件: 嵌入式Jetty ...
- Android_app项目开发步骤总结
做了几个android企业应用项目后,总结了项目的基本开发步骤.希望可以交流. 一 应用规划: ※确定功能. ※必须的界面及界面跳转的流程. ※须要的数据及数据的来源及格 ...
- 第二章:1.0 Django 入门和开发环境
1. 选择 Django Web框架来做Web接口开发,主要原因是由于学习资料丰富,便于学习. 2. Django 对 python 版本的支持情况. Django 的版本在 1.8 ,1.9 , 1 ...
- 使用vue2.0创建的项目的步骤
1.由于vue项目依赖 node.js npm 需要先安装. 若没有请先安装,请百度 //检查是否有node.js npm vue win+r 输入cmd 输入node -v 回车 会出 ...
- EJB3.0开发环境的搭建
EJB Container的介绍SUN公司正式推出了EJB的规范之后,在众多的公司和开发者中引起了非常大的反响.标志着用Java开发企业级应用系统将变的非常easy.很多公司都已经推出了或正打算EJB ...
- EJB3.0 EJB开发消息驱动bean
(7)EJB3.0 EJB开发消息驱动bean JMS 一: Java消息服务(Java Message Service) 二:jms中的消息 消息传递系统的中心就是消息.一条 Message 由三个 ...
- Django 入门项目案例开发(上)
关注微信公众号:FocusBI 查看更多文章:加QQ群:808774277 获取学习资料和一起探讨问题. Django 入门案例开发(中) http://www.cnblogs.com/focusBI ...
- Hibernate入门2.简单的项目开发实例
Hibernate入门2.简单的项目开发实例 这一节通过一个简单的项目学习Hibernate项目的配置 代码下载 : 链接: http://pan.baidu.com/s/1zlgjl 密码: p34 ...
随机推荐
- Vue 实现前进刷新,后退不刷新的效果
需求一: 在一个列表页中,第一次进入的时候,请求获取数据.点击某个列表项,跳到详情页,再从详情页后退回到列表页时,不刷新.也就是说从其他页面进到列表页,需要刷新获取数据,从详情页返回到列表页时不要刷新 ...
- Informatica PowerCenter使用介绍-转载
转载自:https://blog.csdn.net/wen_demon/article/details/44155639 1. INFORMATICA CLIENT的使用1.1 Repository ...
- 洛谷——P3258 [JLOI2014]松鼠的新家
https://www.luogu.org/problem/show?pid=3258 题目描述 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到 ...
- Ubuntu安装keepalived
Ubuntu安装keepalived 一.Keepalived是什么鬼东西: keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障. 二.Ke ...
- IOS Sqlite用户界面增删改查案例
1.案例简单介绍 对SQLite操作进行了简单的封装,将对数据表操作转变成对对象的操作,并通过UI界面完毕对用户表的增.删.改.查,执行界面例如以下图所看到的 a 2.项目project文件夹 Use ...
- 屌丝也能开发安卓版2048(App Inventor)
想编写安卓游戏.java太难.来试试App Inventor.尽管有人觉得他是中学生的玩具,可是也能编写2048这种火爆游戏,不须要太复杂的算法. 整个游戏有几个模块: 一.游戏初始化 数列转化为图形 ...
- Android用canvas画哆啦A梦
先上图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/diss ...
- bzoj1293: [SCOI2009]生日礼物(stl堆)
1293: [SCOI2009]生日礼物 题目:传送门 题解: 据说这道题乱搞随便就水过了 本蒟蒻想到了一个用堆的水法(还专门学了学queue): 如果把每一种颜色的下一个位置都记录一下的话,一开始就 ...
- Oracle 11g AWR生成报告
1.生成单实例 AWR 报告: @$ORACLE_HOME/rdbms/admin/awrrpt.sql 2.生成 Oracle RAC AWR 报告: @$ORACLE_HOME/rdbms/adm ...
- su和sudo的区别与使用,su命令,linux命令
su和sudo的区别与使用 一. 使用 su 命令临时切换用户身份 1. su 的适用条件和威力 su命令就是切换用户 的工具,怎么理解呢?比如我们以普通用户beinan登录的,但要添加用户任务, ...