EJB(Enterprise JavaBeans)是Java EE平台中的核心组件,用于构建可移植、安全和可扩展的企业级应用程序。EJB 3.0是EJB规范的一个重要版本,它引入了许多改进,使得EJB的开发变得更加简单,更接近普通Java对象(POJOs)的编程模型。以下是关于EJB 3.0的一些关键知识点:
1. **无状态会话Bean(Stateless Session Beans)**:
- 如文件中所示,无状态会话Bean是不保留客户端之间会话信息的bean。它们适合执行独立的业务操作,不涉及跨请求的状态维护。
- 通过`@Stateless`注解,我们可以标记一个类为无状态会话Bean。这个注解告诉EJB容器,该类应该被当作无状态Bean处理。
2. **远程接口(Remote Interfaces)**:
- 客户端与EJB通信的接口就是远程接口。在EJB 3.0中,你可以定义一个普通的Java接口来作为远程接口,如`HelloWorld`接口。
- 使用`@Remote`注解标记接口,表明它是一个远程接口。EJB容器将根据此接口生成客户端调用所需的代理对象。
3. **实现接口**:
- `HelloWorldBean`类实现了`HelloWorld`接口,提供了具体的业务逻辑。在这里,`SayHello`方法是业务方法,用于向用户提供服务。
4. **注解驱动的配置**:
- EJB 3.0的一大改进是引入了注解,减少了XML配置文件的需求。`@Stateless`和`@Remote`注解就是这种简化配置的例子。
5. **部署**:
- 一旦实现了EJB,需要将其打包成JAR或EAR文件进行部署。对于EJB 3.0,通常可以使用IDE如Eclipse的导出功能,或者使用`jar`命令行工具进行打包。
- 部署到应用服务器(如JBoss或WebLogic)后,客户端可以通过JNDI(Java Naming and Directory Interface)查找并调用EJB。
6. **WebLogic客户端示例**:
- 示例展示了如何在WebLogic上查找并使用EJB。创建一个`Hashtable`来配置JNDI上下文,然后使用`InitialContext`查找EJB。JNDI名称通常是`<bean_name>#<interface_name>`的形式。
7. **JNDI名称**:
- 在WebLogic中,EJB的JNDI名称需要在服务器的配置中设置。示例中的`"HelloBean#ejb.Hello"`就是JNDI名称,其中`HelloBean`是bean的名称,`ejb.Hello`是接口的全限定名。
EJB 3.0的这些特性显著降低了开发和维护企业级应用程序的复杂性,使得Java开发者可以更加专注于业务逻辑,而不是底层的基础设施管理。同时,它也提供了标准的方式来分布和管理业务组件,增强了应用程序的可移植性和可扩展性。