EAS Cloud WebService开发最佳实践

栏目:eas cloud知识作者:金蝶来源:金蝶云社区发布:2024-09-22浏览:3

EAS Cloud WebService开发最佳实践

1、 业务场景

EAS的WebService历史悠久,随着架构的不断演进,产生了许多问题,常见的有部署问题找不到对应的facade元数据,调用报错RMIException,找不到会话让重新登陆等。

但是只要规范的开发部署就可以避免上述问题。本文章会以一个名为Hello的facade元数据为样例来开展讲述

目录如下:

1. 在EAS中新建发布WebService

2. 在EAS中对新建的WebService部署教程

3. 相关配置文件的检查-配置

4. EAS-WebService的调用原理图解

5. 如何用SOAPUI进行WebService调用测试

6. 如何用WSDL生成Java代码调用测试

2、 实践思路

(1) 新建发布WebService

1. 新建facade元数据,工具:BOS工具(BIM),解决方案

2. eas.custom包下新建Hello - facade元数据

  

  3. 发布facade元数据,发布WebService:

    

 4. 发布facade元数据界面:注意勾选【生成配置信息】选项,以及注意自己的发布路径,方便后续查找

 

5. 发布webservice界面:注意勾选【追加到配置文件】选项


6. 全部发布之后,切换到Java视图,刷新解决方案工程,可以看到下面的几个新增的目录及文件。如下:


7.在HelloControllerBean中去实现具体的业务逻辑,样例如下:

(2) WebService部署

EAS服务器上进行WebService部署,遵守的规则是:wsdd文件放到web.war中;facade元数据以及java代码放到对应的元数据目录以及代码目录


1,部署wsdl

        1)服务器上web.war的路径是:eas\server\deploy\eas.ear\web.war 

        2 )  获取并修改web.war 

        4)用压缩软件打开web.war,把Hello.wsdl直接放到WEB-INF目录下:

     5)配置server-config.wsdl文件(用压缩软件打开web.war,把WEB-INF\server-config.wsdl拖出来),打开Hello.wsd,复制service节点内容到server-config文件中。再把server-config.wsdl替换web.war中的server-config.wsdl

   6)覆盖原有的server\deploy\eas.ear\web.war 


2,部署facade元数据,参考知识贴:bos工具远程/本地部署(https://vip.kingdee.com/article/174121211427903232?productLineId=8&isKnowledge=2&lang=zh-CN)或者自己进行私包部署


(3) EAS服务端webservice配置文件检查修改(下面参数如果有,则不需要重复添加)

1. 编辑\server\profiles\server*\config\webservice.properties文件,另起一行,添加参数(server* 代表所有的实例):

       isRomoteLocate=false

 

  2. 编辑eas/server/deploy/eas.ear/web.war/WEB-INF/server-config.wsdd文件,新加参数<parameter name="scope" value="session"/>


-------以上步骤完成之后就可以进行webservice接口的调用代码编写--------


3、 详细设计

EAS-WebService调用图解

以一个EAS集群,包含3个实例为例子,其中三个实例的http端口分别是6888,6890,6892。网络代理端口是8080,当webservice客户端使用集群端口调用webservice接口服务时,正确的调用过程如下:


webservice客户端 指定 实例端口调用webservice接口服务时,正确的调用过程如下(假设指定server3:6892):


4、 代码样例

使用SoapUI调试接口

(SoapUI使用教程详见: soapUI 简介、安装使用教程 )




1, 指定实例端口调试(这里我们使用server3:6892)

登录获取sessionId:

携带sessionId请求业务接口:

注意实际的接口xml不会包含<soapenv:Header>部分,需要自己手动复制进去:

<soapenv:Header>

        <ns1:SessionId xmlns:ns1="http://login.webservice.bos.kingdee.com">

      实际的sessionId

        </ns1:SessionId>

    </soapenv:Header>

-------------------------------------------------------------------------------------------------------------------------

2,使用集群端口进行接口调试:

登陆获取sessionId:


携带sessionId + cookie,请求业务接口,请注意下面Header中的key字段是 Cookie

-------------------------------------------------------------------------------------------------------------------------


Java代码调用WebService接口

1. 访问ormrpc/services/EASLogin.wsdlormrpc/services/WSHello.wsdl

2. 网页分别另存为wsdl文件

3. 新建Java工程,把两个wsdl文件放到工程目录下,分别右键>Web Services>Generate Client如下图所示:

        把生成的代码移动到统一的包下:

        


      新建client包,包含3个类

%2. HelloClient --- 客户端调用代码主逻辑

%2. LoginUtil --- 登陆参数常量类

%2. WSLoginResponse --- 登录请求返回值的简单包装

具体代码,及代码解释见附件UP00068160.rar,代码注释写的比较清楚了,大家可以把HelloClient中的生成的业务接口类换成自己的就可以用到自己的项目中了。


5、 注意事项

6、 补丁影响



EAS Cloud WebService开发最佳实践

1、 业务场景EAS的WebService历史悠久,随着架构的不断演进,产生了许多问题,常见的有部署问题找不到对应的facade元数据,调用报错RMIExc...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息