From 169cf0cc4b22df73b8c8c166dfb86995f863b6dc Mon Sep 17 00:00:00 2001 From: pkupczyk <pkupczyk> Date: Wed, 26 Sep 2012 10:06:48 +0000 Subject: [PATCH] BIS-185 / Make long-running method calls in IDataStoreService use service conversations BIS-196 / Make service conversations timeout configurable - improve javadoc SVN: 26817 --- ...ServiceConversationClientManagerLocal.java | 2 ++ ...ServiceConversationServerManagerLocal.java | 2 ++ .../ServiceConversationClientManager.java | 2 ++ .../ServiceConversationServerManager.java | 2 ++ .../annotation/Conversational.java | 7 ++++++ .../conversation/annotation/Progress.java | 22 ++++++++++++++++++- .../ServiceConversationClientDetails.java | 8 +++++++ ...rsationClientWithConversationTracking.java | 11 ++++++++++ .../ServiceConversationsThreadContext.java | 17 +++++++------- .../BaseServiceConversationClientManager.java | 22 +++++++++++++++++++ .../BaseServiceConversationServerManager.java | 17 ++++++++++++++ ...erviceConversationClientManagerRemote.java | 2 +- .../ServiceConversationServiceFactory.java | 2 +- .../ServiceConversationServiceProxy.java | 4 ++-- .../ServiceConversationMethodInvocation.java | 18 ++++++++------- ...ConversationAutomaticProgressListener.java | 3 +++ ...rviceConversationNullProgressListener.java | 2 ++ .../ServiceConversationClientManager.java | 2 ++ .../ServiceConversationServerManager.java | 3 ++- ...ServiceConversationClientManagerLocal.java | 2 ++ ...ServiceConversationServerManagerLocal.java | 2 ++ 21 files changed, 129 insertions(+), 23 deletions(-) diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/IServiceConversationClientManagerLocal.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/IServiceConversationClientManagerLocal.java index f3dd6b9986e..5ec099ea300 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/IServiceConversationClientManagerLocal.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/IServiceConversationClientManagerLocal.java @@ -19,6 +19,8 @@ package ch.systemsx.cisd.openbis.dss.generic.server; import ch.systemsx.cisd.openbis.generic.shared.IETLLIMSService; /** + * A local interface of the service conversation client manager used by DSS. + * * @author pkupczyk */ public interface IServiceConversationClientManagerLocal diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/IServiceConversationServerManagerLocal.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/IServiceConversationServerManagerLocal.java index 5d8a91b6180..00d00717f13 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/IServiceConversationServerManagerLocal.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/IServiceConversationServerManagerLocal.java @@ -17,6 +17,8 @@ package ch.systemsx.cisd.openbis.dss.generic.server; /** + * A local interface of the service conversation server manager used by DSS. + * * @author pkupczyk */ public interface IServiceConversationServerManagerLocal diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ServiceConversationClientManager.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ServiceConversationClientManager.java index bbc9ae20aa0..c2d8b6fa915 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ServiceConversationClientManager.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ServiceConversationClientManager.java @@ -23,6 +23,8 @@ import ch.systemsx.cisd.openbis.generic.shared.conversation.ServiceConversationA import ch.systemsx.cisd.openbis.generic.shared.conversation.ServiceConversationDataStoreClientId; /** + * The service conversation client manager used by DSS. + * * @author pkupczyk */ public class ServiceConversationClientManager extends BaseServiceConversationClientManager diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ServiceConversationServerManager.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ServiceConversationServerManager.java index e2a0389b6ae..95b9e407d5a 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ServiceConversationServerManager.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ServiceConversationServerManager.java @@ -26,6 +26,8 @@ import ch.systemsx.cisd.openbis.generic.shared.conversation.ServiceConversationA import ch.systemsx.cisd.openbis.generic.shared.conversation.ServiceConversationApplicationServerUrl; /** + * The service conversation server manager used by DSS. + * * @author pkupczyk */ public class ServiceConversationServerManager extends BaseServiceConversationServerManager diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/annotation/Conversational.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/annotation/Conversational.java index 5827130c464..87a8c07e2c0 100644 --- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/annotation/Conversational.java +++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/annotation/Conversational.java @@ -22,6 +22,10 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** + * All methods that support service conversations communication should be marked with this + * annotation. If a method without this annotation is called via service conversations then + * {@link java.lang.NoSuchMethodException NoSuchMethodException} is thrown. + * * @author pkupczyk */ @@ -31,6 +35,9 @@ import java.lang.annotation.Target; public @interface Conversational { + /** + * Type of the progress reporting that should be used for the annotated method. + */ Progress progress(); } diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/annotation/Progress.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/annotation/Progress.java index d6ac5358ad7..d1b4f77fb4f 100644 --- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/annotation/Progress.java +++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/annotation/Progress.java @@ -17,11 +17,31 @@ package ch.systemsx.cisd.common.conversation.annotation; /** + * Type of the progress reporting that is used for service conversation methods. + * * @author pkupczyk */ public enum Progress { - MANUAL, AUTOMATIC + /** + * Progress has to be reported by calling + * {@link ch.systemsx.cisd.common.conversation.progress.IServiceConversationProgressListener#update + * IServiceConversationProgressListener.update} method. This option should be used when we know + * how much progress has been made, e.g. we processed 12 out of 100 data sets. If the method + * execution hangs the progress won't be reported and the conversation will time out. + */ + MANUAL, + + /** + * A separate thread regularly sends progress information without a need of calling + * {@link ch.systemsx.cisd.common.conversation.progress.IServiceConversationProgressListener#update + * IServiceConversationProgressListener.update} method. This option is useful for methods where + * we don't have any information about the current progress (e.g. user defined Python script + * execution) but we still want to notify the client that the processing is in progress and the + * conversation should not time out. Be aware that the progress will be sent forever if the + * method execution hangs. + */ + AUTOMATIC } diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/client/ServiceConversationClientDetails.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/client/ServiceConversationClientDetails.java index 83cff101b6f..12331b83d96 100644 --- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/client/ServiceConversationClientDetails.java +++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/client/ServiceConversationClientDetails.java @@ -20,13 +20,21 @@ import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; /** + * Stores information about a service conversation client manager. + * * @author pkupczyk */ public class ServiceConversationClientDetails { + /** + * URL that should be used for communication with the client manager. + */ private String url; + /** + * Timeout to be used for communication with the client manager. + */ private int timeout; public ServiceConversationClientDetails(String url, int timeout) diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/client/ServiceConversationClientWithConversationTracking.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/client/ServiceConversationClientWithConversationTracking.java index 86a80821253..b594d524bee 100644 --- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/client/ServiceConversationClientWithConversationTracking.java +++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/client/ServiceConversationClientWithConversationTracking.java @@ -25,6 +25,11 @@ import ch.systemsx.cisd.common.serviceconversation.client.ServiceConversationCli import ch.systemsx.cisd.common.spring.HttpInvokerUtils; /** + * Service conversation client that keeps track of the started conversations and provides + * {@link #onConversationStart(IServiceConversation)} and + * {@link #onConversationClose(IServiceConversation)} methods that can be overwritten to perform + * some additional actions on these events. + * * @author pkupczyk */ public class ServiceConversationClientWithConversationTracking @@ -51,6 +56,9 @@ public class ServiceConversationClientWithConversationTracking return conversation; } + /** + * Method that is called whenever a new conversation is started. + */ public void onConversationStart(IServiceConversation conversation) { // does nothing by default @@ -67,6 +75,9 @@ public class ServiceConversationClientWithConversationTracking onConversationClose(conversation); } + /** + * Method that is called whenever a new conversation is closed. + */ public void onConversationClose(IServiceConversation conversation) { // does nothing by default diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/context/ServiceConversationsThreadContext.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/context/ServiceConversationsThreadContext.java index e8966dcd8af..a6d529d45b0 100644 --- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/context/ServiceConversationsThreadContext.java +++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/context/ServiceConversationsThreadContext.java @@ -20,12 +20,8 @@ import ch.systemsx.cisd.common.conversation.progress.IServiceConversationProgres import ch.systemsx.cisd.common.conversation.progress.ServiceConversationNullProgressListener; /** - * The class contains the logic for communication beetween Hibernate interceptors, which should send - * service conversation updates, and parts of applications that use service conversations, but don't - * have acces to the Hibernate objects. - * <p> - * It lets the owner of service conversation store the information about it in the thread local - * variable, from which the interceptor can later read it. + * This class provides methods for accessing information about the current service conversation. All + * the information is stored in thread local variables. * * @author Jakub Straszewski */ @@ -39,7 +35,7 @@ public class ServiceConversationsThreadContext } /** - * Store progress listener in a thread local context + * Sets the current service conversation progress listener. */ public static void setProgressListener(IServiceConversationProgressListener listener) { @@ -47,7 +43,7 @@ public class ServiceConversationsThreadContext } /** - * Remove information about progress listener from the thread local context. + * Removes the current service conversation progress listener. */ public static void unsetProgressListener() { @@ -55,7 +51,10 @@ public class ServiceConversationsThreadContext } /** - * Read the progress listener from the thread local context + * Get the current service conversation progress listener. If there is no service conversation + * available then a dummy progress listener is returned. The dummy listener is returned just for + * a convenience to eliminate all the not null checks. Calling methods on the dummy listener + * doesn't have any effect. */ public static IServiceConversationProgressListener getProgressListener() { diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/BaseServiceConversationClientManager.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/BaseServiceConversationClientManager.java index 603f13fb084..6806fa0a190 100644 --- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/BaseServiceConversationClientManager.java +++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/BaseServiceConversationClientManager.java @@ -27,6 +27,14 @@ import ch.systemsx.cisd.common.serviceconversation.ServiceMessage; import ch.systemsx.cisd.common.serviceconversation.client.IServiceConversation; /** + * Service conversation client manager that dispatches calls to remote service conversation servers + * managers. One instance of client manager can handle communication with multiple server managers + * located on different machines. To make a conversational call to a remote service you must first + * obtain a reference to a service that supports service conversation communication using + * {@link #getService(String, Class, String, Object, int)} method. All the method calls on that + * service will be automatically translated into appropriate service conversation messages behind + * the scenes. + * * @author pkupczyk */ public class BaseServiceConversationClientManager implements @@ -56,6 +64,20 @@ public class BaseServiceConversationClientManager implements { } + /** + * Method that returns a reference to a service that supports service conversation + * communication. + * + * @param serverUrl The URL of the service conversation server manager where the given service + * has been registered. + * @param serviceInterface The interface of the service to be returned. + * @param sessionToken The session token that will be used to uniquely identify the + * conversations. + * @param clientId The id of the client manager that has to be recognized by the server. Basing + * on this id the server will decide where to send the responses to and what timeout + * to use. + * @param clientTimeout The timeout of the client manager. + */ public <T> T getService(String serverUrl, Class<T> serviceInterface, String sessionToken, Object clientId, int clientTimeout) { diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/BaseServiceConversationServerManager.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/BaseServiceConversationServerManager.java index 324029db26a..e288398532d 100644 --- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/BaseServiceConversationServerManager.java +++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/BaseServiceConversationServerManager.java @@ -27,6 +27,15 @@ import ch.systemsx.cisd.common.serviceconversation.server.ServiceConversationSer import ch.systemsx.cisd.common.spring.HttpInvokerUtils; /** + * Service conversation server manager that dispatches calls coming from remote service conversation + * client managers to appropriate local services. One instance of server manager can handle + * communication with multiple client managers located on different machines. To expose a local + * service for remote conversational calls you must add the service to the manager using + * {@link #addService(Class, Object)} method. Moreover the + * {@link #getClientDetailsForClientId(Object)} method must be implemented to return information + * which clients are recognized, what URLs should be used for communicating them back and what + * timeouts should be used for their conversations. + * * @author pkupczyk */ public abstract class BaseServiceConversationServerManager implements @@ -46,6 +55,10 @@ public abstract class BaseServiceConversationServerManager implements server = new ServiceConversationServer(); } + /** + * Method that can be used for registering local services that should be exposed for remote + * service conversation calls. + */ protected void addService(Class<?> serviceInterface, Object service) { ServiceConversationServiceFactory serviceFactory = @@ -124,6 +137,10 @@ public abstract class BaseServiceConversationServerManager implements return clientDetailsToClientMap.size(); } + /** + * Returns detailed information about a client basing on a client id. If it returns null then + * the client is treated as unknown. + */ protected abstract ServiceConversationClientDetails getClientDetailsForClientId(Object clientId); private synchronized IServiceConversationClientManagerRemote getClientForClientDetails( diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/IServiceConversationClientManagerRemote.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/IServiceConversationClientManagerRemote.java index 8ba47f6aeac..394a8f3c706 100644 --- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/IServiceConversationClientManagerRemote.java +++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/IServiceConversationClientManagerRemote.java @@ -19,7 +19,7 @@ package ch.systemsx.cisd.common.conversation.manager; import ch.systemsx.cisd.common.serviceconversation.IServiceMessageTransport; /** - * All clients of conversational RMI services must implement this interface + * A remote interface for service conversation client manager. * * @author anttil */ diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/ServiceConversationServiceFactory.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/ServiceConversationServiceFactory.java index b7e8ea1ea27..563e8afc274 100644 --- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/ServiceConversationServiceFactory.java +++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/ServiceConversationServiceFactory.java @@ -25,7 +25,7 @@ import ch.systemsx.cisd.common.serviceconversation.server.IServiceFactory; import ch.systemsx.cisd.common.serviceconversation.server.ServiceConversationServer; /** - * A factory for RMI services. Runs incoming MethodInvocations within transactions. + * A factory for service conversation services. Runs incoming MethodInvocations. * * @author anttil */ diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/ServiceConversationServiceProxy.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/ServiceConversationServiceProxy.java index 6e1a30ab296..fedff7256bd 100644 --- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/ServiceConversationServiceProxy.java +++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/manager/ServiceConversationServiceProxy.java @@ -26,8 +26,8 @@ import ch.systemsx.cisd.common.conversation.message.ServiceConversationMethodInv import ch.systemsx.cisd.common.serviceconversation.client.IServiceConversation; /** - * Dynamic proxy that passes RPC calls to a ConversationalServer through service conversation - * framework. + * Dynamic proxy that converts a given service method calls into appropriate service conversation + * messages. * * @author anttil */ diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/message/ServiceConversationMethodInvocation.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/message/ServiceConversationMethodInvocation.java index 47a293bb4d9..025926e15a0 100644 --- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/message/ServiceConversationMethodInvocation.java +++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/message/ServiceConversationMethodInvocation.java @@ -32,9 +32,9 @@ import ch.systemsx.cisd.common.conversation.progress.ServiceConversationRateLimi import ch.systemsx.cisd.common.serviceconversation.server.ServiceConversationServer; /** - * MethodInvocation represents a remote method invocation. It contains the name and the arguments of - * a method to be executed on a remote server. It is Serializable to be transferable through the - * service conversation framework. + * MethodInvocation represents a remote method invocation. It contains the name, the parameter types + * and the arguments of a method to be executed on a remote server. It is Serializable to be + * transferable through the service conversation framework. * * @author anttil */ @@ -51,15 +51,17 @@ public class ServiceConversationMethodInvocation implements Serializable } /** - * Executes the method on given target object. Adds a ProgressListener instance as a last - * argument of the call. + * Executes the method on given target object. Basing on the progress type of the target method + * (see {@link Conversational#progress()}) it creates and attaches to a current thread an + * instance of {@link IServiceConversationProgressListener}. The progress listener can be + * accessed within the target method via + * {@link ServiceConversationsThreadContext#getProgressListener()}. * * @param target The target object on which the method call will be executed * @param server ServiceConversationServer that will receive the progress reports * @param conversationId Id of the conversation - * @param clientTimeOut The remote client making this method call will abort if it has not - * received any messages from the server within the timeout (represented in - * milliseconds) + * @param progressInterval Interval that should be used for reporting a progress of the method + * execution (represented in milliseconds) * @returns The return value of the method call */ public Serializable executeOn(Object target, ServiceConversationServer server, diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/progress/ServiceConversationAutomaticProgressListener.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/progress/ServiceConversationAutomaticProgressListener.java index 8caf0ceead2..352789250ae 100644 --- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/progress/ServiceConversationAutomaticProgressListener.java +++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/progress/ServiceConversationAutomaticProgressListener.java @@ -26,6 +26,9 @@ import ch.systemsx.cisd.common.serviceconversation.server.ProgressInfo; import ch.systemsx.cisd.common.serviceconversation.server.ServiceConversationServer; /** + * Creates a separate thread that regularly sends a progress information without a need of calling + * IServiceConversationProgressListener.update() method. + * * @author pkupczyk */ public class ServiceConversationAutomaticProgressListener implements diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/progress/ServiceConversationNullProgressListener.java b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/progress/ServiceConversationNullProgressListener.java index 19aa98f85cf..0f1b72e2536 100644 --- a/openbis-common/source/java/ch/systemsx/cisd/common/conversation/progress/ServiceConversationNullProgressListener.java +++ b/openbis-common/source/java/ch/systemsx/cisd/common/conversation/progress/ServiceConversationNullProgressListener.java @@ -17,6 +17,8 @@ package ch.systemsx.cisd.common.conversation.progress; /** + * Dummy progress listener that doesn't do anything when its methods are called. + * * @author pkupczyk */ public class ServiceConversationNullProgressListener implements diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceConversationClientManager.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceConversationClientManager.java index 154632f24fd..6835b8ac928 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceConversationClientManager.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceConversationClientManager.java @@ -26,6 +26,8 @@ import ch.systemsx.cisd.openbis.generic.shared.conversation.ServiceConversationA import ch.systemsx.cisd.openbis.generic.shared.conversation.ServiceConversationDataStoreUrl; /** + * The service conversation client manager used by AS. + * * @author pkupczyk */ public class ServiceConversationClientManager extends BaseServiceConversationClientManager diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceConversationServerManager.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceConversationServerManager.java index a3e51731a48..24355316b18 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceConversationServerManager.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceConversationServerManager.java @@ -29,9 +29,10 @@ import ch.systemsx.cisd.openbis.generic.shared.conversation.ServiceConversationD import ch.systemsx.cisd.openbis.generic.shared.conversation.ServiceConversationDataStoreUrl; /** + * The service conversation server manager used by AS. + * * @author pkupczyk */ - public class ServiceConversationServerManager extends BaseServiceConversationServerManager implements IServiceConversationServerManagerLocal, InitializingBean { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/IServiceConversationClientManagerLocal.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/IServiceConversationClientManagerLocal.java index f1b59270171..50470a60ed9 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/IServiceConversationClientManagerLocal.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/IServiceConversationClientManagerLocal.java @@ -19,6 +19,8 @@ package ch.systemsx.cisd.openbis.generic.server.business; import ch.systemsx.cisd.openbis.generic.shared.IDataStoreService; /** + * A local interface of the service conversation client manager used by AS. + * * @author pkupczyk */ public interface IServiceConversationClientManagerLocal diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/IServiceConversationServerManagerLocal.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/IServiceConversationServerManagerLocal.java index 005e02773c2..b466623d709 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/IServiceConversationServerManagerLocal.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/IServiceConversationServerManagerLocal.java @@ -17,6 +17,8 @@ package ch.systemsx.cisd.openbis.generic.server.business; /** + * A local interface of the service conversation server manager used by AS. + * * @author pkupczyk */ public interface IServiceConversationServerManagerLocal -- GitLab