- 浏览: 145886 次
- 性别:
- 来自: 杭州
-
文章分类
最新评论
-
gadmyth:
beta reduction也介绍错了(λx . e)f →β ...
Lamda演算简介 -
gadmyth:
左结合法则是错的,因为Application binds mo ...
Lamda演算简介 -
hongmeikaile:
...
Struts2与ajax的组合 -
aguai0:
非常详细,学习了
prototype-1.3.1.js 开发笔记 -
左看右看:
...
DAO编程模式(转)
本文是关于 Java 管理扩展(Java Management Extension (JMX))的三部分系列文章的第一部分,在本文中,Sing Li 研究了网络管理软件的历史,以及它是如何从开始阶段粗陋的软件发展成现今这样复杂而成熟的企业管理系统的。他还研究了困扰这些系统的许多常见问题的根源。以及如何利用 JMX 来解决它们。
Java 管理扩展(JMX)是 Java 平台上热门的新增部分,它承诺为与企业网络管理相关的老问题提供可伸缩的、低实现成本和与旧系统兼容的解决方案。新型的软件服务器(包括象 Jakarta Tomcat 和 JBoss 这样的流行开放源码服务器)能迅速地将 JMX 用作其管理标准。我们将通过研究网络管理软件的历史以及它是如何发展的,来开始我们对 JMX 的研究。
早期的网桥、协议转换器和路由器都是简单的专用硬件设备,通常是通过直接连接到该设备本身串口的终端来配置的。配置命令通常用来启用或禁用端口,或者更改设备支持的协议的特征。这些“黑箱”上可配置参数的数量是有限的,串行终端界面通常比较“神秘”并且只有受过大量培训的网络操作员才能够理解,如图 1 所示:
图 1. 专门的串行连接

由于网络规模的增长,以及这些“黑箱”的数目激增,很明显需要一些方法来寻址和控制这些大量的网络设备。一些供应商选择了提供用于管理这些设备的单独的“带外(out-of-band)”互连或集中器网络,如图 2 所示:
图 2. 带外多路复用控制

其他供应商使用了“带内(in band)”技术,这种技术中,在运行这些“黑箱”的同一网络上发送寻址和控制信息,如图 3 所示:
图 3. 带内设备控制和管理

客户机软件(称为管理控制台,该名称是从终端控制台等类似的名称继承而来)从“神秘的”终端样式的界面缓慢地发展成增强的 GUI 配置工具,后者能够对网络上每个可寻址的设备单独地进行配置。由此产生了早期的网络管理系统(NMS)。很大程度上,专用网络协议在这一时期处于支配地位,早期 NMS 通常使用专用协议来寻址、控制和监控供应商的设备。
接着进入了 TCP/IP 网络的时代。通过早期的因特网雏形,TCP/IP 协议族成为全球性互连网络的标准。大型企业发现:他们需要连接其分别发展的、专用的异构内部网络孤岛(其中许多来自于全球范围内不同的供应商),但同时又不失去对整个企业内所有设备的控制。
此外,基础设施构建人员在其运作中将维护越来越多的联网黑箱。这经常要跨越位于不同地理区域的多个网络运营中心。因此需要从集中的位置来管理、控制和监控所有这些设备。来自这两大用户群体的迫切需求催生了早期企业 NMS 的概念。
在此期间,管理控制台(客户机)使用最新的图形工作站和处理技术,并通常包括受管设备位置的交互式地图,以及网络网状拓扑的示意图。通过在地图上或 GUI 网络图的节点上点击,网络操作中心工作人员可以监控任何特定设备的状态并更改其设置和配置。作为异构网络管理的实际标准,SNMP(简单网络管理协议 ― 一个完全为 TCP/IP 网络上的网络管理而设计的协议)变得更流行了。尽管由于实践和经济上的原因,最初 SNMP 受到了抵制,但专用联网硬件供应商最终还是采纳 SNMP 作为管理其联网设备的备选方法。
几乎与 TCP/IP 革命同时,装备了 PC 和 LAN 的办公室的数量呈爆炸性地增长。这需要一些企业的 NMS 承担新的范围:管理和控制 PC 工作站、打印机、外设以及其它 LAN 设备,如图 4 所示:
图 4. 向管理混合体中添加 PC 和 LAN 设备

许多供应商将其新取得的能力作为营销优势来推动其企业管理系统或简称 EMS(注意并未强调“网络”这个字眼)。在此期间,领先的供应商提供的商业 EMS 的规模和复杂性都提高了,但许多供应商的产品仍然维持着大量的专用代码库,并支持所有特定于供应商的旧系统。现有的基于 GUI 的管理控制台(客户机)软件,被反复地“移植”到新兴的桌面操作系统的许多不同版本上,这放宽了限制,但增加了底层代码库的复杂性。SNMP 协议被扩展到了其极限,以支持它设计时从未考虑的新的和不同的设备。由于受管的网络端点数量激增并超出了可管理级别,因而,几乎在每种商业 EMS 中,增值智能管理辅助都成为了标准。
随着受 EMS 管理的端点骤增,因特网革命给大多数 EMS 系统和架构设计师带来了冲击。突然之间,曾经完全迥异的大型网络都通过因特网连接了起来,而客户要求这个“网络的网络”可以使用他们了解和喜欢的同一种对用户友好的管理控制台进行管理(请参阅图 5)。
随着各种智能网络设备、PC 和外围设备的不断出现,在对这些端点的日常管理和监控中需要越来越多的智能。此外,对通过因特网进行业务的需求的不断增长,致使 EMS 需要支持一种新的端点:智能软件服务器/服务。
对于新型的 EMS 系统而言,能够访问企业在全球各地的每一台数据库服务器、Web 服务器、应用程序服务器和特大容量磁盘(disk farm)(新的、高智能、宽带宽、自适应特大容量磁盘现在称为 存储区域网络或 SAN)都有管理访问权,这并不希奇。
图 5. 新型 EMS

在当今 EMS 时代,智能管理辅助不再是一个选项,而是必需的。对于处理组成和拓扑都经常变化的动态网络,该需求也是必须的。此外,适应和支持任何新的和未来设备的能力是一项明确的要求。但是,这些新 EMS 还必须继续支持旧设备、协议和软件的混合物并能与之协调一致地工作,因为客户在艰难的发展过程中,曾经对它们作过巨大投资。实际上,客户对于支持现有的基于 GUI 的 EMS 客户机有着强烈的需求,因为对这些复杂的工具进行过培训方面的投资。同时,EMS 的新用户还要求最新型的基于 Web 的管理界面以支持可能的远程管理和监控。
使用这些新 EMS 系统,您仍然可以启用和禁用旧的“哑”联网黑箱上的端口,但只要轻松地发出类似这样的命令:
必要时自动地切换到备份应用程序服务器群集和数据库服务器,以便在接下来的 24 小时中保持 95% 的正常运行时间;当发生灾难性故障时通过寻呼机 808-555-1212 向网络操作员报警。换句话说,当在典型的 应用程序服务供应商(ASP)环境中出现网络故障时,您还可以依靠智能管理辅助来管理它们。
在因特网时代,软件体系结构和联网协议有哪些更改,以便这种复杂的网络管理能继续发挥功能呢?实际上,我们已经描述过的 EMS 案例很大程度上仍是“发展中的工作”。JMX 是朝向实现动态网络的通用管理的一个关键步骤,它具有完全的向后兼容性以及对现有的和旧 EMS 基础结构的支持。
![]() ![]() |
![]()
|
Java 平台所具有的许多特性使之成为复杂网络管理解决方案实现的自然的候选者,这些特性包括平台和 OS 无关性、联网和动态适应性。
因为 Java 语言的平台和 OS 无关性,NMS 开发人员不再需要为每种 OS 和硬件平台组合维护一个代码库版本。相反,现在可以将用来提高产品功能的精力和工作集中到单个代码库上。
与大多数其它编程语言不同,联网是 Java 平台的核心部分。它不是事后添加的或第三方库,因此,可以确信和保证它与 OS/硬件平台的其它部分能良好协作。这很重要,因为较早的网络管理产品常常依靠第三方联网库来满足平台/OS 组合不能提供的需求,或实现作为目标的稳定性。
网络管理软件可以方便地利用跨网络动态且安全地装入类的能力。例如,基于 Java 的 EMS 可以仅仅跨网络“装入”它的支持模块来支持它们,并可按照需要动态地升级实现网络管理智能的软件模块。
![]() ![]() |
![]()
|
JMX 是业界广泛合作创建一套规范的成果,它将描述可扩展的体系结构、API 和一组使用 Java 编程语言用于网络管理的分布式服务。正如先前详细描述的,它利用了 Java 平台的网络管理能力。在撰写本文时,最新的规范是 Java 管理扩展工具和代理规范 v1.1(Java Management Extension Instrumentation and Agent Specification,v1.1)。
可交付使用的 JMX 包括一组规范、API 文档、符合 JMX 规范的参考实现和兼容性测试套件。请参阅 参考资料以获取 JMX 1.1 规范和更多信息。
JMX 的目标只是定义构成 JMX 体系结构内系统的接口,而不在不必要时指定实现和策略。对于赢得在现有网络和服务管理技术方面有既得专利权益的供应商的支持,这一思想是必需的。它将使新的基于 JMX 的应用程序在设计上享有最大的自由度和灵活性 ― 避免了规定的实现和策略可能不适合于未来需求的情形。这样,参考实现仅提供了一个关于如何满足指定的一组接口的示例,而没有建议或推荐实现这一点的方法。
![]() ![]() |
![]()
|
JMX 的体系结构和操作模型旨在满足下列目标:
- 可伸缩性:适应从管理少数设备或服务到管理因特网时代的企业可能拥有的数万个可管理端点的能力
- 旧系统集成和兼容性:与现有 NMS 或 EMS 解决方案以及与可能不支持 JMX 的旧的可管理端点协作的能力
- 低成本实现:无需大量设计和编码工作,即可轻松地将 JMX 兼容性设计到现有软件产品和设备中
在 JMX 体系结构中,采用三级分而治之的体系结构化方法来降低可伸缩网络管理的复杂性。 图 6 说明了这三个松散耦合的层。它们是:
- 工具层:在本层,可管理端点(设备、软件服务等)可通过 JMX 指定的接口访问。这是通过创建公开可配置属性、可访问操作和事件的 Java 对象实现的。这些对象称为 ManagedBean(简称 MBean)。在规范中将可通过这些对象管理的端点称为 JMX 可管理的资源。通过提供 Java MBean 封装器,可以轻松地将旧的非 JMX 设备和服务器(如 SNMP 兼容的设备或子网)“调整”成 JMX 可管理的资源。这一层上的 JMX 可管理资源可以完全独立于任何其它 JMX 体系结构层上的对象进行设计。
- 代理层:在本层中,公开了 JMX 代理的内部体系结构。 JMX 代理是软件组件,它向远程管理组件公开一组标准化代理服务并通过 JMX 可管理资源的 MBean 接口直接控制这些资源。实际上,在 JMX 代理内可通过能够动态地装入和卸装 MBean 的 MBean 服务器来管理 MBean。访问 MBean 服务器的接口由 JMX 指定。大型 EMS 系统中的增值服务(如本地化智能监控和自动化响应),可在该层的 JMX 体系结构中实现。可以独立于其它层的对象设计这一层的代理。代理通过连接器或协议适配器与管理应用程序通信。但是,用于这些组件的规范仍处于开发过程中。
- 分布式服务层:在本层中,目标是指定为 JMX Manager 组件提供的接口。JMX Manager 可以访问代理或代理组来管理由代理公开的 JMX 可管理的资源。实质上,这些是 EMS 应用程序开发人员进行编程所依赖的接口。Manager 组件可以是 EMS 应用程序或管理多个代理和相关资源的中间智能层。
图 6. JMX 体系结构的三层

图 6 说明了三个层上的 JMX 对象,以及由 JMX 1.1 指定的接口。利用面向对象设计和 Java 编程语言,JMX 体系结构中的每层都是高度组件化的并由良好定义的接口进行划分的。按照这些良好规定的接口编写符合规定的代码,确保了我们的工具和代理逻辑可以与任何兼容 JMX 1.1 的实现一起使用。虽然 JMX 1.1 规范中规定了工具和代理层,但分布式服务层仍属于未来规范的范畴(在图 6 中显示为水平灰点线以及其上的点框)。现有网络管理标准(包括 SNMP 和 CIM/WBEM)的标准 JMX 接口正在由其它组同步进行制定。
工具层的核心是 MBean 接口。MBean 接口指定了如何访问属性、如何调用操作(类似于 Java 编程语言中的方法)以及如何从 MBean 发送事件。MBean 有两种主要类型,表 1 中作了详细说明。
MBean 类型 | 描述 |
标准 MBean | 与标准 MBean 相关联的所有属性、操作和事件都在其接口中静态地指定。它们是固定的,不随时间变化而变化。标准 MBean 必须实现按固定编码约定(在 JMX 1.1 规范中称为 词法设计模式)编码的管理接口,MBean 规范中对此有详细描述。例如,要用标准 MBean 使用名为 WebServer 的类,则其管理接口必须称为 WebServerMBean 。JMX 代理通常使用“自省(introspection)”来发现标准 MBean 的管理接口。 |
动态 MBean | 所有动态 MBean 都实现 javax.management.DynamicMBean 接口。通过使用 DynamicMBean 接口,与 MBean 相关联的一组属性、操作和事件直到运行时才是确定的。这满足了拥有可能随时间改变而改变的属性、操作和事件的可管理 JMX 资源的需要(例如,工具应用程序服务器可能以不同的发行版级别 ― Tomcat 4.1.4 和 Tomcat 4.1.5 ― 支持不同属性)。它也自然地适合于由联合的网络技术工具,如 Jini/Jiro。 |
有两种用于特殊用途的动态 MBeans 子类型,如表 2 所示:
MBean 类型 | 描述 |
模型 MBean(Model MBean) | 所有 JMX 实现都必须提供一个模型 MBean 的实例 ― 实现 javax.management.modelmbean.ModelMBean 接口。它必须命名为 javax.management.modelmbean.RequiredModelMBean 。模型 MBean 提供了“现成的”MBean 实现,您可以立即使用它来快速地利用任何 JMX 可管理资源。它是预制的、通用的和动态的 MBean 类,作为参考实现的一部分提供,已经包含了所有必要缺省行为的实现 ― 允许您在运行时添加或覆盖需要定制的那些实现。这使得基于 Java 的、非工具化的资源能够在运行时提供保证兼容的 MBean 虚包,使它们能够通过 JMX 体系结构进行管理。 |
开放 MBean(Open MBean) | 开放 MBean 是一种动态 MBean,其中所有的 MBean 属性都属于一组指定的 Java 数据类型( String 、 Integer 、 Float 等),并且 bean 通过一组 javax.management.openmbean.* 接口提供自我描述的数据。任何代理和任何管理器/EMS 都可以轻松地管理由这些 bean 提供的 JMX 可管理资源。JMX 1.1 中没有完整地详细说明开放 MBean 的细节,并且参考实现也没有包括它们。 |
图 7 说明了如何使用 MBean 来将工具添加到设备和软件服务。请注意,相应的 MBean 是设备或服务的 JMX 内部表示。任何已向 JMX 代理中的 MBean 服务器(稍后讨论)注册的 MBean 都可以将其管理接口(属性、操作和事件)向远程 NMS 或其它 JMX 应用程序公开。但是,当我们添加 MBean 以利用设备或软件服务时,我们不必考虑将哪种 JMX 代理或 NMS 用于管理工作。
图 7. JMX 的操作模型

一些 MBean 可能需要持久性支持以确保正确的操作。这些 MBean 应该总是实现 javax.management.PersistentMBean
接口。这个接口仅有 save()
和 load()
方法。持久 MBean 实现负责在 bean 构造期间调用 load()
方法,以根据被持久化的值初始化 MBean 的状态。
![]() ![]() |
![]()
|
图 7 揭示了典型 JMX 代理的内部构造。请注意,代理内部的四种主要组件是 MBean 服务器、一组代理服务、连接器和协议适配器以及定制代理逻辑。
MBean 服务器是代理内部的核心组件。所有 MBean 在可以通过远程应用程序访问之前都必须向 MBean 服务器注册。当使用 MBean 服务器时,通过唯一的对象名对已注册的 MBean 进行寻址。远程管理器应用程序(或分布式服务)只能通过 MBean 的管理接口(已公开的属性、操作和事件)发现和访问 MBean。
代理还提供了一组代理服务,定制代理逻辑可以使用它们在 MBean 服务器中对已注册的 MBean 进行操作。为了符合 JMX 1.1,这些服务是必需的 ―所有代理都必须提供它们。有趣的是,可以用 MBean 本身的形式实现这些服务。以 MBean 的形式实现服务有几个优点:
- 可以通过 Manager 组件或 EMS 远程访问该服务的操作。
- 通过从远程管理器应用程序进行访问,EMS 可以远程地管理服务本身。
- 可以通过下载 MBean 在运行时动态地执行服务逻辑的更新。
表 3 显示了 JMX 1.1 规范中定义的一组代理服务。
m-let 或管理 Applet 服务 | 支持跨网络从 URL 位置装入动态类(请参阅 javax.management.loading.MLetMBean 和相关联的类/接口)。 |
监视器服务 | 将代价高昂的远程轮询操作转换成本地操作;监控 MBean 属性的特定更改并在观察到更改时发送事件。 |
计时器服务 | 经历了指定的时间量后发送事件,或以指定时间间隔定期发送事件(请参阅 javax.management.monitor.MonitorMBean 和相关的类/接口)。 |
关系服务 | 支持 MBean 之间的关系定义,并强制关系的完整性(请参阅 javax.management.relation.RelationServiceMBean 和相关的类/接口)。 |
增值代理逻辑通常是编写的代码。它是能够提供本地化智能的定制代理逻辑,用来管理向该代理注册的 JMX 可管理资源。例如,如果我们有两个冗余的应用程序服务器群集,就可以创建定制代理,监控负载级别并且动态地将入站请求重定向到不同的群集 ― 通过对已注册的服务器的 MBean 进行操作。通常,NMS 的供应商也会提供定制逻辑。一旦分布式服务的规范得以充实,可以预言,某种特定的定制代理逻辑将可以与定制远程 JMX 管理器组件良好地协作,以提供更高级别的网络管理功能。
代理不与分布式服务、NMS 或其它管理应用程序直接通信。而是使用连接器和协议适配器。这种体系结构与 J2EE 连接器体系结构(J2EE Connector Architecture)是一致的(请参阅 参考资料)。协议适配器是一种软件组件,它通过标准化协议(如 HTTP 和 SNMP)提供对代理管理的资源的访问。
连接器是一种专用软件组件,它提供了到代理和/或该代理上的受管资源的远程接口(通常使用诸如 CORBA 或 RMI 这样的远程过程调用技术来完成 ― 为了安全性通常通过 SSL)。当代理有多个活动的连接器和协议时,可以通过多个异构的应用程序或 NMS 同步地访问受管资源。可以用协议适配器来提供对现有的和已建立的 NMS 的向后兼容性。例如,我们可以为支持这个标准的 NMS 创建 通用信息模型/基于 Web 的企业管理(CIM/WEBM)适配器,或者可以创建 电信管理网络(TMN)协议适配器来启用由 JMX 代理管理的电信资源上的 操作、管理和维护(OAM)。JMX 连接器和协议适配器的精确规范属于正在同时开发的规范的范畴(请参阅 参考资料)。
![]() ![]() |
![]()
|
构仅完整定义了工具和代理层,但它已经在基于 Java 的企业技术开发人员中赢得了广泛的支持。
2002 年 8 月 18 日提议的 J2EE v1.4 最终草案版本(请参阅 参考资料)详细描述了基于 JMX 的工具将如何成为 J2EE Web 容器(JSP/Servlet 引擎)、EJB 容器和应用程序客户机容器的标准部分。这是很自然的发展,因为基于 J2EE 服务器的广泛部署正使得可管理性成为明确的需求。(正如您可以想象的,在部署了数百台服务器的大型站点中,手工或专门配置、管理和监控几乎是不可能的。)
迄今为止,商业服务器产品已经通过专用方式或特殊添加物(使产品与现有 NMS 产品兼容)来支持可管理性。J2EE v1.4 规范中作为管理基础的 JMX 标准化,对于确保来自不同供应商的服务器产品普遍地与 NMS 兼容(并可由 NMS 管理)大有帮助。
实现的案例研究:Apache Jakarta Tomcat 4.1.x
Tomcat 4.1.x 服务器的最新 beta 测试版与 J2EE v1.4 规范保持一致,它已经集成了 JMX 工具。请参阅 参考资料一节以获得关于从哪里下载的信息。大多数 Tomcat 工具集中于配置组件,这些组件对应于 Tomcat 的 Catalina 引擎中的运行时对象。原本只能通过 conf
目录中的 server.xml
和 web.xml
文件更改的配置组件(如 <Engine>、<Host>、<Server>、<Service>、<Connector>、<Context> 和 <Realm>),现在都可以通过 JMX MBean 实现使用。
如果您研究一下 org.apache.catalina.mbeans
包(在源代码分发版或 API Javadoc 中),就会发现所有公开 Tomcat 配置组件的 JMX 工具 MBean 类。一些示例包括利用 <Context> 配置组件的 org.apache.catalina.mbeans.StandardContextMBean
,而 org.apache.catalina.mbeans.MemoryUserDatabaseMBean
利用 <MemoryUserdatabase> 组件。如果您研究实际的源代码,您将发现 Tomcat 4 工具广泛利用了 JMX 实现提供的模型 MBean 模板。
目前,Tomcat 4.1.x 使用 MX4J JMX 实现(一个开放源码许可的 JMX 实现),而不是 Sun 的参考 JMX 实现。但是,两个实现都是完全兼容 JMX 1.1 的。请参阅 参考资料一节以找到 MX4J 最新版本的链接。
广泛的 Tomcat 工具的一个立杆见影的好处就是可以很容易地创建一个基于 Web 的 GUI 管理应用程序。Tomcat 4.1.x 提供了一个称为 admin 的应用程序。应用程序本身是用 Struts 应用程序框架和 JSP 技术创建的。它通过本地 JMX 代理的 MBean 服务器访问所有的配置组件(与 server.xml 文件中定义的那些相同)。在 Tomcat 环境中,JMX 代理是由 org.apache.catalina.mbeans.ServerLifeCycleListener
类创建的。该类是一个在 Tomcat 启动和关闭时会调用的 LifeCycleListener
。
要尝试这个基于 JMX 的 admin 实用程序,首先您必须编辑 Tomcat 分发版的 conf
目录下的 tomcat-users.xml
文件。确保您为 tomcat 用户添加了 admin 角色:
|
<MemoryUserdatabase> 组件将使用该文件在运行时验证访问,要运行这个实用程序,用户必须具有 admin 角色。接下来,启动 Tomcat 4.1.x。
打开浏览器并输入 URL:
|
在登录页面,输入:
|
现在,请研究 admin 实用程序并观察 JMX MBean 是如何支持实时显示和修改 Catalina 配置组件值的。例如,图 8 显示了 <Context> 配置组件的属性的配置页面:
图 8. 基于 JMX 1.1 的 Tomcat 4 GUI admin 实用程序

当然,除了基于 Web 的 admin 应用程序之外,Tomcat 的工具支持由其它代理和 EMS 来管理它。
![]() ![]() |
![]()
|
通过利用 Java 平台和谨慎的设计,JMX 达到了其设计目标:可伸缩性、低实现成本和与现有技术的兼容性。在下一篇文章中,我们将使用参考 JMX 1.1 代码,实现我们自己的标准 MBean 和动态 MBean,利用所需的模型 MBean 作为快速工具,并用 JMX 代理进行实验。
![]() ![]() |
![]()
|
- 您可以参阅本文在 developerWorks 全球站点上的 英文原文.
- 下载 最新 JMX 规范、参考实现和兼容性测试套件。
- 要获得完全开放源码的 JMX 1.1 实现,也是 Jakarta Tomcat 当前使用的 JMX,请查看 MX4J项目。
- 有关 SNMP 的更多信息,请参考因特网工程任务组(Internet Engineering Task Force)的 RFC 1157文档,或者请参阅 SNMP 版本 3的最新进展。
- 有关 CIM/WEBM 的详细信息和最新进展,请查看 分布式管理任务组(Distributed Management Task Force)的网站。
- 可从 Jakarta 项目下载带有 JMX 1.1 工具的 Tomcat 4.1.x 服务器的最新版本。也可获取源代码分发版。
- 对于有关 JMX 分布式服务、协议适配器和连接器规范的正在进行的工作,请参阅 JSR 160 JMX Remoting 1.2、 JSR 146 WEBM Services和 JSR 70 IIOP Protocol Adapter for JMX。
- JMX 以一个代理连接器/适配器体系结构为特色,类似于 J2EE 连接器体系结构。
- J2EE 1.4 以为 JMX 提供完整的容器为特色。请下载新出现的 J2EE 1.4 规范的最新版本。
- IBM 的 Tivoli软件以安全的企业管理解决方案为特色,这些方案支持各种现有的和新出现的网络管理标准,包括 TMX4J― 一个可从 alphaWorks 获取的兼容 JMX 的实现。
- 请一定要访问最新的 developerWorks产品园地的 Tivoli Developer Domain Lite以获取关于 Tivoli 软件和安全性产品的技术信息。
- 请在 developerWorks Java 技术专区上查找数百篇与 Java 技术相关的参考资料。
发表评论
-
始终会用上的Common BeanUtils
2007-12-12 09:27 1187Beanutils用了魔术般的反射技术,实现了很多夸张有用的功 ... -
代理模式之理解
2007-10-17 17:22 2048代理模式解决不同请求和相应的目标对象的中介作用,实现面向接口编 ... -
DAO编程模式(转)
2007-10-12 14:55 1415J2EE开发人员使用数据访 ... -
Learn techniques for building better DAOs
2007-10-12 13:57 1451Software Engineer 7 October 200 ... -
JAVA设计模式之事务处理
2007-10-12 11:08 1171事务处理是企业应用需要解决的最主要的问题之一。J2EE通过JT ... -
JAVA字符集
2007-07-03 16:34 9961. 概述 本文主要包括 ... -
多级反向代理[Squid]下获取客户端真实IP地址
2007-06-18 17:05 5743多级反向代理[Squid]下获取客户端真实IP地址 在很多应 ... -
导入导出
2007-04-11 16:35 1333How to create a new workbo ... -
汉字按拼音排序
2007-04-05 16:11 21701。将要排序字符串设置成GBK编码 2。自定义一个类,实现Co ...
相关推荐
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
8c71b76fb2ec10cf50fc6b0308d3dcfc_9545878e2b97a84b2e089ece58da9e82
Android逆向过程学习
内容概要:本文详细介绍了基于西门子S7-200 PLC的糖果包装控制系统的设计与实现。首先阐述了PLC在工业自动化领域的优势及其在糖果包装生产线中的重要性。接着深入探讨了系统的硬件连接方式,包括传感器、执行机构与PLC的具体接口配置。随后展示了关键的编程实现部分,如糖果计数、包装执行、送膜控制、称重判断以及热封温度控制等具体梯形图代码片段。此外,还分享了一些实用的经验技巧,如防止信号抖动、PID参数优化、故障诊断方法等。最后总结了该系统的优势,强调其对提高生产效率和产品质量的重要作用。 适合人群:从事工业自动化控制、PLC编程的技术人员,尤其是对小型PLC系统感兴趣的工程师。 使用场景及目标:适用于糖果制造企业,旨在提升包装生产线的自动化程度,确保高效稳定的生产过程,同时降低维护成本并提高产品一致性。 其他说明:文中不仅提供了详细的理论讲解和技术指导,还结合实际案例进行了经验分享,有助于读者更好地理解和掌握相关知识。
内容概要:本文详细介绍了参与西门子杯比赛中关于三部十层电梯系统的博图V15.1程序设计及其WinCC画面展示的内容。文中不仅展示了电梯系统的基本架构,如抢单逻辑、方向决策、状态机管理等核心算法(采用SCL语言编写),还分享了许多实际调试过程中遇到的问题及解决方案,例如未初始化变量导致的异常行为、状态机遗漏空闲状态、WinCC画面动态显示的挑战以及通信配置中的ASCII码解析错误等问题。此外,作者还特别提到一些创意性的设计,如电梯同时到达同一层时楼层显示器变为闪烁爱心的效果,以及节能模式下电梯自动停靠中间楼层的功能。 适合人群:对PLC编程、工业自动化控制、电梯调度算法感兴趣的工程技术人员,尤其是准备参加类似竞赛的学生和技术爱好者。 使用场景及目标:适用于希望深入了解PLC编程实践、掌握电梯群控系统的设计思路和技术要点的人士。通过学习本文可以更好地理解如何利用PLC进行复杂的机电一体化项目的开发,提高解决实际问题的能力。 其他说明:文章风格幽默诙谐,将严肃的技术话题融入轻松的生活化比喻之中,使得原本枯燥的专业知识变得生动有趣。同时,文中提供的经验教训对于从事相关领域的工作者来说非常宝贵,能够帮助他们少走弯路并激发更多创新思维。
慧荣量产工具合集.zip
内容概要:本文详细介绍了永磁同步电机(PMSM)的FOC(磁场定向控制)和SVPWM(空间矢量脉宽调制)算法的仿真模型。首先解释了FOC的基本原理及其核心的坐标变换(Clark变换和Park变换),并给出了相应的Python代码实现。接下来探讨了SVPWM算法的工作机制,包括扇区判断和占空比计算的方法。此外,文章还讨论了电机的PI双闭环控制结构,即速度环和电流环的设计与实现。文中不仅提供了详细的理论背景,还分享了一些实用的编程技巧和注意事项,帮助读者更好地理解和应用这些算法。 适合人群:电气工程专业学生、从事电机控制系统开发的技术人员以及对永磁同步电机控制感兴趣的科研人员。 使用场景及目标:① 学习和掌握永磁同步电机的FOC控制和SVPWM算法的具体实现;② 提供丰富的代码示例和实践经验,便于快速搭建和调试仿真模型;③ 探讨不同参数设置对电机性能的影响,提高系统的稳定性和效率。 其他说明:文章强调了在实际应用中需要注意的一些细节问题,如坐标变换中的系数选择、SVPWM算法中的扇区判断优化以及PI控制器的参数调整等。同时,鼓励读者通过动手实验来加深对各个模块的理解。
# 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
Android逆向过程学习
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
3dmax插件
# 【spring-ai-autoconfigure-vector-store-qdrant-1.0.0-M7.jar中文文档.zip】 中包含: 中文文档:【spring-ai-autoconfigure-vector-store-qdrant-1.0.0-M7-javadoc-API文档-中文(简体)版.zip】 jar包下载地址:【spring-ai-autoconfigure-vector-store-qdrant-1.0.0-M7.jar下载地址(官方地址+国内镜像地址).txt】 Maven依赖:【spring-ai-autoconfigure-vector-store-qdrant-1.0.0-M7.jar Maven依赖信息(可用于项目pom.xml).txt】 Gradle依赖:【spring-ai-autoconfigure-vector-store-qdrant-1.0.0-M7.jar Gradle依赖信息(可用于项目build.gradle).txt】 源代码下载地址:【spring-ai-autoconfigure-vector-store-qdrant-1.0.0-M7-sources.jar下载地址(官方地址+国内镜像地址).txt】 # 本文件关键字: spring-ai-autoconfigure-vector-store-qdrant-1.0.0-M7.jar中文文档.zip,java,spring-ai-autoconfigure-vector-store-qdrant-1.0.0-M7.jar,org.springframework.ai,spring-ai-autoconfigure-vector-store-qdrant,1.0.0-M7,org.springframework.ai.vectorstore.qdr
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
内容概要:本文详细介绍了平方根容积卡尔曼滤波(SRCKF)在永磁同步电机(PMSM)控制系统中的应用及其相对于传统CKF的优势。文章首先指出传统CKF在处理协方差矩阵时存在的数值不稳定性和非正定问题,导致系统性能下降。接着,作者通过引入SRCKF,利用Cholesky分解和QR分解来确保协方差矩阵的正定性,从而提高状态估计的精度和稳定性。文中展示了具体的电机模型和状态方程,并提供了详细的代码实现,包括状态预测、容积点生成以及观测更新等关键步骤。此外,文章还分享了实际调试过程中遇到的问题及解决方案,如选择合适的矩阵分解库和处理电机参数敏感性。最终,通过实验数据对比,证明了SRCKF在突加负载情况下的优越表现。 适合人群:从事永磁同步电机控制研究的技术人员、研究生及以上学历的研究者。 使用场景及目标:适用于需要高精度状态估计的永磁同步电机控制系统的设计与优化,特别是在处理非线性问题和提高数值稳定性方面。 其他说明:文章引用了相关领域的权威文献,如Arasaratnam的TAC论文和Zhong的《PMSM无传感器控制综述》,并强调了实际工程实践中代码调试的重要性。
# 【tokenizers-***.jar***文档.zip】 中包含: ***文档:【tokenizers-***-javadoc-API文档-中文(简体)版.zip】 jar包下载地址:【tokenizers-***.jar下载地址(官方地址+国内镜像地址).txt】 Maven依赖:【tokenizers-***.jar Maven依赖信息(可用于项目pom.xml).txt】 Gradle依赖:【tokenizers-***.jar Gradle依赖信息(可用于项目build.gradle).txt】 源代码下载地址:【tokenizers-***-sources.jar下载地址(官方地址+国内镜像地址).txt】 # 本文件关键字: tokenizers-***.jar***文档.zip,java,tokenizers-***.jar,ai.djl.huggingface,tokenizers,***,ai.djl.engine.rust,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,djl,huggingface,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【tokenizers-***.jar***文档.zip】,再解压其中的 【tokenizers-***-javadoc-API文档-中文(简体)版.zip】,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件; # Maven依赖: ``` <dependency> <groupId>ai.djl.huggingface</groupId> <artifactId>tokenizers</artifactId> <version>***</version> </dependency> ``` # Gradle依赖: ``` Gradle: implementation group: 'ai.djl.huggingface', name: 'tokenizers', version: '***' Gradle (Short): implementation 'ai.djl.huggingface:tokenizers:***' Gradle (Kotlin): implementation("ai.djl.huggingface:tokenizers:***") ``` # 含有的 Java package(包): ``` ai.djl.engine.rust ai.djl.engine.rust.zoo ai.djl.huggingface.tokenizers ai.djl.huggingface.tokenizers.jni ai.djl.huggingface.translator ai.djl.huggingface.zoo ``` # 含有的 Java class(类): ``` ai.djl.engine.rust.RsEngine ai.djl.engine.rust.RsEngineProvider ai.djl.engine.rust.RsModel ai.djl.engine.rust.RsNDArray ai.djl.engine.rust.RsNDArrayEx ai.djl.engine.rust.RsNDArrayIndexer ai.djl.engine.rust.RsNDManager ai.djl.engine.rust.RsSymbolBlock ai.djl.engine.rust.RustLibrary ai.djl.engine.rust.zoo.RsModelZoo ai.djl.engine.rust.zoo.RsZooProvider ai.djl.huggingface.tokenizers.Encoding ai.djl.huggingface.tokenizers.HuggingFaceTokenizer ai.djl.huggingface.tokenizers.HuggingFaceTokenizer.Builder ai.djl.hu
3
pchook源码纯源码不是dll
# 【spring-ai-azure-store-1.0.0-M7.jar中文-英文对照文档.zip】 中包含: 中文-英文对照文档:【spring-ai-azure-store-1.0.0-M7-javadoc-API文档-中文(简体)-英语-对照版.zip】 jar包下载地址:【spring-ai-azure-store-1.0.0-M7.jar下载地址(官方地址+国内镜像地址).txt】 Maven依赖:【spring-ai-azure-store-1.0.0-M7.jar Maven依赖信息(可用于项目pom.xml).txt】 Gradle依赖:【spring-ai-azure-store-1.0.0-M7.jar Gradle依赖信息(可用于项目build.gradle).txt】 源代码下载地址:【spring-ai-azure-store-1.0.0-M7-sources.jar下载地址(官方地址+国内镜像地址).txt】 # 本文件关键字: spring-ai-azure-store-1.0.0-M7.jar中文-英文对照文档.zip,java,spring-ai-azure-store-1.0.0-M7.jar,org.springframework.ai,spring-ai-azure-store,1.0.0-M7,org.springframework.ai.vectorstore.azure,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,springframework,spring,ai,azure,store,中文-英文对照API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【spring-ai-azure-store-1.0.0-M7.jar中文-英文对照文档.zip】,再解
内容概要:本文档是关于信捷电气XD、XL系列可编程序控制器的用户手册(硬件篇)。手册详细介绍了该系列PLC的硬件特性,包括产品概述、本体规格参数、系统构成、电源及输入输出规格、运行调试与维护、软元件切换等内容。此外,还提供了丰富的附录信息,如特殊软元件地址及功能、指令一览表、PLC功能配置表和常见问题解答。手册强调了安全操作的重要性,列出了多个安全注意事项,确保用户在正确环境下安装和使用设备,避免潜在风险。 适合人群:具备一定电气知识的专业人士,尤其是从事自动化控制系统设计、安装、调试及维护的技术人员。 使用场景及目标:①帮助用户了解XD、XL系列PLC的硬件特性和规格参数;②指导用户正确安装、接线、调试和维护设备;③提供详细的故障排查指南和技术支持信息,确保设备稳定运行;④为用户提供编程和指令使用的参考资料。 其他说明:手册不仅涵盖了硬件方面的内容,还涉及到了一些基础的软件编程概念,但更深入的编程指导请参考相关软件篇手册。用户在使用过程中遇到问题可以通过提供的联系方式获得技术支持。手册中的内容会定期更新,以适应产品改进和技术发展的需求。
# 【spring-ai-bedrock-converse-1.0.0-M7.jar中文文档.zip】 中包含: 中文文档:【spring-ai-bedrock-converse-1.0.0-M7-javadoc-API文档-中文(简体)版.zip】 jar包下载地址:【spring-ai-bedrock-converse-1.0.0-M7.jar下载地址(官方地址+国内镜像地址).txt】 Maven依赖:【spring-ai-bedrock-converse-1.0.0-M7.jar Maven依赖信息(可用于项目pom.xml).txt】 Gradle依赖:【spring-ai-bedrock-converse-1.0.0-M7.jar Gradle依赖信息(可用于项目build.gradle).txt】 源代码下载地址:【spring-ai-bedrock-converse-1.0.0-M7-sources.jar下载地址(官方地址+国内镜像地址).txt】 # 本文件关键字: spring-ai-bedrock-converse-1.0.0-M7.jar中文文档.zip,java,spring-ai-bedrock-converse-1.0.0-M7.jar,org.springframework.ai,spring-ai-bedrock-converse,1.0.0-M7,org.springframework.ai.bedrock.converse,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,springframework,spring,ai,bedrock,converse,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【spring-ai-bedrock-converse-1