`

JES服务程序

阅读更多
JES,是Java嵌入服务器-Java Embedded Server的缩写。在嵌入系统中使用Java,是Java跨平台战略的重要组成部分。国内目前并无比较系统的中文文献。
从最简单的包(bundle)开始
简介
每个包(bundle)都至少需要一个包激活器类,用来激活包,还要有一个清单(manifest)文件。包激活器类是一个实现org.osgi.framework.BundleActivator 的类,它定义了start (开始)和stop (结束)方法的逻辑。JES框架使用start 和stop方法来启动和停止包。

在这个例子里,我们建立一个简单的包(bundle),在它里面没有什么服务,仅仅在启动的时候显示Hello ,在停止的时候显示Bye 。请按以下步骤进行:

用Java编写一个包激活类
用文本文件的格式建立一个清单(Manifest)文件。
建立一个JAR文件,里面包含编译好的激活器类以及清单(Manifest)文件。
启动 JES框架,并安装、运行、停止包。
稍后,如果要建立复杂的包,你将编写服务,用服务处理处理框架工作的事件,利用JES核心服务;你还要给包激活器这个类增加功能。

BundleContext(包环境)对象
现在,是介绍BundleContext(包环境)对象的时候了。这个对象让包能够与JES框架相互作用。

在框架启动一个包的时候,就建立一个BundleContext 对象,并把这个对象传递给包激活器的start 方法。利用BundleContext 对象里的方法,包可以安装自己、登记服务、取得其它已经安装的包的信息、取得对服务的引用、获取或释放服务对象、获取或翻译包(Bundle)对象和文件(File)对象、占用框架发布的事件。BundleContext 对象的内容,在本教程的后面还会详细介绍。

现在,你对BundleContext 对象需要了解这些事情:

只有 JES框架能够创建BundleContext对象,包不能创建它。
在包被激活的时候,BundleContext对象被传递给start方法。
在包停止的时候,BundleContext还被传递给stop方法。
现在,我们来看看,如何编写包的激活器类。

包的生命周期
每个包都有一个生命周期。在生命周期里,包可以被安装、激活、更新、灭活,直至最后卸载。生命周期就是我们从比较高的级别上观察这一连串事件时,事件经历的时间 (如果你对细节有兴趣,可以查阅OSGi 服务网关规范,发行版1.0)。

生命周期运行的步骤就象这样:

1. 安装包

JES框架读取包的内容,给包分配一个包ID,并且持续地缓存包的位置和状态。会建立一个专门的类引导,以访问包的资源。

2. 激活包

框架检测这个包所要求的Java类是否已经由其它的包导入了。如果别的包已经导入了相应的类,框架就调用包激活器类里的start 方法,登记包的服务。这时,包的服务开始运行。

在这一步,JES框架还要解决包之间的依赖关系,这样可以保证:如果包B依赖包A,那么在启动包B之前,包A已经存在。

3. 灭活包

框架调用包的stop 方法,取消服务的登记。服务停止运行。

4. 卸载包。

包从计算机上删除。

如果在包的生命周期期间出现错误, JES框架就会抛出一个BundleException(包异常),这是一种特殊的异常类型,只在包的生命周期当中发生。BundleException is是OSGI规范定义的一个标准异常 (在org.osgi.framework里),JES实现了这个异常。

第一步:编写包的激活器类
我们要建立的greeting1 这个包,它的激活器类Activator.java非常简单,只定义了start 和stop 二个方法。

代码示例1-1 一个简单的包激活器类(greeting1/Activator.java)











package greeting1;

import org.osgi.framework.BundleActivator;

import org.osgi.framework.BundleContext;

import org.osgi.framework.BundleException;

public class Activator implements BundleActivator {

public void start(BundleContext context) throws BundleException {

System.out.println( "Hello" );

}

public void stop(BundleContext context) throws BundleException {

System.out.println( "Bye" );

}

}

激活器类Activator 保存在包greeting1 里①。它从org.osgi.framework逐个导入了BundleActivator, BundleContext, 和BundleException 这几个类②,而没有导入整个org.osgi.framework包,这样降低了JES装载包激活器时占用的内存数量。

激活器Activator 实现BundleActivator (包激活器)这个接口③,定义了它的start 和stop 方法,所有的包激活器类都要实现这些功能。在start 方法④的实现里,用它抛出BundleException(包异常),而没有用BundleActivator里声明的java.lang.Exception 作为抛出异常的方法,因为BundleException (java.lang.Exception的子类) 是JES框架用来抛出有关包的生命周期问题的异常类型。start 的这个实现,在包启动的时候,会显示Hello。

stop 方法⑤也抛出BundleException ,在包停止的时候显示Bye 。

第二步:建立清单文件
在JES框架里安装的每个包,都包含一个清单(Manifest)文件。清单文件是标准的文本文件,它描述了JAR文件里的内容。清单文件是结构化组织的文件,每个段都由一个头组成,每个头都有一个属性。例如,参见greeting1/Manifest文件,它的内容是:

BundleActivator: greeting1.Activator

这个清单文件只有一个头,它告诉JES框架,用哪个类作为包的激活器类。

头给JES框架提供了“钩子”,可以钩上包里包含的文件和资源。通过这种途径,框架就能知道,当包在生命周期中移动的时候,在包里的什么地方去找到资源(例如:包激活器)。

OSGi 规范义了能够在清单文件里供JES包使用的头(如表1-1所示)。但是表1-1 只显示了头的名称。每个头都有一套规定好的语法,必须用它的语法给它指定属性。不过,学习这份教程,并不需要了解语法的细节内容。如果你对细节感兴趣,可以参阅Java 嵌入服务器 2.0 开发人员指南。

表 1-1 在包的清单文件里可以使用的头



说明

Bundle-Activator

包激活器

Bundle-ClassPath

包的类路径

Bundle-ContactAddress

包的联系人地址

Bundle-Description

包的描述

Bundle-Vendor
包的开发商
Bundle-DocURL

包的文档URL

Bundle-Name

包名称

Bundle-NativeCode

包的本机码

Bundle-UpdateLocation

包的更新位置

Import-Service
导入服务
Bundle-Version

包的版本

Export-Package

导出包

Export-Service

导出服务

Import-Package

导入包

第三步:建立包的JAR文件
现在,我们有了一个包激活器类和一个清单文件,可以建立包了。建立包,可以使用gnumake (Solaris 平台)或者nmake (Windows平台)这两个工具。

在Windows NT上的操作方法如下:

1.打开一个 MS-DOS 命令窗口

2.转到greeting1目录,就象这样:

C:cd jes2.0docs utorialgreeting1

3. 建立 JAR 文件:

C: make

4. 检测是否成功创建了JAR 文件:

C:cd jes2.0docs utorialuildundles

C:dir greeting1.jar

第四步:安装、运行包
要启动JES框架,单击开始菜单,然后是程序>Java Embedded Server2.0>Java Embedded Server 2.0 Frame。
当JES框架启动时,在MS-DOS窗口时,可以看到下面内容:

Java Embedded Server 2.0
Copyright 1998, 1999 and 2000 Sun Microsystems, Inc.
All rights reserved. Use is subject to license terms.
Type ‘h[elp]’ for a list of commands.
>
要打开JES工具包JES Tools Portal—单击开始菜单,然后是程序>Java Embedded Server 2.0>Java Embdded Server 2.0 Tools Portal.
在Tools Portal里,单击管理面板,打开JES的管理面板 JES Management Panel。
在管理面板里,单击包(Bundles)标签。
在要安装的包文件(Bundle File to Install)里,找到greeting1 这个包(缺省是jes2.0/docs/tutorial/build/bundles/greeting1.jar),然后单击安装。
在右侧面板的列表中看到greeting1 时,单击开始。
检查在右侧面板中显示的greeting1.jar的详细内容.
分享到:
评论

相关推荐

    JES-javaemailserver

    Java Email Server(JES)是一个基于Java平台的电子邮件服务器软件,它允许开发者和系统管理员构建自己的邮件服务系统。本文将详细介绍如何使用JES搭建一个Java邮件服务器,以及在这个过程中涉及的关键知识点。 ...

    JES2

    从最简单的角度看,MVS 将作业和资源管理分配给了 JES 和 MVS 的基本控制程序 (BCP)。 #### JES2 的主要功能 - **作业输入**:接收来自 ISPF 的 submit 命令提交的作业、网络上的作业(包括其他主机通过 NJE 方式...

    JES2 Commands

    对于任何希望在z/OS环境中高效运行应用程序的企业来说,熟练掌握JES2命令都是至关重要的。在未来的学习和实践中,深入了解JES2命令的高级特性和最佳实践将有助于进一步提升作业处理能力,实现更复杂的业务需求。

    JES2 brief intro

    这里说明了性能提升的比例是基于理论和实验数据,但实际用户的体验可能因多种因素(如多程序设计的工作量、I/O配置、存储配置和处理的工作负载)而不同。 9. 通常,IBM硬件产品是使用新材料或新材料和服务良好的旧...

    jes.eastcx-axa.zip

    开发者可能在其中实现了特定的功能,例如处理保险业务流程、客户服务交互等。 2. **文档**:如果文件是文档形式(如.pdf, .docx, .xlsx),则可能包含项目报告、用户手册、需求规格书或技术文档,详细说明了"jes...

    jes:学生的Jython环境允许学生编写可以处理图片,声音和视频的Jython程序

    JES:学生的Jython环境JES是一个专为而设计的开发环境。 它允许学生使用Python编程语言(特别是Jython,这是用Java实现的Python版本)来操纵图像,声音和视频。 JES被Mark Guzdial和Barbara Ericson合并到“ Python...

    servidor_JES:Fiscalias后端应用程序

    【标题】:“servidor_JES:Fiscalias后端应用程序” 这个标题暗示我们正在讨论一个名为“servidor_JES”的项目,它是一个专为Fiscalias(可能是一个财政或审计相关的系统)设计的后端应用程序。后端应用程序通常...

    jes-gui-开源

    8. **jes-gui.jar**:Java归档(JAR)文件,包含JES-GUI应用程序的所有类和资源。 9. **JES-GUI.pdf**:可能是用户指南或教程的PDF文档。 10. **lib**:库文件夹,包含JES-GUI运行所需的外部依赖库。 综上所述,...

    夏威夷大学基于JES 平台整合学生信息系统

    夏威夷大学通过一种先进的学生信息...校园电子邮件应用程序,运行于Sun Java 企业系统(JES)平台。目前,电子邮件基本上取代了电话,现已成为夏威夷大学45,000 名学生和5,000 名教职员工中绝大多数人的主要通信渠道。

    Java Email Server (JES) Eclipse plug-in-开源

    这尤其适用于那些正在构建需要发送电子邮件的应用程序,例如订阅服务,通过这种方式,他们可以直接看到邮件的布局和内容,确保它们按照预期的形式呈现给最终用户。 邮件的布局和格式对于用户体验至关重要,特别是...

    ABCs of zOS System Programming Volume 13

    - **JES3 Global Benefits**:通过优化作业处理流程和提高资源利用率,JES3 可以为用户提供更高效的服务,并减少维护成本。 #### 八、JES3 与 XCF 通信 - **XCF (eXtended Communication Facility)**:这是一种用于...

    SUN Directory Server 培训资料

    SUN JES系统是一个集成的网络服务套件,它包含了一系列用于构建和运行企业级应用的服务,如Web服务和应用服务、身份服务和目录服务、通信服务和协作服务、可用性服务以及安全服务。通过统一的安装程序,JES简化了...

    JESftp:自动将作业提交到 IBM 大型机上的 JES 的脚本

    在远程主机上编写和调试汇编程序时,它允许人们拥有更灵活的工作流程。 ###示例用法 $ JESftp.py assign3.jcl 以上将自动执行以下操作: 将assign3.jcl 发送到作业队列并等待它执行。 将程序的输出保存在同一...

    ZOS中的作业管理概览

    JES2与Z/OS的基础控制程序(BCP)协同工作,BCP负责管理运行中的任务,而JES2则负责管理作业的生命周期。这种分工使得系统能够更加高效地处理大量的并发作业。 ##### 2.2 JES2与JES3的区别 虽然在单处理器环境下...

    Jython程序设计

    Java的平台无关性特点是其他语言无法比拟的,它还具有功能强大的集成开发环境,可以快速创建各种Java应用程序,而Python则具有很好的灵活性,开发快速,容易使用。Jython是这两种语言的组合,可以预见这种语言将有...

    作业控制子系统JCL介绍

    - **JES2的历史背景**:JES2源自早期的HASP(Houston Automatic Spooling Priority)系统,后者具备调度、作业流程控制、数据管理和作业管理等功能。尽管HASP已不再作为独立系统存在,但在JES2中仍能看到它的影子,...

    标准作业三单(SOS、JIS、MDS)

    在标准化作业文件(SOS/JES)中使用各种符号,目的在于对标准化作业文件中一些需要重点关注的工作步骤进行强调,以达到更好的目视化效果。如果员工未能完全按照文件中描写完成这些操作则会对自身安全、产品质量、...

    JCL Introduction

    总结起来,JCL是IBM大型机操作系统中用于作业管理和控制的关键语言,它的语句结构和功能设计使得用户能够精确地控制作业的执行流程,包括程序的调用、数据的处理和系统资源的分配。理解和熟练运用JCL对于在IBM大型机...

    立邦漆公司向Sun架构的移植预期使总拥有成本降低50%

    此外,互操作性确保了立邦漆公司的系统能够与现有的异种环境无缝协作,无论是内部还是外部合作伙伴,都能实现数据和流程的有效整合。 再者,立邦漆公司期望通过移植到Java企业系统,能够加速新应用和新技术的市场...

    mainframe 大型机 JCL语言与实用程序教程

    【描述】:这是一本关于mainframe大型机的JCL(Job Control Language)语言及其实用程序的中文经典教程,旨在帮助读者深入理解和掌握在IBM大型机系统中如何有效地编写和管理作业流程。 【JCL语言详解】: JCL是IBM...

Global site tag (gtag.js) - Google Analytics