Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

Navigation
Guide That Contains This Content
[+] Expand All
[-] Collapse All

    Developing a Java Application to Communicate with a NIC Proxy

    Configuration tasks that use the API calls to communicate with the NIC proxy are:

    Instantiating a Configuration Manager

    The application must instantiate a configuration manager.

    To enable the application to instantiate a configuration manager to obtain a NIC instance from the NIC factory:

    • Call one of the following methods:
      • For some applications (other than Web applications), in which you must define the system property -DConfig.bootstrapFilename, you can call the following method:
        ConfigMgr configMgr = ConfigMgrFactory.getConfigMgr();
      • For Web applications, you can instantiate the configuration manager as follows:
        ConfigMgr configMgr = ConfigMgrFactory.getConfigMgr(properties);
        • properties—java.util.Properties object, typically the bootstrap file, which contains all the configuration properties for the NIC proxy.

    Passing a Reference to the Configuration Manager to the NIC Factory

    To pass a reference to the configuration manager to the NIC factory class:

    • Call the following method in the application:
      NicFactory.setConfigManager(configMgr);

    Instantiating the NIC Factory Class

    The way you instantiate the NIC factory depends on the object request broker (ORB) configuration:

    • If the NIC proxy uses the default ORB, call the following method in the application:
      NicFactory nicFactory = NicFactory.getInstance();

      This code instantiates a new NIC factory. Unless the NicFactory.destroy method has been called, subsequent calls to this method will return the instantiated NIC factory.

    • If the NIC proxy does not use the default ORB, call the following method:
      NicFactory.initialize(props); NicFactory nicFactory = NicFactory.getInstance();
      • props—java.util.Properties object, which contains the ORB properties for the NIC proxy. For example, if the NIC proxy uses JacORB but JacORB is not the default ORB, the ORB properties are:
        org.omg.CORBA.ORBClass=org.jacorb.orb.ORBorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton

      This code will instantiate a new NIC factory using the specified ORB. Unless the application has called the NicFactory.destroy method, subsequent calls to the getInstance() method will return the instantiated NIC factory. However, if the application has called the destroy() method, it must recall the initialize() method before it can call the getInstance() method.

      For information about the NicFactory.destroy method, see Removing the NIC Proxies.

    Initializing Logging

    You must initialize logging only if you want to view the logging information produced by the NIC proxy.

    To enable the application to initialize logging:

    • Call the following method:
      Log.init(configMgr, configNameSpace);
      • configMgr—Instance of the configuration manager, the value returned from the getConfigMgr() method
      • configNameSpace—String that specifies the configuration namespace where you defined the logging properties
        • If you define the logging properties in the bootstrap file, specify the root namespace, “/”.
          Log.init(configMgr, "/");
        • If you define the logging properties in the directory, specify the namespace relative to the property Config.net.juniper.smgt.lib.config.staticConfigDN, which you configure in the bootstrap file.
          Log.init(configMgr, "/Applications/Quota");

    Instantiating the NIC Proxy

    To enable the application to instantiate a NIC proxy:

    • Call the following method:
      NIC nicProxy = nicFactory.getNicComponent(nicNameSpace, configMgr)

      Alternatively, if the expected data value (specified for the property nic.value in the NIC proxy configuration) is an SAE reference, you can call the following method:

      SaeLocator nicProxy = nicFactory.getSaeLocator(nicNameSpace, configMgr);
      • nicFactory—Instance of the NIC factory
      • nicNameSpace—String that specifies the configuration namespace where you defined the properties for the NIC proxy
        • If you define the NIC properties in the bootstrap file, specify the root namespace, “/”.
          NIC nicProxy = nicFactory.getNicComponent("/", configMgr)
        • If you define the properties in the directory, specify the namespace relative to the property Config.net.juniper.smgt.lib.config.staticConfigDN, which you specified in the bootstrap file.
          NIC nicProxy = nicFactory.getNicComponent("/Applications/Quota", configMgr)
      • configMgr—Instance of the configuration manager, the value returned from the getConfigMgr() method

    Managing a Resolution Request

    To enable the application to submit a resolution request and obtain the associated values:

    1. Construct a NicKey object to enable the application to pass the data key to the NIC proxy:
      NicKey nicKey = new NicKey(stringKey);
      • stringKey—Data key for which you want to find corresponding values.

      For the syntax of allowed data types, see NIC Resolution Process Overview.

    2. If the resolution process specifies constraints that you wish to provide in the resolution request, add them to the NicKey object:
      NicKey.addConstraint(constName, constValue);
      • constName—Name of the constraint.

      For the allowed data types and their syntax, see NIC Resolution Process Overview.

      • constValue—Specific value of the constraint.

      For the allowed syntax for the data types, see NIC Resolution Process Overview.

    3. Call a method that starts the resolution process.

      For example, you can call a method specified in the NIC interface:

      NicValue val = nicProxy.lookupSingle(nicKey);

      Alternatively, if the expected data value is an SAE reference, you can call the following method:

      SaeId saeId = nicProxy.lookupSae(nicKey);
    4. Call the getValue method to access the string representation of the data value obtained by the NIC proxy.
      String val=val.getValue();

      Alternatively, if the expected data value is an SAE reference:

      String val=saeId.getValue();
    5. (Optional) Call a method to get intermediate values obtained during a resolution.
      • Call the getIntermediateValue method if the application expects only one value. This method takes the name of a data type and returns as a string the first value it finds.
        String getIntermediateValue(String dataTypeName){};}

        For information about data types, see NIC Resolution Process Overview.

      • Call the getIntermediateValues or getAllIntermediateValues method if the application expects multiple values. These methods take the name of a data type and return values as follows:
        • The getIntermediateValues method returns a list of values as a string array.
          String[] getIntermediateValues(String dataTypeName){};
        • For information about data types, see NIC Resolution Process Overview
          • The getAllIntermediateValues method returns a map of all intermediate values for the request. The key for the map is the name of the network data type, and the value of the map is a string array of the intermediate values.
            Map getAllIntermediateValues();

    Deleting Invalid Results from the NIC Proxy’s Cache

    If the application receives an exception when using values that the NIC proxy returned for a specific key, it must inform the NIC proxy to delete this entry from its cache.

    To enable the application to inform the NIC proxy to delete an entry from its cache:

    • Call the following method:
      nicProxy.invalidateLookup(nicKey, nicValue);
      • nicKey—Data key that you want to remove from the cache
      • nicValue—Optional data value that corresponds to this key

      If the application passes a null data value to the NIC proxy, the NIC proxy removes all the values associated with the data key from its cache.

    Removing the NIC Proxies

    Make sure that before your application shuts down, it removes the NIC proxy instances to release resources for other software processes.

    To remove one NIC proxy instance:

    • Call the following method:
      NicProxy.destroy();

      To remove all NIC proxy instances, call the following method:

      NicFactory.destroy();

    Published: 2014-06-19