“POJI”的版本间的差异
小 (1個修訂:HDwiki 数据迁移 批次 - 820) |
|||
| (未显示同一用户的1个中间版本) | |||
| 第1行: | 第1行: | ||
== 介绍 == | == 介绍 == | ||
| + | [[File:01300000344140124110468836318.jpg|thumb|(图)POJO]] | ||
| + | |||
| + | 典型的[[术语]]中,JavaBean 和接口通常分别称作普通旧式 Java 对象 (POJO) 和普通旧式 Java 接口 (POJI)。 | ||
| − | |||
| − | |||
EJB 3类和接口现在分别类似于 POJO 和 POJI。现在已经消除了对类似主接口这样的不必要工件的需求。 | EJB 3类和接口现在分别类似于 POJO 和 POJI。现在已经消除了对类似主接口这样的不必要工件的需求。 | ||
| + | |||
| + | |||
您不必在 javax.ejb [[程序包]]中实现某个 EJB 3接口(SessionBean、EntityBean 或 MessageDrivenBean)。相反,您可以使用 Stateless、Stateful、MessageDriven 或 Entity 对它们的 bean 类进行批注。例如,如果要将无状态 EJB 3定义为 HelloWorld,应按如下所示定义 EJB 3: | 您不必在 javax.ejb [[程序包]]中实现某个 EJB 3接口(SessionBean、EntityBean 或 MessageDrivenBean)。相反,您可以使用 Stateless、Stateful、MessageDriven 或 Entity 对它们的 bean 类进行批注。例如,如果要将无状态 EJB 3定义为 HelloWorld,应按如下所示定义 EJB 3: | ||
| − | import javax.ejb.Stateless;@Statelesspublic class HelloWorldBean implements HelloWorld {public void sayHello(String name) {System.out.println("Hello "+name +" from your first EJB 3.0 component ..."); }}EJB 的接口(无论是远程接口还是本地接口)不必实现 EJBObject 或 EJBLocalObject。 在本示例中,bean 类为 EJB 实现了业务接口 在本示例中,HelloWorldBean 实现了 HelloWorld 接口。 | + | |
| + | |||
| + | import javax.ejb.Stateless;@Statelesspublic class HelloWorldBean implements HelloWorld {public void sayHello(String name) {System.out.println("Hello "+name +" from your first EJB 3.0 component ..."); }}EJB 的接口(无论是远程接口还是本地接口)不必实现 EJBObject 或 EJBLocalObject。 在本示例中,bean 类为 EJB 实现了业务接口 在本示例中,HelloWorldBean 实现了 HelloWorld 接口。 | ||
| + | |||
| + | |||
import javax.ejb.Remote;@Remote | import javax.ejb.Remote;@Remote | ||
| + | |||
| + | |||
public interface HelloWorld {public void sayHello(String name);} | public interface HelloWorld {public void sayHello(String name);} | ||
| + | |||
| + | |||
如果查看以上的[[代码]]示例,则可以非常清楚地看到 @Remote 用于将[[接口]]标记为远程接口。 | 如果查看以上的[[代码]]示例,则可以非常清楚地看到 @Remote 用于将[[接口]]标记为远程接口。 | ||
| + | |||
| + | |||
如果需要,您的 EJB 3可以拥有远程接口和本地接口。主接口现在即使对会话 Bean 而言也是可选的。 | 如果需要,您的 EJB 3可以拥有远程接口和本地接口。主接口现在即使对会话 Bean 而言也是可选的。 | ||
| + | |||
| + | |||
从以上示例中,可以清楚地看到,使用 EJB 3.0,许多常规任务(如创建部署描述符和实现不必要的回调方法)现在都已经废弃了。 | 从以上示例中,可以清楚地看到,使用 EJB 3.0,许多常规任务(如创建部署描述符和实现不必要的回调方法)现在都已经废弃了。 | ||
| 第24行: | 第39行: | ||
== 应用架构 == | == 应用架构 == | ||
| + | [[File:01300000344140124110607039814.jpg|thumb|(图)POJI]] | ||
| + | |||
| + | Spring[[框架]]组件是一个流行的,但是非标准的[[开放源代码]]框架组件。它主要是由Interface21 Inc.公司开发和控制的。Spring框架组件的架构是基于依赖注入(DI)设计模式的。Spring可以单独地或者与现有的应用程序服务器一起工作,它大量地使用XML配置文件。 | ||
| − | |||
| − | |||
EJB 3.0框架组件是一个标准的框架组件,由Java社区组织(JCP)定义,并受到所有主流的J2EE厂商支持。预发布的EJB 3.0规范的开放源代码和商业实现都可以在JBoss和Oracle上看到了。EJB 3.0大量使用Java注释(annotation)。 | EJB 3.0框架组件是一个标准的框架组件,由Java社区组织(JCP)定义,并受到所有主流的J2EE厂商支持。预发布的EJB 3.0规范的开放源代码和商业实现都可以在JBoss和Oracle上看到了。EJB 3.0大量使用Java注释(annotation)。 | ||
| + | |||
| + | |||
这两个框架组件的核心设计理念是相同的:两者的目标都是把中间件服务传递给松散耦合的简单旧式[[Java对象]](POJO)。这些框架组件通过在运行时截取执行内容或向POJO注入服务对象,把应用程序服务与POJO捆绑在一起。POJO本身不关心捆绑的过程,并且对框架组件几乎没有依赖。其结果是,开发者可以聚焦于业务逻辑,个人可以在没有框架组件的情况下测试他们的POJO。此外,由于POJO不需要从框架组件中继承或实现框架组件接口,开发者建立[[继承结构]]和构建应用程序的时候都有高度的灵活性。 | 这两个框架组件的核心设计理念是相同的:两者的目标都是把中间件服务传递给松散耦合的简单旧式[[Java对象]](POJO)。这些框架组件通过在运行时截取执行内容或向POJO注入服务对象,把应用程序服务与POJO捆绑在一起。POJO本身不关心捆绑的过程,并且对框架组件几乎没有依赖。其结果是,开发者可以聚焦于业务逻辑,个人可以在没有框架组件的情况下测试他们的POJO。此外,由于POJO不需要从框架组件中继承或实现框架组件接口,开发者建立[[继承结构]]和构建应用程序的时候都有高度的灵活性。 | ||
| + | |||
| + | |||
但是,尽管两者的设计理念是相同的,它们传递POJO服务时却采用了完全不同的方法。尽管目前已经出版了大量的图书和文章来把Spring或EJB 3.0与EJB 2.1进行对比,但是它们都没有对[[Spring]]与[[EJB 3.0]]之间的差异进行认真的研究。在本文中,我将研究Spring和EJB 3.0框架组件之间的关键差异,并讨论它们的优缺点。本文的主题也可以应用在其它一些名气稍小的企业级中间件框架组件上,因为它们都聚焦于"松散耦合的POJO"设计。我希望本文能够帮助你选择符合需求的最佳的框架组件。 | 但是,尽管两者的设计理念是相同的,它们传递POJO服务时却采用了完全不同的方法。尽管目前已经出版了大量的图书和文章来把Spring或EJB 3.0与EJB 2.1进行对比,但是它们都没有对[[Spring]]与[[EJB 3.0]]之间的差异进行认真的研究。在本文中,我将研究Spring和EJB 3.0框架组件之间的关键差异,并讨论它们的优缺点。本文的主题也可以应用在其它一些名气稍小的企业级中间件框架组件上,因为它们都聚焦于"松散耦合的POJO"设计。我希望本文能够帮助你选择符合需求的最佳的框架组件。 | ||
| 第37行: | 第57行: | ||
| − | + | ||
[[Category:技術應用]] | [[Category:技術應用]] | ||
2014年8月11日 (一) 07:23的最新版本
介绍
典型的术语中,JavaBean 和接口通常分别称作普通旧式 Java 对象 (POJO) 和普通旧式 Java 接口 (POJI)。
EJB 3类和接口现在分别类似于 POJO 和 POJI。现在已经消除了对类似主接口这样的不必要工件的需求。
您不必在 javax.ejb 程序包中实现某个 EJB 3接口(SessionBean、EntityBean 或 MessageDrivenBean)。相反,您可以使用 Stateless、Stateful、MessageDriven 或 Entity 对它们的 bean 类进行批注。例如,如果要将无状态 EJB 3定义为 HelloWorld,应按如下所示定义 EJB 3:
import javax.ejb.Stateless;@Statelesspublic class HelloWorldBean implements HelloWorld {public void sayHello(String name) {System.out.println("Hello "+name +" from your first EJB 3.0 component ..."); }}EJB 的接口(无论是远程接口还是本地接口)不必实现 EJBObject 或 EJBLocalObject。 在本示例中,bean 类为 EJB 实现了业务接口 在本示例中,HelloWorldBean 实现了 HelloWorld 接口。
import javax.ejb.Remote;@Remote
public interface HelloWorld {public void sayHello(String name);}
如果查看以上的代码示例,则可以非常清楚地看到 @Remote 用于将接口标记为远程接口。
如果需要,您的 EJB 3可以拥有远程接口和本地接口。主接口现在即使对会话 Bean 而言也是可选的。
从以上示例中,可以清楚地看到,使用 EJB 3.0,许多常规任务(如创建部署描述符和实现不必要的回调方法)现在都已经废弃了。
应用架构
Spring框架组件是一个流行的,但是非标准的开放源代码框架组件。它主要是由Interface21 Inc.公司开发和控制的。Spring框架组件的架构是基于依赖注入(DI)设计模式的。Spring可以单独地或者与现有的应用程序服务器一起工作,它大量地使用XML配置文件。
EJB 3.0框架组件是一个标准的框架组件,由Java社区组织(JCP)定义,并受到所有主流的J2EE厂商支持。预发布的EJB 3.0规范的开放源代码和商业实现都可以在JBoss和Oracle上看到了。EJB 3.0大量使用Java注释(annotation)。
这两个框架组件的核心设计理念是相同的:两者的目标都是把中间件服务传递给松散耦合的简单旧式Java对象(POJO)。这些框架组件通过在运行时截取执行内容或向POJO注入服务对象,把应用程序服务与POJO捆绑在一起。POJO本身不关心捆绑的过程,并且对框架组件几乎没有依赖。其结果是,开发者可以聚焦于业务逻辑,个人可以在没有框架组件的情况下测试他们的POJO。此外,由于POJO不需要从框架组件中继承或实现框架组件接口,开发者建立继承结构和构建应用程序的时候都有高度的灵活性。
但是,尽管两者的设计理念是相同的,它们传递POJO服务时却采用了完全不同的方法。尽管目前已经出版了大量的图书和文章来把Spring或EJB 3.0与EJB 2.1进行对比,但是它们都没有对Spring与EJB 3.0之间的差异进行认真的研究。在本文中,我将研究Spring和EJB 3.0框架组件之间的关键差异,并讨论它们的优缺点。本文的主题也可以应用在其它一些名气稍小的企业级中间件框架组件上,因为它们都聚焦于"松散耦合的POJO"设计。我希望本文能够帮助你选择符合需求的最佳的框架组件。