⾦蝶EAS-V8.1-WebService开发指南
Webservice开发指南
版权声明
本书著作权属于⾦蝶软件(中国)有限公司所有,在未经本公司许可的情况下,任何单位或个⼈不得以任何⽅式对本书的部分或全部内容擅⾃进⾏增删,改编,节录,翻译,翻印,改写。
⾦蝶软件(中国)有限公司
2015年8⽉
BOSWebService
1.1.BOSWebService原理 (4)
1.2.发布WebService的约束 (5)
1.3.BOSWebService发布 (5)
1.3.1.发布流程 (5)
1.3.
2.发布WebService (5)
1.3.3.编辑WebService配置⽂件 (6)
1.4.BOSWebService部署 (7)
1.4.1.建⽴web⼯程.................................... 错误!未定义书签。
1.4.
2.部署发布⽂件 (7)
1.4.3.测试是否正确 (8)
1.4.4.Web⼯程⽬录及⽂件截图 (8)
1.5.客户端代码 (9)
1.5.1.获取wsdl服务描述⽂件 (9)
1.5.
2.下载⼯具 (10)
1.5.3.建⽴⼀个新⼯程 (10)
1.5.4.使⽤java客户端 (13)
1.5.5.importVoucher(凭证引⼊ (14)
1.6.BOS webservice 安全性 (15)
1.6.1.BOS webservice 安全性概述 (15)
1.6.
2.不启⽤安全性 (15)
1.6.3.启⽤安全性 (15)
1.6.4.如何安全性启⽤ (16)
1.7.EASLogin 登陆webservice 说明 (16)
1.7.1.EASLogin 接⼝说明 (16)
1.7.
2.EASLogin 异常说明 (17)
1.7.3.EASLogin 和前⾯版本的差别 (18)
1.8.webservice 异常查看 (18)
2.WebService 客户端开发指南 (19)
2.1.前提条件 (19)
2.2.获取WSDL⽂件 (19)
2.3.⽣成客户端 (19)
2.3.1.⽣成Java客户端 (19)
2.3.2.建⽴⼀个新⼯程 (20)
2.3.3.将获取到的WSDL⽂件拷贝到⼯程的根⽬录下: (20)
2.3.4.⽣成客户端 (21)
2.4.使⽤java客户端 (24)
2.5.⽣成C# 客户端 (24)
2.5.1.使⽤命令⾏ (24)
2.5.2.运⾏命令⽣成客户端 (25)
2.5.
3.使⽤客户端代码 (26)
3.webservice FAQ (28)
3.1.在EAS 上如何发布⼀个webservice ? (28)
3.2.如何调⽤⼀个 webservice? (28)
3.3.有哪些⼯具能够简单的测试 webservice? (28)
3.4.EASLogin 服务登陆如何判断失败 (28)
3.5.调⽤webservice时报 com.kingdee.bos.IllegalSessionStateException: Please
login first 异常? (28)
3.6.EAS6.0调⽤webservice时报没有 SrvURL() ⽅法。 (29)
3.7.调⽤webservice时报www.doczj/doc/f54393106.html
.SocketTimeoutException: Read timed out 异常
29
BOSWebService
1.1. BOSWebService原理
Webservice 主要由SOAP,WSDL, 以及UDDI 等⼏块技术组成,以XML格式进⾏数据的传输。是建⽴可互操作的分布式应⽤程序的新平台
Webservice的⼀个最基本的⽬的就是提供在各个不同平台的不同应⽤系统的协同⼯作能⼒。使各个异构系统之间实现⽆缝交互。在本质上是要为应⽤程序之间提供数据通讯的标
准,为企业应⽤之间动态地提供⼤颗粒度的服务,并不适合于⾮常精细的基于会话的⽅法调⽤以及复杂的事务(transaction)处理之中。
1.2. 发布WebService的约束
在BOS Studio中发布webService时,只能发布Entity和Fa?ade两种元数据类型成WebService服务端的代码。
由于Entity或Fa?ade函数参数和返回值可能包含很多复杂的业务类型,在发布时会⽣成许多辅助类,⼀些复杂类型在其他异构系统中⽣成webService客户端时不能很好的⽀持,因此建议在建⽴webService功能时,最好使⽤Fa?ade,并且提供简单类型的输⼊和返回参数。
1.3. BOSWebService发布
1.3.1.发布流程
先建⽴需要发布的Fa?ade,建⽴粗粒度的业务⽅法,业务⽅法尽可能提供简单数据类型的数据参数和返回参数。
1.3.
2.发布WebService
运⾏BOS Studio,打开“包分类”视图,在其中选中要发布WebService的实体或Fa?ade 对象(可同时选中多个),点击⿏标右键,在弹出菜单中选择“发布WebService”,将弹
出“发布WebService”向导:
调用webservice服务选择实体或Fa?ade对象下要发布的⽅法,⼿⼯输⼊或者点击“浏览”按钮来指定发布⽣成代码存放的⽬录,可以同时勾中“追加到配置⽂件”。这样BOS Studio将会根据选中的对象和要发布的⽅法⽣成WebService代码和wsdl描述
1.3.3.编辑WebService配置⽂件
在“包分类”视图中,选择要编辑其配置⽂件的解决⽅案,点击⼯具栏上的“编辑WebService 配置⽂件”按钮,将会弹出配置⽂件编辑向导
在其间,可以增加或删除要发布的对象(⽅法),选择好要发布的对象(⽅法)后,点击“完成”按钮,即可完成对配置⽂件的编辑。配置⽂件位于解决⽅案的根⽬录下。
1.4. BOSWebService部署
1.4.1.部署发布⽂件
发布成功以后,在临时⽬录⾥会⽣成⼀个wsdd⽂件和⼀个⽬录,例如:D:\webtest\AcctCussentCheckFacade.wsdd
D:\webtest\com\kingdee\eas\fi\gl\app\webservice\WSAcctCussentCheckFacadeSrv Proxy.java WSAcctCussentCheckFacadeSrvProxy.java⽂件拷贝到解决⽅案src⽬录中,注意包名和路径⼀致;AcctCussentCheckFacade.wsdd处理⽅法如下:
到解决⽅案的runtime\server\deploy\eas.ear⽬录,⽤解压缩软件打开web.war,进⼊WEB-INF⽬录
把AcctCussentCheckFacade.wsdd添加进去;
把AcctCussentCheckFacade.wsdd⽂件⾥的service节点内容添加到server-config.wsdd⽂件。操作⽅法建议:提取server-config.wsdd⽂件到临时⽬录,⽤编辑⼯具打开,再打开AcctCussentCheckFacade.wsdd,拷贝service节点内容粘贴到server-config.wsdd⽂件,注意XML格式⼀致;保存server-config.wsdd⽂件并拷回到web.war压缩包⾥。
1.4.
2.测试是否正确
上⾯的步骤操作完成后,快测已经可以看到新建的WebService。通过浏览器输⼊服务的地址,访问服务是否正确
如输⼊:
BOS快测启动的默认端⼝为56898
1.4.3.部署到正式服务器
1、在BIM中部署代码和元数据;
2、把解决⽅案下改好的runtime\server\deploy\eas.ear\web.war⽂件拷贝到EAS服务器的server\deploy\eas.ear⽬录中,
3.将⽣成的Web Service的java代码编译为class,放在EAS服务器的eas\server\deploy\eas.ear\web.war\WEB-INF\class下,把发布的wsdd⽂件中服务部分拷贝到server-config.wsdd中。
4.重启EAS服务器
1.4.4.Web⼯程⽬录及⽂件截图
1.5. 客户端代码
1.5.1.获取wsdl服务描述⽂件
WebService已经成功部署到应⽤服务器上(本⽂以Apusic为例进⾏说明),客户端可以通过浏览器访问到已部署的WebService。
要构建相关的客户端,就要获取已经部署的WebService的相应的WSDL⽂件,⽤⿏标右键点击蓝⾊的部分“(wsdl)”,选取“⽬标另存为”菜单,这时将出现选择保存⽂件位置的对话框,在⽂
件名处将⽂件的后缀名由xml改为wsdl,将wsdl⽂件保存⾄本地。
1.5.
2.下载⼯具
通过下载eclipse(下载j2ee版本)或通过命令⾏来⽣成
java -dirs=lib org.apache.axis.wsdl.WSDL2Java
其中lib是axis包⽬录⽣成客户端代码。
1.5.3.建⽴⼀个新⼯程
例如建⽴⼀个⼯程名为GenerateWSClient的Java⼯程:
将获取到的WSDL⽂件拷贝到⼯程的根⽬录下
⽤⿏标右键点击要⽣成客户端的WSDL⽂件,选取菜单“Web Services”-“Generate Client”
将会弹出⽣成客户端向导
如图,使⽤默认值,点击“Next >”,进⼊下⼀步:
依然使⽤默认值,点击“Next >”,进⼊下⼀步:
依然使⽤默认值,点击“Finish”,即可⽣成相应的客户端⼯程(是⼀个Web⼯程)
1.5.4.使⽤java客户端
新⽣成的⼯程中有⼀个JavaSource⽬录,我们要使⽤的java代码就位于这个⽬录,例如上图中的WSLoginProxy.java。以下是⼀个使⽤Java客户端的例⼦:
i.RemoteException;
import com.kingdee.WSLoginProxy;//此为发布的代码
import com.client.WSContext;
public class LoginTest {
public static void main(String[] args) {
try {
WSLoginProxy proxy = new WSLoginProxy();
/**
* web service客户端登陆
* userName ⽤户名
* password 密码
* slnName eas
* dcName 数据中⼼,对应的是dataCenter中数据中⼼id
* language 语⾔ L2简体
* dbType 数据库类型 0:sqlServer 1:db2 2:oracle
* authPattern 验证⽅式默认 "BaseDB" ; 其他认证⽅式KEY可从
*/
WSContext ctx = proxy.login("⽤户", "", "eas", "数据中⼼id", "L2", 0); //成功登录后打印sessionId System.out.SessionId());
//调⽤凭证业务webservice⽅法importVoucher(凭证引⼊),请看1.55节
}
catch (RemoteException e) {
e.printStackTrace();
}
}
}
1.5.5.importVoucher(凭证引⼊
1、凭证引⼊接⼝,两个接⼝⽅法都可⽤,且⽤法⼀致
2、凭证 webService 接⼝⽣成客户端,可参考 EASLogin ⽅法
3、凭证引⼊参数:importVoucher(wsvoucher[], int isVerify, int isCashflow)
●传参数第1个:WSWSVoucher[] 普通对象数组,见构造EAS凭证字段以及含义说
明
●传参数第2个:isverify
0 不核销,暂存
1 核销,暂存
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论