superwingkoo |
2012-08-17 16:49 |
exchange二次开发的更新操作
ExchangeServicePortType exChangeServiceProxy = getFactory() .getExchangeServerPort(); UpdateItemType updateItemType = new UpdateItemType(); //设置changekey和uid ItemChangeType itemChangeType = new ItemChangeType(); itemChangeType.setItemId(itemIdType); //设置更新的calendar对象 NonEmptyArrayOfItemChangesType updateItemsType = new NonEmptyArrayOfItemChangesType(); NonEmptyArrayOfItemChangeDescriptionsType itemChangeDescriptionsType = new NonEmptyArrayOfItemChangeDescriptionsType(); List<ItemChangeDescriptionType> itemChangeDescriptionTypesList = itemChangeDescriptionsType.getAppendToItemFieldOrSetItemFieldOrDeleteItemField(); //更新的calendar对象 AppendToItemFieldType setItemFieldType = new AppendToItemFieldType(); CalendarItemType appointment = new CalendarItemType(); BodyType bodyType = new BodyType(); bodyType.setBodyType(BodyTypeType.TEXT); bodyType.setValue("11111111"); appointment.setBody(bodyType); appointment.setItemClass("IPM.Appointment"); appointment.setSubject("开会111"); appointment.setLocation("meeting001"); SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); appointment.setItemId(itemIdType); Date startTime = dateFormat.parse("2012-08-17 17:00:00"); Date endTime = dateFormat.parse("2012-08-17 18:00:00"); appointment.setStart(DateUtil.getXMLCalendar(startTime)); appointment.setEnd(DateUtil.getXMLCalendar(endTime)); setItemFieldType.setCalendarItem(appointment); //设置webservice的命名空间 PathToUnindexedFieldType ptuftDisplayName = new PathToUnindexedFieldType(); ptuftDisplayName.setFieldURI(UnindexedFieldURIType.CALENDAR_ALLOW_NEW_TIME_PROPOSAL); QName qName = new QName("http://schemas.microsoft.com/exchange/services/2006/types", "Path"); JAXBElement<PathToUnindexedFieldType> element = new JAXBElement<PathToUnindexedFieldType>(qName, PathToUnindexedFieldType.class, ptuftDisplayName); setItemFieldType.setPath(element); itemChangeDescriptionTypesList.add(setItemFieldType); itemChangeType.setUpdates(itemChangeDescriptionsType); //设置updateItemType的其他属性 updateItemsType.getItemChange().add(itemChangeType); updateItemType.setItemChanges(updateItemsType); updateItemType.setConflictResolution(ConflictResolutionType.AUTO_RESOLVE); updateItemType.setSendMeetingInvitationsOrCancellations(CalendarItemUpdateOperationType.SEND_TO_CHANGED_AND_SAVE_COPY); //System.out.println(updateItemType); Holder<UpdateItemResponseType> updateItemResult = new Holder<UpdateItemResponseType>(new UpdateItemResponseType()); Holder<ServerVersionInfo> serverVersion = new Holder<ServerVersionInfo>(new ServerVersionInfo()); exChangeServiceProxy.updateItem(updateItemType, updateItemResult, serverVersion); 这个我关于更新约会的方法,但报如下错误: javax.xml.ws.soap.SOAPFaultException: 发生了内部服务器错误。 at com.sun.xml.internal.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:178) at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:111) at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:108) at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78) at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:107) at $Proxy40.updateItem(Unknown Source) at a.ExchangeManager.updateMeetingForExchange(ExchangeManager.java:444) at a.ExchangeManager.main(ExchangeManager.java:475) 请问该怎么做 我cxf将wsdl文件称webservice客户端接口。 或者有谁有源码(无论是java还是C#都可以) |
|