王朝网络
分享
 
 
 

Nucleus中的WebService

王朝java/jsp·作者佚名  2006-01-09
宽屏版  字体: |||超大  

一、开发包

现有文档:

简单的axis

现用开发包:

服务端开发包使用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的步骤是:

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

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

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

在ExternalService和InternalService中实现这个方法

使用JBuilder发布NewService

修改server-config.wsdd

打包

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有