当前位置:文档之家› 第三方调用U9服务说明(Java平台)

第三方调用U9服务说明(Java平台)

第三方调用U9服务说明(Java平台)
第三方调用U9服务说明(Java平台)

第三方调用U9服务(Java平台)

一、Java环境搭建

a)Jdk版本jdk-5_5_0_10

b)apache-cxf-2.2.4

c)开发工具Eclipse

d)配置环境变量

添加新变量ClASSPATH:

值为“.;C:\Program Files\Java\jdk1.5.0_10\lib\Tools.jar;C:\Program Files\Java\jdk1.5.0_10\jre\lib\rt.jar”

添加新变量Java_HOME :

值为“C:\Program Files\Java\jdk1.5.0_10”

Path变量后追加:“C:\Program Files\Java\jdk1.5.0_10\bin”

说明:C:\Program Files\Java\jdk1.5.0_10是jdk的安装目录

e)UFIDA U9服务器

二、引用U9服务

以创建收货单服务为例,UFIDA.U9.ISV.RCV.ICreateRCVSRV.svc

a)验证服务是否可用

如果能显示显示下面的图片说明服务可用

b)生成代理类

利用apache-cxf-2.2.4针对wsdl导出java客户端文件

D:\apache-cxf-2.2.4\bin> wsdl2java -d d:\JavaService -verbose http://localhost/portal/services/UFIDA.U9.ISV.RCV.ICreateRCVSRV.svc?wsdl 注明:

-d <客户端代码输出路径>

-verbose<服务地址>

查看生成的文件:

c)构架项目

1.创建Java测试工程

2.Copy cxf 生成客户端Java文件到工程目录

3.新建类TestMain.java

4.添加外部引用库Jar

在项目上右键点属性

5.修改服务地址Uri

三、项目实现细节

a)调用服务框架代码

类似DotNet平台调用代码,主要是语法不同

//开始调用ERP服务,“创建服务”

org.tempuri.CreateRCVSRVStub createRcvsvclient = new org.tempuri.CreateRCVSRVStub();

org.ufida.UFIDAU9ISVRCVICreateRCVSRV createsv =

createRcvsvclient.getBasicHttpBindingUFIDAU9ISVRCVICreateRCVSRV();

//给头、明细赋值

org.ufida.entitydata.ArrayOfUFIDAU9ISVRCVDTOOBAReceivementDTOData rCVList =

createRCVList();

//doResult就是返回结果。

Holder doResult = new

Holder() ;

Holder outMessages

= new Holder();

try

{

//将入库单内容传入ERP(入和返的值,均作为此方法的参数)。

//context验证信息,rCVList入的值,doResult方法返回值,

createsv._do(context, rCVList, doResult, outMessages);

System.out.println("Invoke end ...");

}

c atch(Exception ex)

{

//省略部分代码

}

b)上下文信息

//创建当前上下文(相当于验证信息,这部分需灵活配置)

String IDForCompany = "002";//当前企业编号

Long IDForOrganization = new Long("1001007128961046");//当前组织ID

Long IDForUsers = new Long("1001007176447429");//当前用户ID

String UserCode = "demo";//当前用户编码

//创建上下文环境

Object context = createContext(IDForCompany,IDForOrganization,IDForUsers,UserCode);

//创建上下文环境

private static Object createContext(String entid,long orgid,long userid,String usercode) {

org.datacontract.schemas._2004._07.ufsoft_ubf_util.ObjectFactory contextfactory = new

org.datacontract.schemas._2004._07.ufsoft_ubf_util.ObjectFactory();

org.datacontract.schemas._2004._07.ufsoft_ubf_util.ThreadContext tc = contextfactory.createThreadContext();

com.microsoft.schemas._2003._10.serialization.arrays.ObjectFactory arrayFactory = new

com.microsoft.schemas._2003._10.serialization.arrays.ObjectFactory();

ArrayOfKeyValueOfanyTypeanyType contextarray =

arrayFactory.createArrayOfKeyValueOfanyTypeanyType();

KeyValueOfanyTypeanyType kv1 = new KeyValueOfanyTypeanyType();

kv1.setKey("EnterpriseID");

kv1.setValue(entid);//填具体的企业编号

contextarray.getKeyValueOfanyTypeanyType().add(kv1);

KeyValueOfanyTypeanyType kv2 = new KeyValueOfanyTypeanyType();

kv2.setKey("OrgID");

kv2.setValue(orgid);//填具体的组织ID

contextarray.getKeyValueOfanyTypeanyType().add(kv2);

KeyValueOfanyTypeanyType kv3 = new KeyValueOfanyTypeanyType();

kv3.setKey("UserID");

kv3.setValue(userid);////填具体的用户ID

contextarray.getKeyValueOfanyTypeanyType().add(kv3);

KeyValueOfanyTypeanyType kv4 = new KeyValueOfanyTypeanyType();

kv4.setKey("UserCode");

kv4.setValue(usercode);//填具体的用户编码

contextarray.getKeyValueOfanyTypeanyType().add(kv4);

KeyValueOfanyTypeanyType kv5 = new KeyValueOfanyTypeanyType();

kv5.setKey("CultureName");

kv5.setValue("zh-CN");//当前语种

contextarray.getKeyValueOfanyTypeanyType().add(kv5);

tc.setNameValueHas(contextarray);

return tc ;

}

c)传入参数

private static org.ufida.entitydata.ArrayOfUFIDAU9ISVRCVDTOOBAReceivementDTOData createRCVList()

{

org.ufida.entitydata.ObjectFactory dataFactory = new

org.ufida.entitydata.ObjectFactory();

//创建DTO集合,也就是参数要求的对象。

org.ufida.entitydata.ArrayOfUFIDAU9ISVRCVDTOOBAReceivementDTOData rcvDToArray = dataFactory.createArrayOfUFIDAU9ISVRCVDTOOBAReceivementDTOData();

//DTO集合中的每个对象,都需要这样创建出来。

UFIDAU9ISVRCVDTOOBAReceivementDTOData headerData =

dataFactory.createUFIDAU9ISVRCVDTOOBAReceivementDTOData();// 表头赋值

headerData.setSysState(ObjectState.INSERTED);//“新建”标记符

XMLGregorianCalendar timeValue = new XMLGregorianCalendarImpl();

timeValue.setYear(2010);

timeValue.setMonth(4);

timeValue.setDay(2);

timeValue.setHour(10);

timeValue.setMinute(35);

timeValue.setSecond(30);

headerData.setMBusinessDate(timeValue); // 日期

//单据类型

UFIDAU9PMDTOsBESimp4UIDTOData docType =

dataFactory.createUFIDAU9PMDTOsBESimp4UIDTOData();

docType.setMCode(dataFactory.createUFIDAU9PMDTOsBESimp4UIDTODataMCode("RCV01") );

docType.setSysState(ObjectState.INSERTED);

headerData.setMRcvDocType( dataFactory.createUFIDAU9ISVRCVDTOOBAReceivementDTO DataMRcvDocType(docType));

。。。。。//省略部分代码

//对明细进行赋值

UFIDAU9ISVRCVDTOOBARcvLineDTOData detailsData =

dataFactory.createUFIDAU9ISVRCVDTOOBARcvLineDTOData();

detailsData.setSysState(ObjectState.INSERTED);

detailsData.setMDocLineNo(10);//行号

//料品

UFIDAU9CBOSCMItemItemInfoData ItemInfoData =

dataFactory.createUFIDAU9CBOSCMItemItemInfoData();

ItemInfoData.setMItemCode(dataFactory.createUFIDAU9CBOSCMItemItemInfoDataMItemCode( "1-01-0"));

ItemInfoData.setSysState(ObjectState.INSERTED);

detailsData.setMItemInfo(dataFactory.createUFIDAU9ISVRCVDTOOBARcvLineDTODataMItemIn fo(ItemInfoData));//料品

//最终价

BigDecimal finallyPrice = new BigDecimal("3200");

detailsData.setMFinallyPriceTC(finallyPrice);

。。。。。。。。//省略部分代码

//将明细的值放入头中

ArrayOfUFIDAU9ISVRCVDTOOBARcvLineDTOData m_m_detail = dataFactory.createArrayOfUFIDAU9ISVRCVDTOOBARcvLineDTOData();

m_m_detail.getUFIDAU9ISVRCVDTOOBARcvLineDTOData().add(detailsData);

headerData.setMRcvLines(dataFactory.createUFIDAU9ISVRCVDTOOBAReceivementDTODataMRcv Lines(m_m_detail));

//注意:任何参数的类型只要不是最简单类型,都应该通过Factory来创建。

//一般这个类型在哪个包中,Facotry也会在同样的包中有一个ObjectFacotry的类型

rcvDToArray.getUFIDAU9ISVRCVDTOOBAReceivementDTOData().add(headerData);

return rcvDToArray;

}

d)捕获异常

//捕获服务中的异常。

catch(org.ufida.UFIDAU9ISVRCVICreateRCVSRVDoServiceExceptionFaultFaultMessage ex)

{

//下面的代码可以将服务端的异常信息给显示输出来。

ServiceException ed = ex.getFaultInfo();

for (int i=0 ;i

{

System.out.println(ed.getAny().get(i).toString());

System.out.println(ed.getAny().get(i).getFirstChild().toString());

}

}

catch(Exception ex)

{

System.out.println("Error..");

System.out.println(ex.getMessage());

System.out.println(ex.getClass().toString());

System.out.println(ex.getStackTrace().toString());

}

.

相关主题
文本预览
相关文档 最新文档