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

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 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 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_1.15源代码

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

    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是一种微内核架构的操作系统,以其高效、可靠和小巧的特性著称。它提供了任务调度、...

    Nucleus C++.pdf

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

    Nucleus PLUS参考手册

    提供了调试工具和技巧,帮助开发者在开发过程中发现和解决问题。 8. **安全与可靠性**: Nucleus PLUS设计有内置的安全机制,如任务状态检查和内存泄漏检测,确保系统的稳定运行。 通过阅读《Nucleus PLUS参考...

    nucleus操作系统详解参考手册

    **Nucleus Plus**通常以C库的形式实现,与实时应用相结合后,生成的目标代码可以下载到目标板上运行,或存储在ROM中。值得注意的是,Nucleus Plus通常以源代码的形式发布,用户可以直接查看源代码,这不仅有助于加深...

Global site tag (gtag.js) - Google Analytics