Configure the CData JDBC Driver for Spotify in a Connection Pool in Tomcat

Jerod Johnson
Jerod Johnson
Director, Technology Evangelism
Connect to Spotify data from a connection pool in Tomcat.

The CData JDBC Drivers support standard JDBC interfaces to integrate with Web applications running on the JVM. This article details how to connect to Spotify data from a connection pool in Tomcat.

Connect to Spotify Data through a Connection Pool in Tomcat

  1. Copy the CData JAR and CData .lic file to $CATALINA_HOME/lib. The CData JAR is located in the lib subfolder of the installation directory.
  2. Add a definition of the resource to the context. Specify the JDBC URL here.

    Using OAuth Authentication

    Spotify uses OAuth 2.0 for authentication. You will need to create an application in the Spotify Developer Dashboard to obtain your client credentials.

    Setting Up Your Spotify Application

    1. Visit the Spotify Developer Dashboard.
    2. Log in with your Spotify account and click Create app.
    3. Provide an app name, description, and set a Redirect URI (e.g.,
      http://localhost:33333
      for desktop applications).
    4. Copy your Client ID and Client Secret from the app settings.

    Connection Properties

    After setting the following connection properties, you are ready to connect:

    • AuthScheme: Set this to OAuth.
    • InitiateOAuth: Set this to GETANDREFRESH. You can use InitiateOAuth to manage the process to obtain the OAuthAccessToken.
    • OAuthClientId: Set this to your Spotify application's Client ID.
    • OAuthClientSecret: Set this to your Spotify application's Client Secret.
    • Scope: Set this to the required OAuth scopes (space-separated). The default includes all read scopes needed for the tables in this profile.
    • CallbackURL: Set this to the Redirect URI configured in your Spotify application (e.g., http://localhost:33333).

    Example Connection String

    Profile=C:\profiles\Spotify.apip;AuthScheme=OAuth;InitiateOAuth=GETANDREFRESH;OAuthClientId=your_client_id;OAuthClientSecret=your_client_secret;CallbackURL=http://localhost:33333;
    

    Available OAuth Scopes

    • user-read-private: Read access to user's subscription details and explicit content settings.
    • user-read-email: Read access to user's email address.
    • user-library-read: Read access to a user's saved tracks, albums, episodes, shows, and audiobooks.
    • playlist-read-private: Read access to user's private playlists.
    • playlist-read-collaborative: Read access to collaborative playlists the user follows.
    • user-follow-read: Read access to the list of artists the current user follows.
    • user-read-playback-state: Read access to a user's player state (device, current track, progress).
    • user-read-currently-playing: Read access to a user's currently playing content.
    • user-read-playback-history: Read access to a user's recently played tracks.
    • user-top-read: Read access to a user's top artists and tracks.

    Built-in Connection String Designer

    For assistance in constructing the JDBC URL, use the connection string designer built into the Spotify JDBC Driver. Either double-click the JAR file or execute the jar file from the command-line.

    java -jar cdata.jdbc.api.jar
    

    Fill in the connection properties and copy the connection string to the clipboard.

    You can see the JDBC URL specified in the resource definition below.

    
    <Resource name="jdbc/api"   auth="Container" type="javax.sql.DataSource" driverClassName="cdata.jdbc.api.APIDriver" factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" url="jdbc:api:Profile=C:\profiles\Spotify.apip;AuthScheme=OAuth;InitiateOAuth=GETANDREFRESH;OAuthClientId=your_client_id;OAuthClientSecret=your_client_secret;CallbackURL=http://localhost:33333;" maxActive="20" maxIdle="10" maxWait="-1" />
    

    To allow a single application to access Spotify data, add the code above to the context.xml in the application's META-INF directory.

    For a shared resource configuration, add the code above to the context.xml located in $CATALINA_BASE/conf. A shared resource configuration provides connectivity to Spotify for all applications.

  3. Add a reference to the resource to the web.xml for the application.
    
      Spotify data JSP
      jdbc/API
      javax.sql.DataSource
      Container
    
    
  4. Initialize connections from the connection pool:
    Context initContext = new InitialContext();
    Context envContext  = (Context)initContext.lookup("java:/comp/env");
    DataSource ds = (DataSource)envContext.lookup("jdbc/API");
    Connection conn = ds.getConnection();
      

More Tomcat Integration

The steps above show how to connect to Spotify data in a simple connection pooling scenario. For more use cases and information, see the JNDI Datasource How-To in the Tomcat documentation.

Ready to get started?

Connect to live data from Spotify with the API Driver

Connect to Spotify