`
zhuyuanxiang
  • 浏览: 131353 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Apusic Operamasks的资源注入

阅读更多

★ 什么是资源?
开发过程中与业务无关的服务、类的实例或者变量的值。比如:Apusic J2EE应用服务器管理的JDBC服务是资源,用户开发的EJB、WebService是资源、用户定义的配置文件也是资源。


★ 为什么要资源注入?
大多数企业级java应用程序都使用了诸如DataSources,EJBs或WebService的外在的资源和服务,在J2EE 1.4中,用户必须在部署描述符中明确声明所依赖的资源或者使用JNDI的lookup方法去获得资源的引用。

最初目的是为了减少应用与资源的依赖度,具体可以参考IoC(控制反转)和DI(依赖注入),但现在作者认为优点很多:
1. 减少应用与资源的依赖度,便于应用的后期组装。例如:将数据库连接池在后期组装时作为资源注入到系统中,这样使应用在开发过程中不会与资源绑定。
2. 简化应用的复杂度,使程序员开发中更多关注业务。例如:通过标注将资源在变量定义的时候注入进去,开发人员直接可以使用变量,而无须再通过代码获得。
3. 规范应用的开发过程,提升应用后期运行的稳定性。例如:通过注入的方式使用资源,而无须在开发期管理资源的生命周期以及创建与销毁,避免出现重复创建或者内存泄漏。

★ 哪些资源可以注入?
数据源、JMS目的地、环境变量、EJB、WebService、上下文资源、Managed Bean、Spring Bean、LocalString

★ 如何注入和使用资源?
 // Apusic系统日志,采用的是JDK 1.4的日志系统
 @Inject
 private java.util.logging.Logger logger;
 public void IndexBean() {
  logger.info("初始化IndexBean!");
 }

    // JavaServer Faces的相关资源
 // JSF的FacesContext
 @Inject
 private javax.faces.context.FacesContext fContext;
    // 获取应用的HttpRequest
    HttpServletRequest request=(HttpServletRequest)fContext.getCurrentInstance().getExternalContext().getRequest();
    // 获取应用的HttpResponse
    HttpServletResponse request=(HttpServletResponse)fContext.getCurrentInstance().getExternalContext().getResponse();
    // 获取应用的HttpSession
    HttpSession session=(HttpSession) fContext.getCurrentInstance().getExternalContext().getSession(true);
    // JSF的服务器实例
 @Inject
 private javax.faces.application.Application app;
 // JSF的导航句柄
 @Inject
 private javax.faces.application.NavigationHandler nHandler;
 // JSF的EL表达式工厂实例
 @Inject
 private javax.el.ExpressionFactory expFactory;
 // JSF的事件广播者实例
 @Inject
 private org.operamasks.faces.event.EventBroadcaster event;
 // 相同生命周期的ManagedBean,参考CRUD例子
 @Inject
 private IndexBean indexBean;

 // JNDI资源注入
 // 数据库连接池资源注入
 @Resource(mappedName = "jdbc/CRUD")
 private javax.sql.DataSource CRUD;
   Connection con = CRUD.getConnection();
 // 消息工厂资源注入
 @Resource(mappedName="jms/ConnectionFactory")
 private javax.jms.ConnectionFactory connFactory;
 // 消息主题资源注入
 @Resource(mappedName="testTopic")
 private javax.jms.Topic topic;
 // 消息队列资源注入
 @Resource(mappedName="testQueue")
 private javax.jms.Queue queue;
 // 事务服务资源注入,一个线程只提供一个事务服务,因此不需要提供名称直接可以注入
 @Resource
 private javax.transaction.UserTransaction tx;
 
 // EJB资源注入
 @EJB(name="com.apusic.examples.crud.second.service.PersonService")
 IPersonService personService;
 
 // 资源文件的注入,注意:只能注入前缀为LocalStrings的文件组
 @LocalString
 private Map<String, String> messages;
 messages.get("WindowBean.email.required");
 
    // 配置文件注入上下文资源
    在faces-config.xml中在需要注入的bean中加入managed-property属性和值
 <managed-bean>
  <managed-bean-name>windowBean</managed-bean-name>
  <managed-bean-class>
   com.apusic.examples.crud.second.bean.WindowBean
  </managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
  <managed-property>
   <property-name>injectName</property-name>
   <property-class>java.lang.String</property-class>
   <value>Operamasks</value>
  </managed-property>
 </managed-bean>
 在WindowBean.java中直接定义
 private String injectName;
 public void setInjectName(String injectName) { // 通过这个函数提供资源注入
  this.injectName = injectName;
 }
★ 参考资料
http://www.matrix.org.cn/resource/article/2006-04-05/Dependency+Injection_44321.html

★ 备注
本文现在只介绍了基础资源注入知识,随着作者本人对资源注入的理解,将会继续补充与完善。

2
1
分享到:
评论

相关推荐

    Apusic OperaMasks-jsfdemo

    Apusic OperaMasks很全的JSF的例子,什么都有,如:TREE 、GRID、FORM、BOX、MENU、DIALOG、AJAX。都很漂亮的。

    Apusic OperaMasks 2 参考手册

    Apusic OperaMasks 2 参考手册(中文)

    人力资源管理系统(HRM)源码[实习项目]

    HR 演示系统以企业内部人力资源管理系统为原型,通过该示例,您可以体验到使用OperaMasks开发一个小型系统的富客户端体验。 Apusic OperaMasks――开箱即用的Web Framework,它以JSF为基础引擎,辅以独创的原生Ajax...

    Apusic服务器解决数据源的资源引用

    ### Apusic服务器解决数据源的资源引用 #### 一、背景与概述 在现代软件开发过程中,特别是基于Java的企业级应用程序开发中,数据源管理是一个非常重要的环节。Apusic服务器作为一款高性能、高可用的应用服务器,...

    金蝶Apusic V10 应用服务器用户管理手册

    总的来说,金蝶Apusic V10应用服务器用户管理手册详细介绍了产品的安装、配置、使用和管理,是用户快速掌握该产品并成功部署企业级应用的宝贵资源。无论是新手还是经验丰富的管理员,都能从中受益,提升工作效率,...

    Apusic密码修改指引

    为了减少不必要的资源占用,建议删除ApusicWeb管理控制台。 **操作步骤:** 1. **停止EAS服务。** 2. **删除指定文件:** - `EASHOME\apusic\lib\webtool.ear` - `EASHOME\apusic\domains\server(n)\deploy\....

    apusic数据库连接攻略

    该攻略主要用于在apusic文件中配置数据库连接,以便在应用程序中使用数据库资源。 1. 配置数据源 在apusic文件中,配置数据源是实现数据库连接的第一步。数据源的配置包括两个部分:JNDI名称和驱动程序类名称。在...

    金蝶中间件Apusic-plugins.zip

    总之,金蝶中间件Apusic-plugins.zip提供的插件资源对于使用Eclipse或MyEclipse的开发者来说,是提升Apusic应用开发体验的重要工具,通过它们,开发者可以更加高效地进行中间件上的应用开发和管理工作。

    管理Apusic Web服务器

    管理 Apusic Web 服务器 Apusic Web 服务器是 Apusic 应用服务器中内置的一个高效、安全、可靠的 Web 服务器,提供完整的 Web 服务器的功能,使 Apusic 应用服务器在提供对静态页面和图形的同时,提供对 JSP、...

    Apusic--license

    金蝶中间件(Apusic)--license

    EAS Apusic2016年的临时许可

    4. **性能优化**:针对各种应用场景进行了深度优化,包括内存管理、线程调度、数据库连接池等,旨在提高系统性能,降低资源消耗。 5. **开发工具支持**:EAS Apusic与主流的开发工具如Eclipse、IntelliJ IDEA等集成...

    operamasks开发的程序连接mysql数据库

    本示例介绍了如何使用OperaMasks框架(可能是Apusic应用服务器的一部分)来开发Java程序,实现与MySQL数据库的连接。以下是详细的知识点解析: 1. **OperaMasks与Apusic**: OperaMasks可能是一个基于Apusic应用...

    OperaMasks快速进阶

    【OperaMasks快速进阶】文档详尽地介绍了OperaMasks这一开源Java框架,它由金蝶中间件公司的Apusic捐赠初始代码,并在OperaMasks.org开源社区不断成熟。OperaMasks是一个Web2.0框架,它以IoVC(Inversion of View-...

    Apusic5.1域配置

    【Apusic5.1域配置】是针对Apusic5.1服务器的一项关键操作,它涉及到服务器的管理和应用部署。Apusic(全称Apsara Music)是阿里巴巴集团研发的企业级中间件,主要用于构建高可用、高性能的企业级服务系统。本指南将...

    Windows2003+Apusic6.0安装部署手册

    Windows2003+Apusic6.0安装部署手册 本手册旨在指导用户在 Windows 2003 操作系统上安装和部署 Apusic 6.0,旨在帮助用户快速掌握安装和配置 Apusic 6.0 的步骤。 一、安装准备 在开始安装 Apusic 6.0 之前,需要...

    Apusic_license

    Apusic 7.0,2014,license,

Global site tag (gtag.js) - Google Analytics