一种获取应用服务器中类装载信息的方法

文档序号:6611799阅读:133来源:国知局
专利名称:一种获取应用服务器中类装载信息的方法
技术领域
本发明涉及应用服务器领域,特别是涉及一种获取应用服务器中类装载信 息的方法。
背景技术
目前在Internet/Intranet/Extranet环境中,企业级应用系统大多采用三层或 多层应用模式。为了方便开发、部署、运行和管理基于多层结构的应用,需要 以网络和分布式计算的底层技术为基础,构建一个完整的应用框架,提供相应 的支撑平台作为多层应用的基础设施,这一支撑平台的关键就是位于中间层的 应用服务器。应用服务器是一个创建、部署、运行、集成和维护多层分布式企 业级应用的平台。在企业应用中,应用服务器可以才是供如下好处:提高企业应 用开发的有效性,保障业务逻辑和组件的重用性;提高企业应用的性能,如高 运行性能和响应时间、可伸缩性、可靠性等;使企业应用更易于监控和管理, 降低系统维护和升级成本。由于应用服务器的重要作用和关键地位,它已经成 为当今业界的一个热点。
类装载是Java语言提供的最强大的机制之一, 一个类代表要执行的代 码,而数据则表示其相关状态。状态时常改变,而代码则不会。当我们将一个 特定的状态与一个类相对应起来,也就意味着将一个类事例化。尽管相同的类 对应的实例其状态千差万别,但其本质都对应着同一段代码。 一旦一个类被载 入Java虚拟才几(Java Virtual Machine, JVM)中,同一个类就不会净皮再次载入 了。应用服务器自身的启动需要装载很多类文件(class),部署在应用服务器 上的应用启动时也需要装载应用自身的类文件。JAVA的类装载机制是在同一 个JVM中,按类路径的层次和顺序装载类文件,并且同一个类装载器 (classloader)对同一个类只能够装载一次,classloader存在父子关系,同一 个类文件可以;陂不同的classloader装载, 一个类可以^皮多个class - loader装载。
应用服务器运行时,应用的某个类可能部署在多个地方,应用开发人员在 开发、生产过程中,出于排错、调试的目的,经常需要获取某个应用中的类净皮
dassloader装载的信息。例如获取这个类对应的类文件所在物理位置,装载这 个类文件的classloader是哪个等等。
现有技术中获取这些信息的方法有以下几种
1、 通过硬编码在应用代码中输出所述需要的信息,即发现错误后,修改 应用代码,添加一段代码,当启动后,可以在控制台上看到具体的类文件所在 物理位置或者装载该类文件的classloader。通过所述石更编码的方式输出,需要 修改代码,并且会增加垃圾日志的输出,导致应用性能的下降。
2、 通过第三方软件输出所述需要的信息,如使用jprofile这类第三方软件, 所述第三方软件之所以能够分析JVM中的线程、类装载的信息,是因为必须 将整个应用服务器进程托管给所述第三方软件,由第三方软件来具体维护整个 应用服务器进程的生命周期,因此配置非常复杂,并且所述第三方软件为商业 软件,需要购买,经济代价大。
3、 通过编写JMX功能模块,嵌入在应用中从而输出所述需要的信息,所 述编写JMX组件的开发量很大,复杂度非常高。
通过以上分析可以看出,所述三种方式,都需要开发、维护人员大量的工 作,成本高,并且无论采取哪一种方式,都不能在出错的应用环境中及时获取 相应的信息,而这一点对于应用的排错是非常重要的。因此,迫切需要一种简 单、经济且能及时获取应用出错信息的信息获取方法。

发明内容
本发明所要解决的技术问题是提供一种通过简单的客户端/本地调用,就 可以获取类装载信息的方法。
为了解决上述问题,本发明公开了一种获取应用服务器中类装载信息的方 法,包括
向类装载器注册侦听器;
实例化类装载器时,激活所述注册的侦听器;
所述侦听器接受所述触发并响应;
所述侦听器保存类装载器实例引用。
所述注册侦听器的具体步骤包括
实现一个符合Java EE Mbean规范的类装载器监控月l务;
在应用服务器的启动服务列表中配置所述类装载器监控服务; 通过所述类装载器监控服务注册侦听器。
所述保存的具体过程为
所述侦听器将所述类装载器实例引用保存在内存的凄t据结构中。
进一步,还包括
接收本地/客户端的请求,输出所述已经保存的类装载信息。 优选的,所述输出类装载信息的步骤具体包括 本地调用类装载器监控服务;
类装载器监控服务响应,通过保存的类装载器访问并返回保存的类信息。
优选的,所述输出类装载信息的具体步骤包括
客户端登录应用服务器;
初始化JMX连接器;
获取指定服务名的Mbean接口 ;
通过所述接口调用获取信息。
优选的,所述输出类装载信息的具体步骤包括
客户端/本地调用类装载器监控服务的Mbean接口 ,请求获取应用服务器中 的类装载器实例数;
类装载器监控服务响应,返回保存的类装载器实例数目。 优选的,所述输出的类装载信息的步骤具体包括 al 、客户端/本地调用类装载器监控服务的Mbean接口 ; a2、类装载器监控服务响应;
a3、判断指定接口调用中是否指定具体的类装栽器实例,没有指定则进入 a4、遍历保存的所有类装载器实例;
a5、判断类装载器实例是否已经装载了给定类名的类,否则返回步骤a4, 是则进入步骤a6;
a6、构造类信息值对象,所述类信息值对象包括装载该类的类装载器,类 文件物理路径等信息;
a7、返回所述类信息值对象。
优选的,所述输ii的类装载信息的步骤具体包括
bl 、客户端/本地调用类装载器监控服务的Mbean接口 ;
b2、类装载器监控服务响应;
b3、判断指定接口调用中是否指定具体的类装载器实例,没有指定则进入 步骤b4;
b4、遍历保存的所有类装载器实例;
b5、判断类装载器实例是否已经装载了给定类名的类,否则返回步骤b4, 是则进入步骤b6;
b6、构造类信息值对象,所述类信息值对象包括装载该类的类装载器,类 文件物理路径等信息,添加所述类信息值对象入类信息值对象集合;
b7、判断是否还有类装载器实例,是则返回步骤b4,否则进入步骤b8;
b8、返回所述类信息值对象集合。
优选的,所述输出的类装载信息的步骤具体包括
cl、客户端/本地调用类装载器监控服务的Mbean接口;
c2、类装载器监控服务响应;
c3、判断指定接口调用中是否指定具体的类装载器实例,是则进入步骤c4;
c4、判断指定的类装载器实例是否已经装载了给定类名的类,否则返回空 值,是则进入步骤c5;
c5、构造类信息值对象,所述类信息值对象包括装载该类的类装载器,类 文件物理路径等信息;
c6、返回所述类信息值对象。
与现有技术相比,本发明具有以下优点
本发明在应用服务器启动时,向类装载器注册侦听器,实例化类装载器时, 激活所述注册的侦听器,所述侦听器响应后保存类装载器实例引用。在应用服 务器运行时,通过简单的客户端/本地调用,就可以获取给定类名的java类被 classloader装载的信息以及对应的类文件的物理位置等类装载信息。通过本发 明获取类装载信息,不需要应用开发、维护人员的额外配置、额外编码,且不 影响性能,通过简单的客户端/本地调用即可获取应用^^务器内部类装载信息, 减少了排错、调试的工作量,降低应用服务器的维护成本。


图l是本发明一种获取应用服务器中类装载信息的方法流程图2是本发明 一种获取应用服务器中类装载信息的方法流程图3是本发明另一种获应用取服务器中类装载信息的方法流程图4是本发明一种获取类装载器实例数目的方法流程图5是本发明一种获取给定类名的类^L装载时的类装载信息的方法流程
图6是本发明另一种获取给定类名的类^皮装载时的类装载信息的方法流 程图7是本发明一种获取指定类名在指定的类装载器中被装载的类装载信 息的方法流程图。
具体实施例方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本发明作进一步详细的说明。
作为企业级应用的解决方案,应用服务器应当提供(l)加快开发过程、 确保开发质量,促使应用快速进入市场的开发能力;(2)促使应用能够以灵 活而有效方式运行的部署能力;(3)与各种后端系统有效整合的集成能力。 在帮助客户建立、部署和运行企业应用时所需要的灵活性和功能,都源于对应 用服务器各种能力的组合与运用。具体的,应用服务器的功能可以划为核心服 务和扩展服务。核心服务为业务逻辑的实现提供支持;对应用服务器的管理 能力;提供协议和接口的引擎,支持通讯协议(如HTTP、 IIOP)、数据库互 联标准(如JDBC、 ODBC)、分布式计算协议等多种工业标准。扩展服务 为支持高端应用而应当提供的功能,主要包括事务(transaction)处理、集 群(cluster)、失效恢复(fail over)、负载均衡(load balancing)、緩存机制、 安全服务、与企业已有应用系统的集成能力、开发有效性(与应用程序开发环 境和工具的结合能力)。
近年在应用服务器技术中最具意义的进展,就是J2EE (Java 2 Platform Enterprise Edition)的出现。J2EE是Sun公司提出的开发、部署、运行和管理 基于爪哇(Java)分布式应用的标准平台。它以Java 2平台标准版(J2SE)为
基础,继承了标准版的许多优点,还提供了对EJB、 JavaServlet、 JSP等技术 的全面支持。J2EE使用EJB Server作为商业组件的部署环境,在EJB Server 中提供了分布式计算环境中组件需要的服务,例如组件生命周期的管理、数据 库连接的管理、分布式事务的支持、组件的命名服务等。
J2EE用于实现应用服务器有其优势,它可以利用Java语言自身具有的跨 平台性、可移植性、对象特性、内存管理等方面的性能,为应用服务器的实现 提供一个完整的底层框架。J2EE中定义的各种服务,包括JSP和Servlet容器、 EJB容器、JDBC、 JNDI (名字目录服务)、JTS/JTA (事务服务)、JMS (消 息服务)等,也分别为应用服务器提供了各种支持。实现商业逻辑的EJB组 件可以更加高效的运行在应用服务器中,用户可以通过Java Sevlet或者JSP 调用运行在EJB Server中的EJB,也可以通过HOP直接访问运行在EJB Server 中的组件。除了应用服务器的基本特性以外,J2EE应用服务器还应实现支 持Java编程的工业标准,包括EJB、 JDBC、 JNDI、 RMI-IIOP、 JCA、 JTS/JTA 等;能够与业界主要的IDE (如Borland Jbuilder、 VisualCafe等)集成;与标 准的Java操作平台兼容,如Sun、 IBM等系统平台;使用完全的Java语言编 码实现,保证良好的可移植性和支持Java的语言特性。
Java虚拟机(JVM)的类装载就是将包含在类文件中的字节码装载到JVM 中,但是类装载器也不是原封不动的装载到JVM,它是将类(.class)文件中 的内容转换成JVM使用的类字节码。通过类装载器装载到JVM中的字节码数 据,就成了可执行的代码。类装载器把类装入JVM中,要经过三个步骤完成 装载,链接和初始化。
类装载器本身也是一个Java类,类库中提供了一个java.lang.classloader 做为类的装载器基类,也就是说真正的类装载器都必须是classloader的子类。 Class类中定义了 一个getclassloader方法,用于返回它所描述的类的类装载器 对象,这个返回对象的类型就是classloader。 一个Java应用持续使用两种类型 的类装载器根装载器(bootstrap)和用户定义的装载器(user-defined),所 谓根装载器就是JVM中内嵌的一个类,它是用特定的才喿作系统的本地代码实 现的,它不用专门的类装载器去进行装载。它负责装载Java核心包中的类文 件中的类。对一个已经被父级类装载器装载的类来i兌。JVM默认也使用这个
父级类装载器去装载它所调用的其他类,由于父级类装载器不会委托子级类装 载器去装载类,所以,在一般情况下, 一个已被父级类装载器装载的类无法调 用那些只能被子级类装载器发现和装载的其他的类。
本发明通过实现一个符合Java EE Mbean规范的类装载器监控服务 (clservice),所述clservice提供三个接口 ,所述各接口可以实现以下功能(1 ) 获取服务器中的classloader实例数目;(2)获取某个给定类名的类被装载的信 息;(3)获取指定类名在指定的classloader中被装载的信息。所述类装载器监 控服务配置在应用服务器的启动服务列表中,通过所述类装载器监控服务注册 侦听器(listener),除系统classloader实例外,运行在应用服务器进程中的每 一个classloader在实例化的时候,都会触发已注册的侦听器,并保存classloader 引用。在应用服务器运行时,通过简单的客户端/本地调用,就可以获取给定 类名的java类被classloader装载的信息以及对应的类文件的物理位置等类装载 信息。通过本发明所述方法获取类装载信息,不需要开发、维护人员的额外配 置、额外编码,且不影响性能,通过简单的客户端/本地调用即可获取应用服 务器内部类装载信息,减少了排错、调试的工作量,降低应用服务器的维护成 本。
参照图1,示出了本发明一种获取应用服务器中类装载信息的方法流程 图,包括
步骤IOI、注册侦听器。
要实现本发明,首先需要在应用服务器中增加新机制,增加类装载器 (classloader)初始化事件触发-响应机制。该机制在于,除系统classloader 实例外,运行在应用服务器进程中的每一个classloader实例化的时候,都会触 发classloader初始化事件(下称cievent),所述cievent本身是一个JavaBean 对象,里面包含了刚刚被初始化的classloader实例。其次需要实现一个符合Java EE Mbean规范的classloader监控服务(下称clservice )。并且将该服务配置在 应用服务器的启动列表中,通过所述类装载监控服务(clservice)注册侦听器 (listener )。所述clservice提供三个接口,分别为1) public ClassDesc[] findClass(String className),获得指定类名的类描述^f言息,同样的类名可能存 在于不同的classloader之中;2) public ClassDesc findClass(String className,
ClassLoader baseCL), 指定 classLoader 获取类信息;3 ) public int getClassLoaderCount(),获取当前JVM中的classloader的实例数目,所述接口 都可以供客户端通过本地或者远程调用的方式调用。通过以上描述可以得知, 所述各接口可以实现以下功能(1 )获取服务器中的classloader实例数目;(2) 获取某个给定类名的类被装载的信息;(3)获取指定类名在指定的classloader 中被装载的信息。
步骤102、激活所述注册的侦听器。
在应用服务器运行,实例化类装载器时,激活所述注册的侦听器。除系统 classloader实例外,运行在应用服务器进行中的每一个classloader实例化的时 候,都会触发classloader初始化事件(cievent),该事件由已注册的侦听器 (cilistener)接受,即激活所述注册的侦听器。
步骤103、侦听器接受触发并响应。
所述注册的侦听器能接受被触发的classloader初始化事件,并作出响应。 步骤104、保存classloader实例引用。
类装载器初始化侦听器(cilistener)从类装载器初始化事件(cievent)获 取ClassLoader实例,并保存在内存的数据结构中。实例引用是Java中的一个 词汇, 一个类,被实例化之后,就会产生一个对于该类的实例引用。
进一步,还包括步骤105、接收客户端/本地请求,输出已经保存的类装载
<吕息。
在步骤104中,所述侦听器将所述类装载器实例引用保存在自身的数据结 构中,接收本地/客户端输出类装载信息请求后,输出已经保存的类装载信息。
参照图2,示出了本发明一种应用获取服务器中类装载信息的方法流程 图,包括
步骤201、本地调用类装载器监控服务。
本地调用clservice的Mbean接口 ,向应用服务器发出获取类装载信息的 请求。
步骤202、类装载器监控服务响应,返回类装载信息。 所述应用服务器中的clservice响应所述请求,通过保存的类装载器访问并 返回保存的类装载信息。
所述图2所示的方法是基于本地调用,本地请求获取类装载信息,所述本
地是指客户端和应用服务器运行在同一个Java虚拟机(JVM)中。所述调用 方法如下
ClassLoaderServiceMBean service = (ClassLoaderService) Config.getService(ClassLoaderService.OBJECT—NAME),获耳又得到一个类装载 器监控服务,可以直接通过
service.getClassLoaderCount();
service.findClass(类名);
service.findClass(类名,ClassLoader实例)访问,获耳又类装载信息。 参照图3,示出了本发明另一种获应用取服务器中类装载信息的方法流程 图,包括
步骤301、客户端登录应用服务器。
图3所示方法是基于远程调用,远程客户端请求获取应用服务器类装载信 息,所述远程是指客户端和应用服务器不在同一个JVM中。 步骤302、初始化JMX连接器;
JMX(Java Management Extensions)是一个为应用程序植入管理功能的框 架。JMX是一套标准的代理和服务,实际上,用户可以在任何java应用程序 中使用这些代理和服务实现管理,JMX体系被分成三层a、表现层;b、 代理层;c、分布式服务层。
步骤303 、获取指定服务名的Mbean接口 ;
步骤304、通过所述接口调用获取信息。
图3方法所示的调用,都是符合JMX规范的,在这些调用中,除了符合 规范的部分外,还需要指定一些配置信息(l)登录应用服务器的jaas认证文 件路径;(2)登录应用服务器的用户名/密码;(3)应用服务器的地址,在java 中采用iiop协议;(4)给定Mbean名称,获取Mbean; (5)给出要获取类装 载信息的类的类名。
参照图4、示出了本发明一种获取类装载器实例数目的方法流程图,包括 本地获取和客户端远程获取,包括
步骤401 、客户端/本地调用类装载器监控服务的Mbean接口 ,请求获取应
用服务器中的类装载器实例数。
步骤402、类装载器监控服务响应,返回保存的类装载器实例数目。
参照图5、示出了本发明一种获取给定类名的类被装载时的类装载信息的 方法流程图,包括
步骤501、客户端/本地调用类装载器监控服务的Mbean接口,进入步骤
502。
步骤502、所述类装载器监控服务响应,进入步骤503。
步骤503、判断指定接口调用中是否指定具体的类装载器实例,如果没有指
定的话就进入步骤504。
步骤504、遍历保存的所有类装载器实例,进入步骤505。
步骤505、判断类装载器实例是否已经装载了给定类名的类,如果没有装
载给定类名的类则返回步骤504,如果已经装载了给定类名的类,则进入步骤
506。
步骤506、构造类信息值对象。所述类信息包括完整类名、类文件物理 位置、被装载的classloader等外部信息,以及类本身的一些内部信息,如有哪 些属性和方法、继承自哪个类、实现了什么接口等等。本发明主要关注类的外 部信息,主要需要完整类名、类文件的物理位置、装载这个类的classloader 的完整类名和装载这个类的classloader实例在JVM中的唯一标示,所述唯一 标示是JVM自动分配的,为一个长整形数字。
步骤507、返回所述类信息值对象。
参照图6,示出了本发明另一种获取给定类名的类^皮装载时的类装载信息 的方法流程图,包括
步骤601、客户端/本地调用类装载器监控服务的Mbean接口,进入步骤
602。
步骤602、所述类装载器监控服务响应,进入步骤603。 步骤603、判断指定接口调用中是否指定具体的类装载器实例,如果没有指 定的话就进入步骤604。
步骤604、遍历保存的所有类装载器实例,进入步骤605。
步骤605、判断类装载器实例是否已经装载了给定类名的类,如果没有装
载给定类名的类则返回步骤604,如果已经装载了给定类名的类,则进入步骤 606。
步骤606、构造类信息值对象,所述类信息值对象包括装载该类的类装载 器,类文件物理路径等信息,添加所述类信息值对象入类信息值对象集合。
步骤607、判断是否还有类装载器实例,如果还有没被遍历的类装载器实 例则返回步骤604,如果所有类装载器实例都遍历完成,则进入步骤608。
步骤608、返回所述类信息值对象集合。
参照图7、示出了本发明一种获取指定类名在指定的classloader中被装载 的类装载信息的方法流程图,包括
步骤701、客户端/本地调用类装载器监控服务的Mbean接口,进入步骤
702。
步骤702、所述类装载器监控服务响应所述调用,进入步骤703。 步骤703、判断指定接口调用中是否指定具体的类装载器实例,如果指定则 进入步骤704。
步骤704、判断指定的类装载器实例是否已经装载了给定类名的类,如果 没有装载给定类名的类则返回空值,已经装载了给定类名的类则进入步骤 705。
步骤705、构造类信息值对象,所述类信息值对象包括装载该类的类装载 器,类文件物理路径等信息。
步骤706、返回所述类信息值对象。
以上对本发明所提供的 一种获取应用服务器中类装载信息的方法,进行了
上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本 领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会 有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1、一种获取应用服务器中类装载信息的方法,其特征在于,包括向类装载器注册侦听器;实例化类装载器时,激活所述注册的侦听器;所述侦听器接受所述触发并响应;所述侦听器保存类装载器实例引用。
2、 如权利要求1所述的获取应用服务器中类装载信息的方法,其特征在 于,所述注册侦听器的具体步骤包括实现一个符合Java EE Mbean规范的类装载器监控服务; 在应用服务器的启动服务列表中配置所述类装载器监控服务; 通过所述类装载器监控服务注册侦听器。
3、 如权利要求1所述的获取应用服务器中类装载信息的方法,其特征在 于,所述保存的具体步骤为所述侦听器将所述类装载器实例引用保存在内存的数据结构中。
4、 如权利要求1所述的获取应用服务器中类装载信息的方法,其特征在 于,还包括接受本地/客户端请求,根据请求的类名,通过以保存的类装载器,访 问并输出该类名对应的类装载信息。
5、 如权利要求4所述的获取应用服务器中类装载信息的方法,其特征在 于,所述输出类装载信息的步骤具体包括本地调用类装载器监控服务;类装载器监控服务响应,通过保存的类装载器访问并返回保存的请求中 类名对应的类装载信息。
6、 如权利要求4所述的获取应用服务器中类装载信息的方法,其特征在 于,所述输出类装载信息的具体步骤包括 客户端登录应用服务器; 初始化JMX连接器; 获取指定服务名的Mbean接口 ; 通过所述接口调用获取信息。
7、 如权利要求5或6所述的获取应用服务器中类装载信息的方法,其特 征在于,所述输出类装载信息的具体步骤包括客户端/本地调用类装载器监控^^务的Mbean接口 ,请求获取应用服务器中 的类装载器实例数;类装载器监控服务响应,返回保存的类装载器实例数目。
8、 如权利要求5或6所述的获取应用服务器中类装载信息的方法,其特 征在于,所述输出的类装载信息的步骤具体包括al 、客户端/本地调用类装载器监控服务的Mbean接口 ; a2、类装载器监控服务响应;a3 、判断指定接口调用中是否指定具体的类装载器实例,没有指定则进入 步骤a4;a4、遍历保存的所有类装载器实例;a5、判断类装载器实例是否已经装载了给定类名的类,否则返回步骤a4, 是则进入步骤a6;a6、构造类信息值对象,所述类信息值对象包括装载该类的类装载器,类 文件物理路径等信息;a7、返回所述类信息值对象。
9、 如权利要求5或6所述的获取应用服务器中类装载信息的方法,其特 征在于,所述输出的类装载信息的步骤具体包括bl、客户端/本地调用类装载器监控服务的Mbean接口 ; b2、类装载器监控服务响应; b3、判断指定接口调用中是否指定具体的类装载器实例,没有指定则进入步骤b4;b4、遍历保存的所有类装载器实例;b5、判断类装载器实例是否已经装载了给定类名的类,否则返回步骤b4, 是则进入步骤b6;b6、构造类信息值对象,所述类信息值对象包括装载该类的类装载器,类 文件物理路径等信息,添加所述类信息值对象入类信息值对象集合;b7、判断是否还有类装载器实例,是则返回步骤b4,否则进入步骤b8; b8、返回所述类信息值对象集合。10、如权利要求5或6所述的获取应用服务器中类装载信息的方法,其特 征在于,所述输出的类装载信息的步骤具体包括cl 、客户端/本地调用类装载器监控服务的Mbean接口 ; c2、类装载器监控服务响应;c3、判断指定接口调用中是否指定具体的类装载器实例,是则进入步骤c4;c4、判断指定的类装载器实例是否已经装载了给定类名的类,否则返回空 值,是则进入步骤c5;c5、构造类信息值对象,所述类信息值对象包括装载该类的类装载器,类 文件物理路径等信息;c6、返回所述类信息值对象。
全文摘要
本发明提供了一种获取应用服务器中类装载信息的方法,包括在应用服务器启动时,向类装载器注册侦听器;在应用服务器运行,实例化类装载器时,激活所述注册的侦听器;所述侦听器接受所述触发并响应;所述侦听器保存类装载器实例引用,通过简单的客户端/本地调用即可获取应用服务器内部类装载信息,减少了排错、调试的工作量,降低应用服务器的维护成本。
文档编号G06F9/44GK101105749SQ20071014397
公开日2008年1月16日 申请日期2007年8月16日 优先权日2007年8月16日
发明者倪晓兵 申请人:金蝶软件(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1