Hi
I have tried to implement a test transactional custom service (it creates 2 simple folders) but it doesn't work .
I attach the code (I think it is correct)
1) I invoke the DFS core services locally
2) I have configured the context to apply transactionallity
But the folders ALWAYS ARE CREATED!!! It does not do the rollback!!
anyone knows why it does not work??? Any idea would be appreciated.
Thank you!!
@DfsPojoService(requiresAuthentication=false)
public class CustomService extends DfService {protected IServiceContext serviceContext;protected String defaultRepositoryName = "xxxxx";protected String secondaryRepositoryName;protected static String userName = "xxxxx";protected static String password = "xxxxx";protected boolean remoteMode = false;protected IObjectService objectService;protected IWorkflowService workflowService;public int customMethod(String num1, String num2) userName,password); try {/*** FOLDER 1 CREATION ***/ObjectIdentity objectIdentity =new ObjectIdentity(defaultRepositoryName); new DataObject(objectIdentity, "dm_folder"); new PropertySet();"object_name", "Test"+num1); /*** FOLDER 2 CREATION***/ObjectIdentity objectIdentity2 =new ObjectIdentity(defaultRepositoryName); new DataObject(objectIdentity2, "dm_folder"); new PropertySet();"2";"object_name", "Test"+num2); /*** FOLDER 1 CREATION ***/ null; new DataPackage();objectService.create(dataPackage, operationOptions);/*** FOLDER 2 CREATION ***/ null; new DataPackage();dataPackage2.addDataObject(folderDataObject2);objectService.create(dataPackage2, operationOptions2);/*** TEST TRANSACTION ***/out.println("Inside testTransaction, userTransaction=" +serviceContext.getRuntimeProperty(IServiceContext.USER_TRANSACTION_HINT)); out.println("Inside testTransaction, payload processing policy=" +serviceContext.getRuntimeProperty(IServiceContext.PAYLOAD_PROCESSING_POLICY)); int i = 1/0;}catch (ServiceException e) {// TODO Auto-generated catch blocke.printStackTrace();return -1; return 0; protected void setContext(String userName, String password) serviceContext = contextFactory.newContext();new RepositoryIdentity(); defaultRepositoryName); serviceContext.addIdentity(repoId);new ContentTransferProfile(); UCF);serviceContext.setProfile(contentTransferProfile);serviceContext.setRuntimeProperty(IServiceContext.USER_TRANSACTION_HINT, IServiceContext.TRANSACTION_REQUIRED);private void setService() try if(remoteMode){objectService = serviceFactory.getRemoteService(IObjectService.class, serviceContext,"core",http://localhost:8888/services);else{objectService = serviceFactory.getLocalService(IObjectService.class,serviceContext); catch (ServiceInvocationException e) throw new RuntimeException(e); }}}{e.printStackTrace();}}}{{ServiceFactory serviceFactory = ServiceFactory.getInstance();}contentTransferProfile.setTransferMode(ContentTransferMode.ContentTransferProfile contentTransferProfile =repoId.setUserName(userName);repoId.setPassword(password);repoId.setRepositoryName(RepositoryIdentity repoId ={ContextFactory contextFactory = ContextFactory.getInstance();}}/*** FORCING TO THE ERROR ***/ System.System.DataPackage dataPackage2 =OperationOptions operationOptions2 =dataPackage.addDataObject(folderDataObject);DataPackage dataPackage =OperationOptions operationOptions =folderDataObject2.setProperties(folderProperties2);folderProperties2.set(String numRegistre2 =PropertySet folderProperties2 =DataObject folderDataObject2 =folderDataObject.setProperties(folderProperties);String numRegistre = assentamentEntrada.getNumRegistre();folderProperties.set(PropertySet folderProperties =DataObject folderDataObject =setService();{setContext(