+

Search Tips   |   Advanced Search

Access third-party APIs from a Java EE application

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

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

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.

See Liberty profile externals support.

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

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

    In server.xml, 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, third-party" commonLibraryRef="Alexandria" />
    </application>

  2. Optional: If the application uses any common libraries, set those libraries to use the same API type visibility setting.

    In server.xml, or an included file, add the following code:

    <library id="Alexandria" apiTypeVisibility="spec, ibm-api, third-party">
      <fileset dir="${server.config.dir}/mylib/Alexandria" includes="*.jar" scanInterval="5s" />
    </library>


Parent topic: Configure class loaders and libraries for Java EE applications

Tasks:

  • Use a Java library with a Java EE application
  • Share a library across multiple Java EE applications
  • Provide global libraries for all Java EE applications
  • Remove access to third-party APIs for a Java EE application
  • Overriding a provided API with an alternative version