Published Business Service Model
Two methods are required to expose a published business service class as a web service: a public method and a protected method. The sole purpose of the public method is to be called as a web service. The protected method manages and processes the call to the business service classes.
You can use this code sample as a model for your published business service class:
/** * RI_AddressBookManager is the published business service class exposing * functionality within Address Book processes. */ public class AddressBookManager extends PublishedBusinessService { /** * published business service Public Constructor */ public AddressBookManager() { } /** * Published method for Adding an AddressBook Record. * Acts as wrapper method, passing null context and null connection, * will call protected addAddressBook. * @param vo the value object representing input data for Adding an * AddressBook record * @return confirmVO the response data from the business process for adding an * AddressBook record. * @throws BusinessServiceException */ public ConfirmAddAddressBook addAddressBook(AddAddressBook vo) throws BusinessServiceException { return (addAddressBook(null, null, vo)); } /** * Protected method for RI_AddressBookManager published business * service. * addAddressBook will make calls to business service classes * for completing business process. * @param vo the value object representing input data for adding an * AddressBook record. * @param context conditionally provides the connection for the * database operation and logging information * @param connection can either be an explicit connection or null. * If null, the default connection is used. * @return response value object is the data returned from the * business process for adding an AddressBook record. * @throws BusinessServiceException */ protected ConfirmAddAddressBook addAddressBook(IContext context, IConnection connection, AddAddressBook vo) throws BusinessServiceException { //perform all work within try block, finally will clean up any //connections try { //Call start published method, passing context of null will //return context object so BSFN or DB operation can be called //later. //Context will be used to indicate default transaction //boundary, as well as access to formatting and logging //operations. context = startPublishedMethod(context, "addAddressBook", vo); //Create new published business service messages object for holding //errors and warnings that occur during processing. E1MessageList messages = new E1MessageList(); // Create a new internal value object. InternalAddAddressBook internalVO = new InternalAddAddressBook(); vo.mapFromPublished(context, internalVO); //Call business service passing context, connection and //internal VO E1MessageList bssvMessages = AddressBookProcessor. addAddressBook(context,connection, internalVO); //Add messages returned from business service to message list //for published business service. messages.addMessages(bssvMessages); //A published business service will send either warnings in //the Confirm Value Object or throw a published business //service Exception. //If messages contains errors, throw the exception if (messages.hasErrors()) { //Get the string representation of all the messages. String error = messages.getMessagesAsString(); //Throw new BusinessServiceException throw new BusinessServiceException(error, context); } //Exception was not thrown, so create the confirm VO from internal VO ConfirmAddAddressBook confirmVO = new ConfirmAddAddressBook(internalVO); confirmVO.setE1MessageList(messages); finishPublishedMethod(context, "addAddressBook"); //return outVO, filled with return values and messages return confirmVO; } finally { //Call close to clean up all remaining connections and //resources. close(context, "addAddressBook"); } }