金蝶EAS8.2二次开发,做webservice接口

1.WebService接口调用及调试
2.BoswebService原理
由SAOP,WADL,以及uudi等几块技术组成,以xml格式进行数据的传输
在bos中只能发布Entity和Façade两种元数据类型.在建立webService功能时最好使用Façade
并且提供简单类型的输入和返回值.
3.webService建立
建立需要发布的façade,建立简单的业务逻辑
在设计模式点击右键发布webService(如下图所示)
在这里插入图片描述

在(java发布目录)E:webService里面打开com这个包,找到生成的webService类文件
再打开Java透视图,建一个一模一样的类(包路径,类名一样).以上步骤完成之后

4.webService发布:
注意 :部署应用之前 请先停EAS服务
元数据文件: dev_cjdl_metas.jar
Class文件: dev_cjdl_classes.jar
WS 接口文件:CalcPersonFacade.wsdd
class:
D:\Kingdee82\eas\server\deploy\fileserver.ear\easWebClient\lib\sp
D:\Kingdee82\eas\server\lib\sp
元数据:
D:\Kingdee82\eas\server\deploy\fileserver.ear\easWebClient\metas\sp
D:\Kingdee82\eas\server\metas\sp
webService 地址:
D:\Kingdee82\eas\server\deploy\eas.ear
WS部署:
1、以压缩软件打开文件 :D:\Kingdee82\eas\server\deploy\eas.ear\web.war,
2、把WS 接口文件放到web.war\web-inf 路径下
2、以文本打开:server-config.wsdd
3、将WS接口文件的service节点放到server-config.wsdd 对应的节点
3、生成子系统树
4、重启服务,输入地址测试:http://localhost:6888/ormrpc/services,出现下图为部署正常
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5.测试webService:
注意在调试自己的webService时,一定要先调用登录的方法再对自己的webService进行调试
在这里插入图片描述
在这里插入图片描述
打开浏览器,输入地址: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//登录的语言 L2
    Int32 dbType //数据类型,0:MSSQL,1:ORACLE
    新建java项目,把下载的wsdl文件拷贝到项目中,右键点击,选择:Web Services—>Generate Client,产生客户端代理类。

打开浏览器,输入地址: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//登录的语言 L2
    Int32 dbType //数据类型,0:MSSQL,1:ORACLE
    新建java项目,把下载的wsdl文件拷贝到项目中,右键点击,选择:Web Services—>Generate Client,产生客户端代理类。
    客户端代码示例:
    package test;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.rmi.RemoteException;
    import javax.xml.rpc.ServiceException;
    import _252._10._168._192.ormrpc.services.EASLogin.EASLoginProxy;
    import _252._10._168._192.ormrpc.services.EASLogin.EASLoginProxyServiceLocator;
    import _252._10._168._192.ormrpc.services.WSImportBudgetDataFacade.WSImportBudgetDataFacadeSrvProxy;
    import _252._10._168._192.ormrpc.services.WSImportBudgetDataFacade.WSImportBudgetDataFacadeSrvProxyServiceLocator;
    import client.WSContext;
    public class test {
    /**
  • @param args
    /
    public static void main(String[] args) {
    try {
    EASLoginProxyServiceLocator loginLocator = new EASLoginProxyServiceLocator();
    EASLoginProxy loginProxy = loginLocator.getEASLogin();
    System.out.println("------ 开始登录服务器 … “);
    WSContext context = loginProxy.login(“user”, “kduser”, “eas”, “test01”, “L2”, 1);
    System.out.println(”------ 登陆成功,SessionID:" + context.getSessionId());
    WSImportBudgetDataFacadeSrvProxyServiceLocator importBudgetDataLocator = new WSImportBudgetDataFacadeSrvProxyServiceLocator();
    WSImportBudgetDataFacadeSrvProxy importBudgetDataProxy = importBudgetDataLocator.getWSImportBudgetDataFacade();
    System.out.println("------ 导入预算数据开始 … “);
    String filePath = “F:/汇中金融集团-重庆江北个贷一部-2016年-测试模板1.xls”;
    InputStream is = new FileInputStream(filePath);
    int fileSize = is.available();
    byte[] datas = datas = new byte[fileSize];;
    String orgNumber=“01102”;
    String templateName=“汇中金融集团-重庆江北个贷一部-2016年-测试模板1”;
    is.read(datas);
    String result = importBudgetDataProxy.importBudgetData(datas, orgNumber, templateName);
    System.out.println(result);
    System.out.println(”------ 导入预算数据结束 … ");
    } catch (ServiceException e) {
    e.printStackTrace();
    } catch (RemoteException e) {
    e.printStackTrace();
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    2、
    package test;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.MalformedURLException;
    import java.net.URL;
    import javax.xml.namespace.QName;
    import javax.xml.rpc.ParameterMode;
    import javax.xml.rpc.ServiceException;
    import javax.xml.rpc.encoding.XMLType;
    import org.apache.axis.client.Call;
    import org.apache.axis.client.Service;
    public class test2 {
    /
    *
  • @param args
    */
    public static void main(String[] args) {
    try {
    String filePath = “F:/XX个贷一部-2016年-测试模板1.xls”;
    InputStream input = new FileInputStream(filePath);
    int fileSize = input.available();
    byte[] datas = datas = new byte[fileSize];
    String orgNumber=“01102”;
    String templateName=“XX个贷一部-2016年-测试模板1”;
    input.read(datas);
    Service service = new Service();
    Call call = (Call)service.createCall();
    //wsdl地址
    call.setTargetEndpointAddress(new URL(“http://192.168.10.252:6888/ormrpc/services/WSImportBudgetDataFacade”));
    //设定调用3分钟不返回则超时
    call.setTimeout(new Integer(180000));
    //你需要远程调用的方法
    call.setOperationName(new QName(“http://192.168.10.252:6888/ormrpc/services/WSImportBudgetDataFacade”,“importBudgetData”));
    //方法参数,如果没有参数请无视
    call.addParameter(“datas”, XMLType.XSD_BASE64, ParameterMode.IN);
    call.addParameter(“orgNumber”, XMLType.XSD_STRING, ParameterMode.IN);
    call.addParameter(“templateName”, XMLType.XSD_STRING, ParameterMode.IN);
    //设置返回类型,接口返回的json,用string接收
    call.setReturnType(XMLType.XSD_STRING);
    String result = (String) call.invoke( new Object[] { datas,orgNumber,templateName });
    System.out.println(result);
    } catch (ServiceException e) {
    e.printStackTrace();
    } catch (MalformedURLException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }

猜你喜欢

转载自blog.csdn.net/qq_31450641/article/details/103960722