分享
 
 
 

学习J2EE_(2)

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

全局(Entity)EJB的应用

1、全局EJB的作用

(1)、可以和数据库的数据结合操作,全局EJB提供各种数据操作的方法。

(2)、全局EJB的数据可以被多个客户端共享使用,全局EJB引入主键的应用,主键可以标识每个全局EJB。

2、全局EJB的分类

全局EJB分为Bean持续性和容器持续性。它们的区别如下:

(1)、Bean持续性将SQL语句写入代码

(2)、容器持续性EJB代码没用SQL处理语句,作用XML文件进行写义,且适应不同的数据库。

3、全局EJB生命周期结构图

缓冲状态EJB不与数据表的数据建立联系,不存在主键;缓冲状态EJB通过ejbCreate方法和ejbPostCreate方法或者ejbFind方法获得主键,建立与数据表的数据的关系,当缓冲状态EJB取得主键后便处于准备使用状态,如果EJB内的远程方法被使用,ejbLoad方法首先被激活,运行远程方法,然后ejbStore被激活。一个全局EJB可以有多个缓冲状态和准备使用状态。

EJB主文件:

package hello;

import java.rmi.*;

import java.sql.*;

import javax.ejb.*;

public class HelloBean

implements EntityBean {

EntityContext entityContext;

String name;

public String ejbCreate() throws CreateException {

System.out.println("ejbCreate");

this.name = name;

return "";

}

//在ejbCreate后执行

public void ejbPostCreate() throws CreateException {

System.out.println("ejbPostCreate");

}

public void ejbRemove() throws RemoveException {

System.out.println("ejbRemove");

}

public String getName() {

System.out.println("getName");

return name;

}

public String ejbFindByPrimaryKey(String name) throws

FinderException, SQLException {

System.out.println("ejbFindByPrimaryKey");

Connection conn = this.getConnection();

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(

"SELECT user, password FROM usertable where user = '" + name + "'");

while (rs.next()) {

String s2 = rs.getString("user");

String s3 = rs.getString("password");

System.out.println("\tUser: " + s2 + "\tPassword: " + s3);

}

return "hufei";

}

//在执行远程方法前被激活

public void ejbLoad() {

System.out.println("ejbCreate");

}

//在执行远程方法后被激活

public void ejbStore() {

System.out.println("ejbStore");

}

public void ejbActivate() {

System.out.println("ejbActivate");

}

public void ejbPassivate() {

System.out.println("ejbPassivate");

}

//当第1次引用创建接口方法时,该方法被激活

public void setEntityContext(EntityContext entityContext) {

System.out.println("----------------------------------------------------");

System.out.println("setEntityContext");

this.entityContext = entityContext;

}

public void unsetEntityContext() {

System.out.println("unsetEntityContext");

this.entityContext = null;

}

public Connection getConnection() {

System.out.println("getConnection");

try {

Class.forName("org.gjt.mm.mysql.Driver"); // MySQL

String url =

"jdbc:mysql://172.16.87.10/test?useUnicode=true&characterEncoding=SJIS";

//database name hellodb ,change to your characterEncoding

Connection con = (Connection) DriverManager.getConnection(url, "root", "");

//this.conn = con;

return con;

}

catch (Exception ex) {

ex.printStackTrace();

}

return null;

}

public boolean addUser(String user, String password) {

try {

Connection conn = this.getConnection();

Statement stmt = conn.createStatement();

String sql = "insert into usertable values('" + user + "','" + password + "')";

System.out.println("SQL: " + sql);

boolean success = stmt.execute(sql);

return success;

}

catch (Exception ex) {

ex.printStackTrace();

}

return false;

}

}

EJB远程接口:

package hello;

import javax.ejb.EJBObject;

import java.rmi.RemoteException;

public interface HelloRemote

extends EJBObject {

public String getName() throws RemoteException;

public boolean addUser(String user, String password) throws RemoteException;

}

EJB创建接口:

package hello;

import javax.ejb.EJBHome;

import javax.ejb.CreateException;

import java.rmi.RemoteException;

import javax.ejb.FinderException;

import java.sql.SQLException;

public interface HelloRemoteHome

extends EJBHome {

public HelloRemote create() throws CreateException, RemoteException;

public HelloRemote findByPrimaryKey(String name) throws FinderException,

SQLException, RemoteException;

}

客户端:

/**

* <p>Title: </p>

* <p>Description: </p>

* <p>Copyright: Copyright (c) 2004</p>

* <p>Company: </p>

* @author 胡斐

* @version 1.0

*/

import java.util.*;

import javax.naming.*;

import javax.rmi.*;

import hello.*;

public class HelloClient {

public static void main(String[] args) throws Exception {

//声明链接jboss服务器的属性类

Properties properties;

//声明寻找服务器对象的Context类

Context ctx;

//设置访问jboss服务器的参数

properties = new Properties();

properties.put("java.naming.factory.initial",

"org.jnp.interfaces.NamingContextFactory");

properties.put("java.naming.provider.url", "localhost:1099");

//创建JNDI对象的搜索器

ctx = new InitialContext(properties);

//使用lookup方法寻找UserTableRemote对象

Object UserTableJNDI = ctx.lookup("Hello");

//取得EJB的Home接口

HelloRemoteHome home = (HelloRemoteHome) PortableRemoteObject.narrow(

UserTableJNDI, HelloRemoteHome.class);

//声明EJB的的Remote接口

HelloRemote jackUser;

try {

//取得EJB的Remote接口

jackUser = (HelloRemote) PortableRemoteObject.narrow(home.

findByPrimaryKey("wfz"),

HelloRemote.class);

System.out.println(jackUser.getName());

jackUser.addUser("hx", "san1");

}

catch (Exception ex) {

ex.printStackTrace();

}

}

}

注意:不能在一个方法内抛出两个异常,将会引起nesting错误.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有