BOS WebService开发指南

一.建立Façade或者Entity,本案例中以Façade为例,Entity可以参考

在BOS Studio工具中建立Façade以及相应的方法并发布,发布时要勾选“生成配置文件”

需要注意的地方:

1、发布成WebService的方法,其方法参数和返回值类型必须是下列列表中的类型,否则发布时看不见方法。是否可以添加异常未尝试。

2、早期的BOS Studio发布元数据是有BUG的,发布以后,元数据和配置文件并没有同步拷贝到deployed_metas目录中,和需要手工同步Facade元数据和metadata目录下的facade_pkmapping.properties文件(或者entity_pkmapping.properties)

二.在BOS Studio中选择Façade发布WebService

发布成功以后,在临时目录里会生成一个wsdd文件和一个目录,例如:

D:\webtest\KmyeFacade.wsdd

D:\webtest\com\kingdee\eas\custom\kmye\app\webservice\WSKmyeFacadeSrvProxy.java

WSKmyeFacadeSrvProxy.java文件拷贝到解决方案src目录中,注意包名和路径一致;

KmyeFacade.wsdd处理方法如下:

    找到解决方案的runtime\server\deploy\eas.ear目录,用解压缩软件打开web.war,进入WEB-INF目录

  1. 把KmyeFacade.wsdd添加进去
  2. 把KmyeFacade.wsdd文件里的service节点内容添加到server-config.wsdd文件。操作方法建议:提取server-config.wsdd文件到临时目录,用UltraEdit32打开,再打开KmyeFacade.wsdd,拷贝service节点内容粘贴到server-config.wsdd文件,注意XML格式一致;保存server-config.wsdd文件并拷回到web.war压缩包里。

    上面的步骤操作完成后,快测已经可以看到新建的WebService

三.部署到正式服务器

1、在BIM中部署代码和元数据;

2、把解决方案下改好的runtime\server\deploy\eas.ear\web.war文件拷贝到EAS服务器的server\deploy\eas.ear目录中,重启EAS服务器

四.验证

打开浏览器,输入地址:http://server-ip:port/ormrpc/services,应该可以看到新建的Webservice,右键点击相应的wsdl,选择另存为…,扩展名改为wsdl,就可以下载客户端开发使用的wsdl文件。

五.客户端开发

注意:

1. 在myeclipse上通过wsdl创建客户端好像有问题,请使用eclipse

2. 使用EAS的WebService之前,必须先通过EASLogin Web服务登录(运行EAS登录接口),否则会产生认证错误。EASLogin里有两个login方法,只调用参数如下的login:

String userName //EAS登录用户名,可以是user或其他有效的用户名

String password //EAS用户登录密码

String slnName  //eas

String dcName   //注册的数据中心名称

String language //登录的语言

Int32 dbType    //数据类型,0:MSSQL,1:ORACLE

新建java项目,把下载的wsdl文件拷贝到项目中,右键点击,选择:Web Services—>Generate Client,产生客户端代理类。

客户端代码示例:

public class wstest {

    public static void main(String[] args){

       try {

           //  通过WebService登录EAS

           EASLoginProxyServiceLocator loginLocator = new EASLoginProxyServiceLocator();

           EASLoginProxy loginProxy = loginLocator.getEASLogin();

           System.out.println("------ 开始登录服务器 .... ");

           WSContext context = loginProxy.login("user", "", "eas", "001", "L2", 0);

           System.out.println("------ 登陆成功,SessionID" + context.getSessionId());

          

           //  通过Kmye WevService获取信息

           WSKmyeFacadeSrvProxyServiceLocator accountLocator = new WSKmyeFacadeSrvProxyServiceLocator();

           WSKmyeFacadeSrvProxy accountProxy = accountLocator.getWSKmyeFacade();

           String result = accountProxy.getBasedata(null);

           System.out.println(result);

           result = accountProxy.getAccountBalance(null);

           System.out.println(result);

          

       } catch (ServiceException e) {

           e.printStackTrace();

       } catch (RemoteException e) {

           e.printStackTrace();

       }

    }

}

猜你喜欢

转载自blog.csdn.net/qq_37976489/article/details/118680764