仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 638|回复: 10
打印 上一主题 下一主题

[学习教程] JAVA编程:J2EE计划形式:CMP到BMP形式(二)

[复制链接]
老尸 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:24:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
你说是sun公司对她研究的透还是微软?针对自己工具开发的.net性能上肯定会站上风的。j2ee|计划特定厂商的weblogic-ejb-jar.xml

我们起首在weblogic-ejb-jar.xml中界说厂商特定的信息。在这里我们告知服务器在哪儿寄存当地存根(stub)和哪儿往查找CMP映照。


耐久映照信息:

<persistence-type>
<type-identifier>WebLogic_CMP_RDBMS</type-identifier>
<type-version>6.0</type-version>
<type-storage>META-INF/weblogic-cmp-rdbms-jar.xml<
/type-storage>
</persistence-type>



当地JNDI名字

<local-jndi-name>InventoryHome</local-jndi-name>



特定厂商的weblogic-cmp-rdbms-jar.xml

数据源(datasource)称号:(这个数据源在设置的时分被创立)

<data-source-name>InventoryDB</data-source-name>



表(table)名:

<table-name>inventory</table-name>



域(field)映照

<field-map>
<cmp-field>stock</cmp-field>
<dbms-column>stock</dbms-column>
</field-map>
<field-map>
<cmp-field>item</cmp-field>
<dbms-column>item</dbms-column>
</field-map>
<field-map>
<cmp-field>price</cmp-field>
<dbms-column>price</dbms-column>
</field-map>



如今我们有了我们想要得统统。容器将使用笼统类和部署信息来使统统事情的很好。因为某些缘故原由,我们大概让这个CMPbean移植到BMP。以下是为何我们要如许做的缘故原由

1.可移植性:以后,它只事情在WebLogic6.1,,而我们其实不想进修其他的工具。这十分一般假如我们想卖这个数据库组件的话--它可以运转在任何服务器上。

2.功能:假如我们想很好的运转SQL(用存储历程,表的团结等等)。

3.可交换的数据源:假如我们想会见分歧的数据源而不是RDBMS。

用BMP移植Bean

这里我们将会商移植形式。我们能够经由过程“酿成耐久办理器“形式将CMP移植到BMP。我们能够看到耐久办理器扩大了我们创立的笼统类并完成了笼统类的办法!终极的计划看起来如图二:





BMP实体bean

让我们看看这个行将成为BMPbean的bean类:

扩大笼统CMPbean类:

publicclassInventoryBeanBMPextendsInventoryBean{}

创立映照域:

publicStringitem;

publicfloatprice;

publicintstock;改写ejb*()系列办法:

为了改写EJB办法,我们必要记着在BMP中我们对每个办法所负的义务

办法义务

ejbLoad()从数据库中读取数据(SELECT)

ejbStore()更新数据库中的数据(UPDATE)

ejbRemove()从数据库中删除数据(DELETE)

ejbCreate()拔出新的数据(INSERT)

ejbFindByPrimaryKey(primarykey)确认主键存在

ejbFindAllPrices()为每项前往一个主键的collection

年夜多半项目看起来是一样的,以是让我们看个中一个办法(你能够在所下载的代码中看到其他代码)

publicStringejbCreate(Stringitem,floatprice,intstock)throwsCreateException{
//insertrowintodatabase
this.item=item;
this.price=price;
this.stock=stock;
//拔出数据库纪录
try{
Connectionconnection=getConnection();
PreparedStatementstatement=connection.prepareStatement
("INSERTINTOinventory(item,price,stock)valueS(?,?,?)");
statement.setString(1,item);
statement.setFloat(2,price);
statement.setInt(3,stock);
if(statement.executeUpdate()!=1){
statement.close();
connection.close();
thrownewCreateException("Couldnotcreate:"+item);
}
statement.close();
connection.close();
returnitem;
}
catch(SQLExceptione){
thrownewEJBException("Couldnotcreate:"+item,e);
}
}
完成get和set办法:
publicStringgetItem(){
returnthis.item;
}
publicvoidsetItem(Stringitem){
this.item=item;
}
publicfloatgetPrice(){
returnthis.price;
}
publicvoidsetPrice(floatprice){
this.price=price;
}
publicintgetStock(){
returnthis.stock;
}
publicvoidsetStock(intstock){
this.stock=stock;
}



帮助函数失掉一个JDBC毗连:

privateConnectiongetConnection()throwsSQLException{
DataSourceds=null;
try{
Contextctx=newInitialContext();
ds=(DataSource)ctx.lookup("java:comp/env/jdbc/InventoryDB")
}catch(NamingExceptionexp){
exp.printStackTrace()
}
return(ds==null)?null:ds.getConnection();
}



EJB部署形貌符

尺度ejb-jar.xml

从CMP转换成BMP时要改动部署情况:

class指向BMP类而不是笼统类,我们要让容器晓得我们本人办理耐久:

<ejb-class>InventoryBeanBMP</ejb-class>
<persistence-type>Bean</persistence-type>
到场JDBC数据源援用:(在下面getConnection()办法中利用)
<resource-ref>
<res-ref-name>jdbc/InventoryDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
厂商特定的weblogic-ejb-jar.xml:
<reference-descriptor>
<resource-description>
<res-ref-name>jdbc/InventoryDB</res-ref-name>
<jndi-name>inventoryDB</jndi-name>
</resource-description>
</reference-descriptor>



我们不用过量地体贴厂商特定的文件,正如我们在CMP中所做的。我们必要指定当地JNDI称号(与之前一样),我们必要指出数据源的当地地点,它部署在使用服务器中。我们已重用了笼统类,改写它满意我们所必要得BMP完成,然后把我们的部署形貌符打包

结论:

我们已研讨了无能净拖拉让CMP转换为BMP完成的形式。我们的BMP完成只是复杂的扩大了CMP笼统bean类然后让它运转!注重到我们以不异的逻辑到场了get/set办法以确保我们在ejbStore()中不做任何举措,大概做一个查询。我们仍就要记着尽量的用CMPbean,BMP做为最初的手腕[完]

C++编译的是本地码,优点是启动快,而且可以精确控制资源因此可以开发很高效的程序.缺点是编程麻烦,而且容易留下安全隐患.跨平台靠源代码在各个平台间分别编译(一处编写到处编译)
莫相离 该用户已被删除
沙发
发表于 2015-1-20 23:58:20 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
小妖女 该用户已被删除
板凳
发表于 2015-1-30 08:09:32 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
若天明 该用户已被删除
地板
发表于 2015-2-5 15:37:51 | 只看该作者
是一种突破用户端机器环境和CPU
5#
发表于 2015-2-12 18:49:50 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
小魔女 该用户已被删除
6#
发表于 2015-2-25 21:52:28 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
飘飘悠悠 该用户已被删除
7#
发表于 2015-2-26 03:13:25 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
第二个灵魂 该用户已被删除
8#
发表于 2015-3-8 11:39:01 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
灵魂腐蚀 该用户已被删除
9#
发表于 2015-3-11 19:44:24 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
不帅 该用户已被删除
10#
发表于 2015-3-11 21:34:02 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
若相依 该用户已被删除
11#
发表于 2015-3-28 04:28:18 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-13 17:42

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表