Class UserCodeDeploymentConfig

java.lang.Object
com.hazelcast.config.UserCodeDeploymentConfig

public class UserCodeDeploymentConfig
extends Object
Configuration of User Code Deployment. When enabled, it allows Hazelcast members to load classes from other cluster members. This simplifies deployment as you do not have to deploy your domain classes into the classpath of all cluster members.
  • Constructor Details

  • Method Details

    • setEnabled

      public UserCodeDeploymentConfig setEnabled​(boolean enabled)
      Enable or disable User Code Deployment. Default: false
    • isEnabled

      public boolean isEnabled()
      Returns true if User Code Deployment is enabled
      Returns:
      true when User Code Deployment is enabled
    • setProviderFilter

      public UserCodeDeploymentConfig setProviderFilter​(String providerFilter)
      Filter to limit members that can be used for classloading request when a user class is not available locally.

      Filter format: HAS_ATTRIBUTE:foo this will send classloading requests only to members which have a member attribute foo set. Attribute value is ignored, it can be of any type, a presence of the attribute is sufficient.

      This facility allows to have a fine grained control over classloading. You can e.g. start Hazelcast lite members dedicated for class-serving.

      Example usage: This member will load classes only from members with the class-provider attribute set. It won't ask any other member to provide a locally unavailable class:

           Config hazelcastConfig = new Config();
      
           UserCodeDeploymentConfig userCodeDeploymentConfig = hazelcastConfig.getUserCodeDeploymentConfig();
           userCodeDeploymentConfig.setProviderFilter("HAS_ATTRIBUTE:class-provider");
      
           HazelcastInstance instance = Hazelcast.newHazelcastInstance(hazelcastConfig);
       
      In the following example, the started member will be marked with the class-provider attribute - the member configured above may use it to provide a class which is not locally available:
       Config hazelcastConfig = new Config();
      
       MemberAttributeConfig memberAttributes = hazelcastConfig.getMemberAttributeConfig();
       memberAttributes.setAttribute("class-provider", "true");
      
       HazelcastInstance instance = Hazelcast.newHazelcastInstance(hazelcastConfig);
       
      Setting the filter to null allows using any member to load classes.

      Default: null

      Returns:
      this instance of UserCodeDeploymentConfig for easy method-chaining
      See Also:
      Member.getAttribute(String)
    • getProviderFilter

      public String getProviderFilter()
      Get current filter or null when no filter is defined.
      Returns:
      current filter or null when no filter is defined
      See Also:
      setProviderFilter(String)
    • setBlacklistedPrefixes

      public UserCodeDeploymentConfig setBlacklistedPrefixes​(String blacklistedPrefixes)
      Comma-separated list of class prefixes which will never be loaded remotely. A prefix can be a package name or a class name.

      For example, setting a blacklist prefix to com.foo will disable remote loading of all classes from the com.foo package and its sub-packages. Eg. com.foo.bar.MyClass will be black-listed too.

      The prefix is compared to the class name string. For example, when you set the blacklist to com.foo.Class, the class com.foo.ClassSuffix will be blacklisted too.

      Setting the prefixes to null or to empty string will disable the blacklist.

      Default: null

      Returns:
      this instance of UserCodeDeploymentConfig for easy method-chaining
    • getBlacklistedPrefixes

      public String getBlacklistedPrefixes()
      Return currently configured blacklist prefixes.
      Returns:
      currently configured blacklist prefixes
      See Also:
      setBlacklistedPrefixes(String)
    • setWhitelistedPrefixes

      public UserCodeDeploymentConfig setWhitelistedPrefixes​(String whitelistedPrefixes)
      Comma-separated list of class prefixes which will be loaded remotely.

      Use this to limit User Code Deployment to selected classes only and disable remote loading for all other classes.

      The prefixes are interpreted using the same rules as described in setBlacklistedPrefixes(String).

      Setting the prefixes to null or empty string will disable the white-list and all non-blacklisted classes will be allowed to load from remote members.

      Returns:
      this instance of UserCodeDeploymentConfig for easy method-chaining
    • getWhitelistedPrefixes

      public String getWhitelistedPrefixes()
      Return currently configured whitelist prefixes
      Returns:
      currently configured whitelist prefixes
    • setProviderMode

      public UserCodeDeploymentConfig setProviderMode​(UserCodeDeploymentConfig.ProviderMode providerMode)
      Configure behaviour when providing classes to remote members.

      Default: UserCodeDeploymentConfig.ProviderMode.LOCAL_AND_CACHED_CLASSES

      Returns:
      this instance of UserCodeDeploymentConfig for easy method-chaining
      See Also:
      UserCodeDeploymentConfig.ProviderMode
    • getProviderMode

      public UserCodeDeploymentConfig.ProviderMode getProviderMode()
      Return the current ProviderMode
      Returns:
      current ProviderMode
    • setClassCacheMode

      public UserCodeDeploymentConfig setClassCacheMode​(UserCodeDeploymentConfig.ClassCacheMode classCacheMode)
      Configure caching of classes loaded from remote members.

      Default: UserCodeDeploymentConfig.ClassCacheMode.ETERNAL

      Returns:
      this instance of UserCodeDeploymentConfig for easy method-chaining
      See Also:
      UserCodeDeploymentConfig.ClassCacheMode
    • getClassCacheMode

      public UserCodeDeploymentConfig.ClassCacheMode getClassCacheMode()
      Return the current ClassCacheMode
      Returns:
      current ProviderMode