分享
 
 
 

我的EJB学习历程(八)

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

这个礼拜发生了好多事情啊。所以一直没有时间写。不过好多人问我怎么不写了啊?我是要写的,现在就开始写。(五)里边有个弟兄问我的IBM的网站在哪儿,我的收藏夹被DEL了,在GOOGLE上找了好久也没找到,等我找到了,再发上去!

不过我以后会把我所有引用网址都给打上去。

好了,现在进入我的第4章咯。

开发EJB1.1实体BEAN,好象关于EJB实体BEAN还要分版本的,不过现在我也不清楚为什么分版本。

由于数据库BEAN这个地方的部署我也没有搞清楚,所以我找了LOMBOZ上边有个示例程序,咱们先把这个实验好了,然后再照书做,OK?

摘自:http://www.objectlearn.com/support/docs/cmp.jsp

1-9步和我以前写的一样,是如何建立J2EE项目的,这在我以前的我文章里有写。

从第10步开始写吧:

现在选中CMP这一项。然后打上你自己中意的名字和包名,做NEXT。

然后就会进入到CMP这个界面了:其实这个界面一看就知道是怎么回事:

写上表名,加上字段,一切简单的OK了。记得啊,这里DATASOURCE一定要和表里边的字段一样。

还有对应的数据类型。可以加好多的字段,但是这个例子里边就给了两个字段,我们也姑且用他这两个字段。

对对了,还有就是设置一个PRIMARY KEY。搞定。FINISH。

这个时候ECLIPSE会自己就把你刚才建立的AddressBean给打开。

然后你照着这个例子改代码,其实不讲为什么这么改大家也都能明白:

package com.testing.cmp;

import javax.ejb.EntityBean;

/**

* @ejb.bean name="Address"

* jndi-name="AddressBean"

* type="CMP"

* primkey-field="name"

* schema="addressSchema"

* cmp-version="2.x"

*

* @ejb.persistence

* table-name="address"

*

* @ejb.finder

* query="SELECT OBJECT(a) FROM addressSchema as a"

* signature="java.util.Collection findAll()"

*

**/

public abstract class AddressBean implements EntityBean {

...

Modify the ejbCreate and ejbPostcreate methods to accepts two parameters:

/**

* The ejbCreate method.

*

* @ejb.create-method

*/

public java.lang.String ejbCreate(String name, String phone)

throws javax.ejb.CreateException {

setName(name);

setPhone(phone);

return null;

}

/**

* The container invokes this method immediately after it calls ejbCreate.

*

*/

public void ejbPostCreate(String name, String phone) throws javax.ejb.CreateException {

}

必须改POST和CREATE方法的内容啊。等下再告诉你们为什么要这样做,对了,他里边还都帮你写好了

setName();

setPhone();方法。直接用就好了。

然后SAVE,把刚才写的BEAN加到EJB里边,就是用J2EE->Add Ejb to Modules ,然后选择你刚才建立的EJB就好了。

下边是最讨厌的东西了,就是写个EJBDOCLET,示例给的是要改ejbGenerate.xml,NND,我根本就没有这个文件,后来查了好多的资料,才知道,原来他那个是旧版本,郁闷~~~~~~旧版本还要往上贴。

我们3.X要改的是xdoclet.xml这个文件,这个文件保证有,大家找到之后就能看见,他里边有好多种配置服务器的数据库的XML,我用的是JBOSS,所以就改这块了。

< jboss

version="3.0"

unauthenticatedPrincipal="nobody"

xmlencoding="UTF-8"

destdir="${ejb.dd.dir}"

validatexml="false"

datasource="java:/MySqlDS"

datasourcemapping="mySQL"

preferredrelationmapping="PLEASE_MODIFY_THIS"

/ >

对了对了,说到这我找到了文章也不错,是个小J写的。给你们地址:

http://nemuneko.com/jboss/lomboz_cmp.html

因为我最近在学日语,所以能看明白点,看不明白的就看图理解咯~~~~~

注意啊,这里是最关键的地方,我觉得,可能是因为我比较的笨。呵呵。

这里的MySqlDS是我在(7)里边写的在JBOSS里边配置的DEFUALT DATASOUCE,对了,我按照7里边写的把mysql-service.xml这个配置文件放的位置好象不可以,我查了好久才找到,原来是你的EJB部署到哪个文件夹下,这个mysql-service.xml文件就要跟着放到那个文件夹下,我机器上的是:D:\jboss-3.0.8\server\default\deploy

这个文件夹。最后就是把你的DB DRIVER放在和这个文件夹对应的LIB里边。

我机器上是这个:

D:\jboss-3.0.8\server\default\lib

我用的是Mysql 的driver,没有问题的。

这样配置就应该是没问题了。

对了,把建表的语句也给你们:create table address ( name varchar(40) , phone varchar(40));

然后SAVE你的XDOCLET.XML。做GENERATE EJB FILES,和DEPLOY。

假如你成功的话,就能看见这么一段的输出:

22:50:11,031 INFO [MainDeployer] Starting deployment of package: mybeans.jar

22:50:11,302 INFO [EjbModule] Creating

22:50:11,342 INFO [EjbModule] Deploying Address

22:50:11,392 INFO [EjbModule] Created

22:50:11,392 INFO [EjbModule] Starting

22:50:11,822 INFO [Address] Table 'ADDRESS' already exists

22:50:11,842 INFO [EjbModule] Started

22:50:11,842 INFO [MainDeployer] Deployed package: mybeans.jar

一定要看输出啊!很关键的地方。

这样就完成了我们的EJB CMP的BEAN了。再写个CLIENT测试他就OK了。

把我的CLIENT程序给你们。

public void testBean() {

try {

Address address = getHome().create("John Smith", "+212 223 4455");

Collection all = getHome().findAll();

Iterator it = all.iterator();

while (it.hasNext()) {

Address element = (Address) it.next();

System.out.println("Name:" +

element.getName() + " Phone: " +element.getPhone() );

}

} catch (Exception e) {

e.printStackTrace();

}

}

IMPORT自己记得加啊~哈哈。

运行,成功!!!!!!

下次又的写些理论上的东西,说实话,我最讨厌理论的东西,因为看上去真的很头大!~~

http://nemuneko.com/jboss/lomboz_cmp.html

下边这段文字是在CN-JAVA下COPY过来的。(http://www.cn-java.com/target/news.php?news_id=2174)

一、entity Bean 代表了以持久存储机制保存的一个实体,通常为一个DB。客户机通过entity bean的remote接口访问它,实现该remote接口的对象被称为EJB对象。每一个

entity 对象都有一个标识符。

Entity Bean的特征:持久的(分为BMP和CMP),允许共享访问,并且有一个主键。

二、编写规则:

1.(1)实现EntityBean的接口。

(2).类定义为PUBLIC。

(3).类不能定义为abstract 和final。

(4).实现finaler方法(仅用于BMP)。

(5).实现商业方法。

(6).含有一个空构造器。

(7).不能实现finalize方法。

2.ejbCreate应满足的规则:

(1).访问控制修饰符必须为public 。

(2).返回类型必为主键(仅对于BMP)。

(3).参数必须为佥的JAVA RMI类型。

(4).方法修饰符不能为final或static。

(5).throws子句可以包括CreateException以及应用程序中指定的其它异常。

3.ejbPostCreate:每一个ejbCreate必须对应一个ejbPostCreate方法,通常为空。

(1).参数的数量和类型必与相应ejbCreate方法匹配。

(2).访问控制修饰符必须为public。

(3).方法修饰符不能为final和 static。

(4).返回类型必须为void。

(5).throws子句包括CreateException以及应用程序中指定的其它Exception。

4.ejbRemove方法:当EJB客户调用此方法时,将删除DB中该实体的状态或EntityBean

被一个DB删除直接移走。

5.ejbLoad方法:利用DB刷新实体变量。

ejbStore方法:将变量写到DB中。

这两个方法用于同步与存贮在DB中的值所对应的EntityBean实体变量。

6.finder方法的规则:

(1).必须ejbFindByPrimaryKey方法。

(2).finder方法务必须以ejbFind为前缀。

(3).访问控制修饰符必须为public。

(4).方法修饰符不能为final和 static。

(5).参数必须是合法的Java RMI类型。

(6).返回类型必须为主键或主键的集合。

(7).throws子句包括FinderException以及应用程序中指定的其它Exception。

7.商业方法

(1).方法名不能与EJB结构定义的方法名冲突。

(2).访问控制修饰必为public.

(3).方法修饰不能final 或static。

(4).参数必须为合法的Java RMI类型。

三.Home接口的编写规则:

1.Create方法的编写规则:

(1).它与enterprise Bean类中对应的方法一样,含有相同的参数。

(2).返回Remote接口类型。

(3).throws子句包括对应的ejbCreate和 ejbPostCreate方法的异常。

2.finder讲法的编写规则:

(1).Remote接口中的每一个方法必须与enterpriseBean类中的方法匹配。

(2).每个方法命名规则与enterprise Bean类中的方法的命名规则一样。

(3).参数和返回类型必须是合法的Java RMI类型。

(4).throws子句包括RemoteException。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有