Accessing third-party APIs from a Java EE application

By default, Java™ EE applications do not have access to the third-party APIs available in Liberty. To enable this access, the application must be configured in the server.xml file, or an included file.

Open Liberty The latest documentation about class loader configuration for Liberty is available on the Open Liberty website.

About this task

In the following example, an application that is called Scholar needs access to the third-party APIs that are available in Liberty.

The application also uses a common library called Alexandria. This library is located in the ${server.config.dir}/mylib/Alexandria directory.

Avoid trouble: Third-party APIs might not remain compatible after an upgrade. For more information, see Liberty externals support.

Procedure

  1. Configure class loading for the application so that the application can access the third-party APIs.

    The default value for the apiTypeVisibility attribute of the classloader element is spec, ibm-api, api, stable. Where spec represents public specification APIs available for both compile and run time, ibm-api represents APIs available in Liberty. The value api represents public APIs available for both compile and run time, and stable represents stable third party specification APIs available by default for both compile and run time. Including third-party in the apiTypeVisibility attribute of the classloader element makes third-party APIs available.

    In the server.xml file, or an included file, configure the API type visibility by adding the following code:
    <application id="scholar" name="Scholar" type="ear" location="scholar.ear">
      <classloader apiTypeVisibility="spec, ibm-api, stable, third-party" commonLibraryRef="Alexandria" />
    </application>

    If a prefix of + or - is added to API types, those API types are added or removed, respectively, from the default set of API types. The +third-party prefix results in spec, ibm-api, api, stable, third-party. The -api prefix results in spec, ibm-api, stable.

    In the server.xml file, or an included file, configure the API type visibility by adding the following code:
    <application id="scholar" name="Scholar" type="ear" location="scholar.ear">
      <classloader apiTypeVisibility="+third-party, -api" commonLibraryRef="Alexandria" /> 
    </application>
  2. If the application uses any common libraries, set those libraries to use the same API type visibility setting.
    In the server.xml file, or an included file, add the following code:
    <library id="Alexandria" apiTypeVisibility="spec, ibm-api, stable, third-party">
      <fileset dir="${server.config.dir}/mylib/Alexandria" includes="*.jar" scanInterval="5s" />
    </library>