`
chelsea
  • 浏览: 124459 次
  • 来自: ...
社区版块
存档分类
最新评论

Nucleus中的WebService

    博客分类:
 
阅读更多

一、开发包

现有文档:

现用开发包:

  • 服务端开发包使用apache axis

  • 客户端开发包使用systinet wasp 5.0

服务端和客户端使用不同开发包的原因:

  • systinet的服务端开发包必须与systinet server一起使用,而我们选择了JBoss等,因此服务端选择了其它的开发包

  • systinet的服务端开发包和客户端开发包缺省占用同一个socket端口,因此无法在同一个应用中同时使用必须systinet的服务端和客户端,因此服务端选择了其它的开发包,对systinet进一步的学习可能会解决这个问题

  • axis的客户端开发包使用了"enum"做普通标识,不能在JDK5中编译,而我们必须用JDK5,因此客户端选择了其它的开发包

服务端和客户端使用不同开发包带来的问题:

  • 无法对复杂的数据类型如ArrayList,HashMap等提供支持,因为不同的开发包对非标准WebService类型的编解码方案不一样

  • 引入了很多不必要的类库和学习成本,systinet wasp 5.0实在是个很庞大的东西,目前并不能高效的使用它,测试过程中发现目前的使用方式有性能问题

解决方案:

  • 客户端也使用axis,在1.4下将生成的stub编译为jar包,然后在1.5中引用

  • 目前对systinet的了解非常有限,以上关于它的论述可能不正确,进一步学习后可能会解决上述问题

  • 等待axis或systinet各自的升级

二、Nucleus中的WebService

实现

由《简单的axis》可知,发布WebService需要一些配置描述符,目前在M2/Engine/ServiceInterface/nucleus/WEB-INF/中

而增加或修改WebService,只需要修改server-config.wsdd;通常有几种方式修改:

  • 如果对axis比较熟悉,可以手工修改

  • 如果有合适的eclipse插件,可以使用插件向导修改

  • 如果有JBuilder,可以使用JBuilder向导修改

目前使用的是JBuilder+手工修改:

  • 可以先新建一些无关的工程,熟悉一下JBuilder对axis和WebService的支持

  • 熟悉了之后,使用JBuilder发布Nucleus中新的WebService,从而产生新的server-config.wsdd

  • 从新的server-config.wsdd中拷贝出新的WebService对应的描述,粘贴到M2/Engine/ServiceInterface/nucleus/WEB-INF/server-config.wsdd中

设计

为了不依赖于WebService,Nucleus以接口的形式定义了基础服务的接口:

package nucleus.bizcommon.servicegateway:

public interface AgentService

public interface EngineManager

public interface MonitorWebService

public interface OrganizationWebService

public interface PDMWebService

public interface ReportWebService

public interface TaskListWebService

为了在分布式和嵌入式之间方便的进行整体切换,Nucleus定义了服务网关接口:

package nucleus.servicegateway:

public interface WebServiceProvider {

PDMWebService getPDMWebService();

OrganizationWebService getOrganizationWebService();

EngineManager getEngineWebService();

MonitorWebService getMonitorWebService();

TaskListWebService getTasklistWebService();

ReportWebService getReportWebService();

AgentService getAgentService();
}

同时,分别提供了分布式的服务网关

public final class nucleus.servicegateway.ExternalService implements WebServiceProvider

和嵌入式的服务网关

public final class nucleus.servicegateway.InternalService implements WebServiceProvider

然后通过配置就可切换

<bean id="web.service.provider" class="nucleus.servicegateway.InternalService"/>
<!-- <bean id="web.service.provider" class="nucleus.servicegateway.ExternalService"/> -->

此处存在不方便扩展、接口命名没有对应意图(如接口名称中不应包含"Web")等问题,似乎应该把消息系统也包括进来

打包

目前使用CruiseControl和ant来打包,脚本文件位于M2/Engine/*.xml

三、总结

综上所述,新建WebService的步骤是:

  1. 定义一个服务接口:public interface nucleus.bizcommon.servicegateway.NewService;

  2. 实现这个接口:public class NewService implements nucleus.bizcommon.servicegateway.NewService;

  3. 在WebServiceProvider中增加一个方法:NewService getNewService();

  4. 在ExternalService和InternalService中实现这个方法

  5. 使用JBuilder发布NewService

  6. 修改server-config.wsdd

  7. 打包

分享到:
评论

相关推荐

    Nucleus中文文档

    - **应用场景**: 演示如何将Nucleus PLUS应用于实际的嵌入式项目中。 #### 七、附录 **附录内容包括**: - **Nucleus 常量**: 列出所有对用户有用的Nucleus常量的真实值。 - **系统致命错误**: 记录可能导致系统...

    中文Nucleus PLUS Reference Manual

    3.2 任务:解释了如何在Nucleus PLUS中创建、管理及调度任务。 3.3 任务通信:阐述了任务间通信的机制和相关服务。 3.4 任务同步:介绍了任务同步的机制,例如信号量、互斥量。 3.5 定时器:解释了如何使用Nucleus ...

    Nucleus中文分析报告

    《Nucleus中文分析报告...总之,《Nucleus中文分析报告》是深入了解和学习MTK Nucleus RTOS的重要资料,它将帮助读者掌握这个系统的核心概念和技术,从而在实际项目中更加熟练地运用Nucleus,提高产品的性能和可靠性。

    Nucleus PLUS中文参考手册.rar

    Nucleus PLUS中文参考手册.rar Nucleus PLUS中文参考手册.rar

    Nvidia Omniverse Nucleus 局域网服务器搭建

    在 Nucleus 中,用户与组设置与 Windows 类似。可以添加或修改用户,并对自定义用户做一些常规设置与归组划分。然而,Nucleus 无法设置组的权限,可以对自定义用户做一些常规设置与归组划分。访问权限实际上是通过...

    Nucleus PLUS中文参考手册.pdf

    Nucleus PLUS是一款高性能、可定制的RTOS,旨在满足嵌入式系统开发中的实时需求。这份手册不仅提供了Nucleus PLUS内核的全面概述,还深入探讨了其与实时多任务应用程序的集成方法,是嵌入式系统开发者不可或缺的资源...

    nucleus_1.15源代码

    3. **内存管理**:Nucleus RTOS提供了动态内存分配和释放的功能,源代码中包含了内存池的管理,包括分配、释放和内存碎片的预防机制。这对于资源有限的嵌入式系统尤为重要。 4. **时间管理**:Nucleus RTOS包含时钟...

    Nucleus PLUS中文参考手册

    安装过程通常涉及将Nucleus PLUS 的源代码或预编译的库文件复制到开发环境中,并配置好相应的环境变量。安装过程中可能还需要配置特定的硬件支持库。 #### 2.3 如何应用Nucleus PLUS 应用Nucleus PLUS 需要按照一定...

    Nucleus 介绍 Nucleus PLUS介绍 Nucleus开发环境

    Nucleus是一款由Accelerated Technology Inc.(ATI)公司推出的嵌入式实时多任务操作系统,它在全球源码RTOS市场中占据了领先地位。ATI公司成立于1990年,以其平均70%的年增长率迅速成长,并在1999年至2000年间获得...

    Nucleus OS源码结构以及参考手册

    1、Nucleus_PLUS.pdf 第一章 介绍 1.1 关于NucleusPLUS 1.2 实时应用 1.3 为什么需要Nucleus PLUS 第二章开始 2.1 应用开发综述 2.2 安装Nucleus PLUS 2.3 如何使用Nucleus PLUS 2.4 应用程序初始化 2.5 目标...

    Nucleus source code源代码

    Nucleus源代码for S3C4510 附详细的porting guide Nucleus PLUS 是为实时要求较高的嵌入式应用设计的实时、任务抢先式、多任务内核。大 约95%的Nucleus PLUS 代码用ANSI C 编写。正因为如此,Nucleus PLUS 非常...

    nucleus

    "Plus"可能是该压缩包中包含的一个子目录或者文件,这通常表示这是一个增强版、扩展版或包含了额外功能的版本。在操作系统领域,这样的命名可能意味着"Nucleus Plus"是一个增强了某些功能或优化了性能的"Nucleus...

    NucleusPlus源代码

    NucleusPlus是一款轻量级、实时嵌入式操作系统(RTOS),它被广泛应用于各种嵌入式设备和系统中,提供了高效的任务调度、内存管理、中断处理等核心功能。源代码的开放使得开发者能够深入理解其工作原理,进行定制化...

    Nucleus FILE Manual(文件手册)

    从上述内容中,我们可以得知Nucleus FILE手册主要面向希望在嵌入式系统中使用Nucleus PLUS文件系统的开发者或工程师,它不仅提供了一个文件系统的基本使用指南,还包含了深入的技术细节,以帮助用户充分利用文件系统...

    nucleus-2004-09-05_nucleus_

    在压缩包中的"nucleus"文件可能包含了整个Nucleus RTOS的源代码目录结构,通常会包含以下部分: - **Kernel**:内核源码,包括任务调度、信号量、互斥锁等核心功能。 - **Memory Management**:内存管理相关的代码...

    Nucleus分析报告.

    Nucleus是一款嵌入式实时操作系统(RTOS),因其轻量级、高效的特点,被广泛应用于各种嵌入式系统中。本文将深入剖析Nucleus的操作系统开发流程,并探讨其核心功能,如任务管理、队列、管道、信号量以及调度机制,...

    Nucleus PLUS源码分析中文手册.rar

    Nucleus PLUS是以源码形式分发的。由于Nucleus PLUS源码是非常庞大,一般用户往往要有一段艰难的理解他的时间。该手册就是帮助Nucleus PLUS用户理解源码而设计的。 Nucleus PLUS 参考手册,Accelerated ...

    Nucleus文档

    本篇文章将深入解析Nucleus Plus Internals及Nucleus Plus Reference Manual中的关键知识点。 一、Nucleus Plus概述 Nucleus Plus是一种微内核架构的操作系统,以其高效、可靠和小巧的特性著称。它提供了任务调度、...

    MTK 功能机 RTOS Nucleus 源码 分析

    "Nucleus PLUS参考手册.pdf"和"Nucleus plus 移植笔记.pdf"则是关于Nucleus RTOS本身的官方文档和实践经验分享,它们包含了操作系统的核心功能、API使用方法以及将Nucleus移植到不同硬件平台的步骤和技术细节。...

    Nucleus C++.pdf

    3. **定义应用程序任务**:在此步骤中,开发者需要定义应用程序的任务。如果计划使用Nucleus C++提供的服务,则同样需要包含“NUCPP.H”头文件。 4. **编译与汇编**:接下来需要对所有的应用软件进行编译或汇编,...

Global site tag (gtag.js) - Google Analytics