|
|
翻译:Smiling_Sundoc:田大海 如果你用早期版本的Sun Java System Studio IDE来创建企业 bean,也就是说,如果企业 bean按照EJB 1.1版规范来创建,可以把它们迁移到当前版本的IDE和EJB 2.0版。按照EJB 1.1 企业 bean的类型以及你要如何对它做处理,这个过程可能会自动地由IDE来完成转换。可能你要自己做一些手工改变,本附录就讨论这种情况。 当前IDE和以前版本的不同包括container-managed persistent (CMP) 实体 bean,他们的属性,以及企业 bean的校验。请注意下面两点:
你可以通过版本号标签(当前版本的IDE添加的)非常容易地区分这些bean。CMP 实体 bean的属性页中, 在CMP Version域, 你可以看到在当前IDE中生成的bean有一个值2.x,而 以前版本的CMP 实体 bean具有值1.x。 (以前版本的bean指CMP 1.x 实体 bean.)
使用EJB Validate (在IDE Explore中,从企业 bean的上下文菜单中选择) 或者Build All (从package上下文菜单中得到) 去发现包含以前版本bean的应用程序能否部署到当前版本的IDE中。如果校验中发现了错误,请阅读下面一节。 一旦不bean校验成功,把它组装到模块(module)和应用中,试着来部署它。如果部署失败,检查是否是因为bean属性页中的改变导致的问题。
当你已经作出了这些改变,而CMP实体 bean依然是CMP 1.x版;它还没有转变成CMP 2.x的实体 bean。但是这个Bean的存在接口和Bean能够被当前的IDE操作和部署不会发生任何错误。假设你的应用服务器是CMP 2.0兼容的。
|
|||||||||||||||||||||||||||||||||||||||||||||||
|
|
警告- 不要用这种方式增加local interface。如果你这样做,你将不能删除这些接口。CMP 实体 bean将变得无效并且不能被修复。 |
同样的告诫也适用于EJB本地引用(local EJB references)。它们不能加到CMP 1.x 实体bean中,即使Customizer窗口看上去允许这样做。如果你已经这样做了,你可以在Customizer对话框中删除它们。
EJB 2.0规范的内容非常广,其新的编码实践在新的IDE中被大大加强。在可能的情况下,你应当使用新版本IDE的EJB Builder向导重新创建以前的企业bean。仔细评估你的代码并升级它以适用当前的EJB规范。
注意 –如果需要的话,你可以在其他类型的EJB 1.1 企业 bean中增加本地接口和 EJB本地引用。因为IDE自动转化这些bean来适用当前的EJB规范。Customizer对话框和属性页可以用来修改这些企业 bean。
PointBase缺省的数据库用户名和密码已经从原来的public改为pbpublic.所有的属性页都因此需要修改来反映这种变化。注意输入密码后使用Enter或Return键确认。
在前一个IDE版本中,在会话bean中允许下面的声明:
public class HelloBean implements javax.ejb.SessionBean { private transient SessionContext context;
在前一个版本中,对使用transient修饰符不作校验。在当前版本中,对它进行校验并禁止使用。
对于一个简单EJB 1.1 会话 bean的EJB校验命令也许不会校验出使用了这个修饰符。下面几步,能够确认你的bean是完全校验过的。
1. 在explorer窗口,选择需要校验的bean
2. 在主菜单,选择Build
Build.
IDE构建编译(build)这个Bean的所有的类同时进行校验。编译器把构建信息输出到结果窗口,包括任何错误信息。
如果你的会话bean中transient修饰符,在构建bean或者client执行它时会出现错误信息。要改正它,从EJB Bean class中删除transient,并重新校验或构建这个bean,如果成功则重新布署它和运行客户端。
EJB 2.0规范做了如下的声明:
Bean的提供者必须假定transient域的内容可能会在ejbPassivate 和ejbActivate通知调用期间丢失。因此Bean的提供者不应该在transient 域中存储下列对象的引用:SessionContext对象、JNDI命名上下文或它任何的子上下文、Home interface、remote interface以及UserTransaction。
对于那些部署在RI中CMP实体bean来说,你必须将其RI相关的bean一级的属性转化为EJB模块级。
企业bean的属性页变化很小。当一个企业bean调用另一个企业bean,引用在调用端创建。 要使这种应用能运行,需要做两个变化。如果不做这些变化,可能会出现不能保存部署的错误信息。它可能由于 CMP 实体 bean属性页中错误的数据库相关信息所致。下面几步可以修正这种错误:
1. 在explorer窗口,右击Bean的EJB module 节点,选择Properties。
2.转到Properties窗口的J2EE RI tabbed interface。
三个属性(他们出现在前一个版本中 J2EE RI 属性页中)出现在这里。它们代表了实体 bean中使用的数据库连接。
3. 声明每一个数据库连接的属性
如果使用PointBase数据库,请输入下列值:
测试bean之前改变CMP 实体 Bean的属性
在以前版本的IDE中,如果CMP 企业 bean含有数据库连接的正确信息,那么为这个bean产生的测试程序不用任何改变就可以部署到RI里面。
当前版本中,你不用为会话 bean 或 bean-managed persistent (BMP) 实体 bean产生的EJB测试应用做任何改变。
然而,对那些你向部署到RI里面对PointBase进行测试的CMP 实体 bean来讲,需要做一些改变。如上面提到的那样,数据源JNDI的名字、用户ID和密码必须从企业 bean级转到EJB模块级,PointBase缺省的用户ID和密码已经改变,EJB引用的J2EE RI tabbed interface的JNDI名字只有一个属性。CMP bean的属性页不会自动更新。
要改变这些属性,按下列步骤来做:
1. 在Explorer窗口, 右击产生测试特性的EJB module节点,选择 Properties
2. 在属性页面, 单击J2EE RI tab页
3. 在J2EE RI tabbed interface中, 请参照把Bean的RI属性转移到EJB模块级更新三个数据源域。
如果你在设置这些属性之前,想要部署你的应用,你会得到错误信息,另外在结果输出窗口的Deploying Application tab页中有详细的错误信息。
|
创建EJB组件 |
816-7864-10 |
|
|||||||||||
|
|||||||||||
|
|||||||||||
|
|||||||||||