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文件。
五.客户端开发
注意:
- 在myeclipse上通过wsdl创建客户端好像有问题,请使用eclipse
- 使用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文件。
五.客户端开发
注意:
- 在myeclipse上通过wsdl创建客户端好像有问题,请使用eclipse
- 使用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();
}
}
}
来源:CSDN
作者:qq_31450641
链接:https://blog.csdn.net/qq_31450641/article/details/103960722