Sorry , its not java backed , but script based webservice 
Few methods as below for java class : 
   private void updateInteractionStatus(NodeRef node ,String msg , String interactionId)
   {
      log.debug("updateInteractionStatus : :" );
      if(!nodeService.hasAspect(node,  ExtContentModel.ASPECT_INTERACTION_INFO))
      {
         log.debug("updateInteractionStatus :   adding aspect  :" );
         Map<QName, Serializable> aspectProps = new HashMap<QName, Serializable>();
         aspectProps.put(ExtContentModel.PROP_INTERACTION_STATUS, msg);
         aspectProps.put(ExtContentModel.PROP_INTERACTIONID, interactionId);
         aspectProps.put(ExtContentModel.PROP_INTERACTION_TYPE, CREATE_INTERACTION_TYPE);
         nodeService.addAspect(node, ExtContentModel.ASPECT_INTERACTION_INFO, aspectProps);
      }
      else
      {
         log.debug("updateInteractionStatus : setting aspect   :" );
         //   serviceRegistry.getAuthenticationService().authenticate("admin","admin".toCharArray());
         Map<QName, Serializable> props = nodeService.getProperties(node);
         props.put(ExtContentModel.PROP_INTERACTION_STATUS, msg);
         props.put(ExtContentModel.PROP_INTERACTIONID, interactionId);
         props.put(ExtContentModel.PROP_INTERACTION_TYPE, CREATE_INTERACTION_TYPE);
         nodeService.setProperties(node, props);
      }
   }
   /**
    * Method to process CreateInteraction calls for Exbo documents
    */
   public void processFailedExboDocs()
   {
      try
      {
         System.out.println("DocumentUploadScriptAction  processFailedExboDocs>>");
         ResultSet docResultSet =serviceRegistry.getSearchService().
               query(storeRef,
                     SearchService.LANGUAGE_LUCENE,
                     "PATH:\"/app:company_home/st:sites/cm:customersupport/cm:documentLibrary/cm:BASE/cm:INVALID/cm:EXBO//*\" OR PATH:\"/app:company_home/st:sites/cm:customersupport/cm:documentLibrary/cm:BASE/cm:INCOMING/cm:EXBO//*\" OR PATH:\"/app:company_home/st:sites/cm:customersupport/cm:documentLibrary/cm:BASE/cm:TO_BE_ARCHIVED/cm:EXBO//*\""
                     );
         List<NodeRef> nodeRefs = docResultSet.getNodeRefs();
         createInteractionRetrail(nodeRefs );
      }
      catch(Exception e)
      {
         e.printStackTrace();
      }
   }
——————————————————————————–
CreateInteractionWS.get.js
validationProcessor.processFailedExboDocs(); // validationProcessor is subclass of BaseScopableProcessorExtension 
——————————————————————————–
CreateInteractionWS.get.desc.xml
<webscript>
  <shortname>Archieve</shortname>
  <description>Document List Action - Backup document(s)</description>
  <url>/CreateNewInteraction</url>
  <format default="html">argument</format>
  <authentication>user</authentication>
</webscript>
——————————————————————————-
CreateInteractionWS.get.html.ftl
<html>
  <body>
     DataCorrection >> Update metadata / movement done successfully.
      <p>Hello ${person.properties.userName}</p>
  </body>
</html>