介绍:
我们都曾在某个时候在各种项目中创建自定义适配器模块。我们大部分都是用 EJB(Enterprise Java Bean) 2.1 标准编写的自定义模块。在这篇博客中,让我们看看 EJB 2.1 和 3.0 标准之间的一些主要区别,以及如何在 EJB 3.0 标准中开发和部署您的自定义模块。如果您对如何在 EJB 2.1 标准中创建/开发自定义适配器模块有基本知识,那么本文档将更有帮助。
差异:
EJB 2.1 和 EJB 3.0 之间的几个主要区别是
SN | EJB 2.1 版 | EJB 3.0 版本 |
1 | XML 部署描述符 (ejb-jar.xml) 是必需的 | XML 部署描述符是可选的,可以使用注释 |
2 | Bean 实现类必须实现 SessionBean 接口 | 不需要实现 SessionBean 接口 |
3 | Bean 实现类必须覆盖所有 bean 生命周期方法,无论您是否使用它们 | 如果需要,使用 Comments 添加您自己的 bean 生命周期方法 |
4 | 开发人员需要做更多复杂工作 | 简单,开发人员的工作量更少,因为容器可以完成大部分工作。 |
EJB2.1 和 3.0 之间还有许多其他差异,但我们没有使用它们。
下面在 EJB 3.0 中创建一个简单的适配器模块:
为了简化实现,我们的自定义适配器模块只是将一条语句打印到audit log中。
第 1 步:在 NWDS 中创建新的 EJB 项目
- Project name: FileValidation_EJB
- EJB module version: 3.0
- Add EAR membership: FileValidation_EAR
- 单击 Next
- 取消选中用于创建 EJB client jar的选项
- 取消选中 Generate ejb-jar.xml deployment descriptor
- 单击 Finish
步骤 2:配置Build Path
- 右键单击 FileValidation_EJB
- 选择 Build Path > Configure Build Path
- 选择 Libraries 选项卡
- 在 Add Library 中单击
- 选择 XPI 库
- 单击 Next
- 选择库类型:XPI Adapter Libraries
- 单击 Finish
第 3 步:创建新的会话 Bean
- 右键单击 FileValidation_EJB
- 选择 New > Session Bean(EJB 3.x)
- Java package: com.sap.pi
- Class name: Validation
- State type: Stateless
- 取消选中 create remote and local business interface
- 单击 Finish
向 Validation 类添加以下注释
- @Stateless(name=“ValidationBean”)
- @Local(value={ModuleLocal.class})
- @Remote(value={ModuleRemote.class})
- @LocalHome(value=ModuleLocalHome.class)
- @RemoteHome(value=ModuleHome.class
使用 @PostConstruct 和 @PreDestroy 注释实现 Module 接口并添加 Bean 生命周期方法。Bean 生命周期方法是可选的,可以忽略。
步骤 4:为模块提供 JNDI 名称
- FileValidation_EJB > EJBModule > META-INF 展开
- 双击 ejb-j2ee-engine.xml
- 右键单击 XML 节点 ejb-j2ee-engine
- 选择 Add Child > enterprise-bean
- 右键单击 XML 节点 enterprise-bean
- 选择 添加子项 > jndi-name
- ejb-name: ValidationBean(这应该与 @stateless 注解中指定的值相同)
- jndi-name: SetValidation (此名称将在通信通道模块选项卡中使用)
- 保存文件
第 5 步:向 EAR 添加标准引用
- 将 FileValidation_EAR > EarContent 扩展为 META-INF >
- 双击 application-j2ee-engine.xml
- 右键单击 XML 节点 application-j2ee-engine
- 选择 Add Child > reference
- 右键单击 reference-target
- 选择 Add Attribute > provider-name
- reference-target: engine.security.facade
- reference-type: hard
- target-type: service
- provider-name: sap.com
重复步骤 5 中的步骤并添加以下引用
SN | Reference-Target | Reference-Type | Target-Type | Provider-Name |
1 | engine.j2ee14.facade | hard | library | sap.com |
2 | com.sap.aii.af.svc.facade | hard | service | sap.com |
3 | com.sap.aii.af.ifc.facade | hard | interface | sap.com |
4 | com.sap.aii.af.lib.facade | hard | library | sap.com |
5 | com.sap.base.technology.facade | hard | library | sap.com |
- 右键单击 XML 节点 application-j2ee-engine
- 选择 Add Child > fail-over-enable
- 右键单击 XML 节点 fail-over-enable
- 选择 Add Attribute > type
- 右键单击节点 fail-over-enable
- 选择 Add Attribute > mode
- xsi:type: fail-over-enableType_disable
- 模式:disable
- 保存文件
第 6 步:将 EAR 部署到 PI Web AS Java 中
- 右键单击 FileValidation_EAR
- 选择 Export > SAP EAR file
- 在本地文件系统上选择目标文件夹
- 选中 Export source files 并单击 Finish
将 SAP AS Java 实例添加到 NWDS
- Window > Preferences > SAP AS Java 单击“添加”按钮
- 输入您的 PI 系统主机名和实例编号,然后单击 OK(确定)
NWDS 中的开放部署透视图
- 选择 Window > Open Perspective > Other > Deploymen
- 单击 OK
在 Deployment Job 视图中
- 单击 Deployment List 下的 Import 按钮
- 选择文件系统
- 单击 Finish 并选择要从本地文件系统部署的 EAR 文件。
- 单击 Start 按钮开始部署
- 如果出现提示,请输入 j2ee_admin 凭据
该模块应该可以成功部署,没有任何错误
第 7 步:在通信通道中使用模块并测试
在通道中使用自定义开发的module
Audit log
注意:
- EJB3.0 解决了与 EJB2.0 相同的问题,但 EJB3.0 比 EJB2.0 对开发人员更友好
- 演示中使用 SAP NWDS (Net Weaver Developer Studio) 7.31 SP10,本文档中的屏幕截图可能会因您使用的 NWDS 版本而异。
- NWDS 中使用到的透视图是 Java EE