VOOZH about

URL: https://www.cdata.com/kb/tech/servicenow-jdbc-spring-boot.rst

⇱ How to connect to ServiceNow Data from Spring Boot


How to connect to ServiceNow Data from Spring Boot

πŸ‘ Jerod Johnson
Jerod Johnson
Director, Technology Evangelism
Connect to ServiceNow in a Spring Boot Application using CData JDBC ServiceNow Driver

Spring Boot is a framework that makes engineering Java web applications easier. It offers the ability to create standalone applications with minimal configuration. When paired with the CData JDBC driver for ServiceNow, Spring Boot can work with live ServiceNow data. This article shows how to configure data sources and retrieve data in your Java Spring Boot Application, using the CData JDBC Driver for ServiceNow.

With built-in optimized data processing, the CData JDBC Driver offers unmatched performance for interacting with live ServiceNow data. When you issue complex SQL queries to ServiceNow, the driver pushes supported SQL operations, like filters and aggregations, directly to ServiceNow and utilizes the embedded SQL engine to process unsupported operations client-side (often SQL functions and JOIN operations). Its built-in dynamic metadata querying allows you to work with and analyze ServiceNow data using native data types.

About ServiceNow Data Integration

CData simplifies access and integration of live ServiceNow data. Our customers leverage CData connectivity to:

  • Get optimized performance since CData uses the REST API for data and the SOAP API for schema.
  • Read, write, update, and delete ServiceNow objects like Schedules, Timelines, Questions, Syslogs and more.
  • Use SQL stored procedures for actions like adding items to a cart, submitting orders, and downloading attachments.
  • Securely authenticate with ServiceNow, including basic (username and password), OKTA, ADFS, OneLogin, and PingFederate authentication schemes.

Many users access live ServiceNow data from preferred analytics tools like Tableau, Power BI, and Excel, and use CData solutions to integrate ServiceNow data with their database or data warehouse.


Getting Started


Creating the Spring Boot Project in Java

In an IDE (in this tutorial, we use IntelliJ), choose a Maven project: πŸ‘ Create a new Maven project
In the generated project, go to the pom.xml file, and add the required dependencies for Spring Boot:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.2</version>
<relativePath/>
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
	<plugin>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-maven-plugin</artifactId>
	</plugin>

	<plugin>
		<groupId>org.apache.maven.plugins</groupId>
		<artifactId>maven-install-plugin</artifactId>
		<version>2.5.1</version>
		<executions>
			<execution>
				<id>id.install-file</id>
				<phase>clean</phase>
				<goals>
					<goal>install-file</goal>
				</goals>
				<configuration>
					<file>C:\Program Files\CData[product_name] ####\lib\cdata.jdbc.servicenow.jar</file>
					<groupId>org.cdata.connectors</groupId>
					<artifactId>cdata-servicenow-connector</artifactId>
					<version>23</version>
					<packaging>jar</packaging>
				</configuration>
			</execution>
		</executions>
	</plugin>
</plugins>
</build>

<dependencies>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-jdbc</artifactId>
	<version>2.7.0</version>
</dependency>
<dependency>
	<groupId>org.cdata.connectors</groupId>
	<artifactId>cdata-servicenow-connector</artifactId>
	<version>23</version>
</dependency>

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-test</artifactId>
	<scope>test</scope>
</dependency>
</dependencies>



<distributionManagement>
<repository>
	<uniqueVersion>false</uniqueVersion>
	<id>test</id>
	<name>My Repository</name>
	<url>scp://repo/maven2</url>
	<layout>default</layout>
</repository>
</distributionManagement>

</project>

Note: The year (####) and the version number (as seen in the provided XML script) should be adjusted according to the current version of the CData JDBC driver being utilized.

Project Structure

In the java directory, create a new package. Usually the name of the package is the name of the groupId (com.example) followed by the artifactId (.MDS). πŸ‘ Create a new Package in java folder
πŸ‘ Enter the name of the Package

Mark the "java" directory as the "Sources Root" (denoted by a blue color). To do this, right-click the java directory and choose Mark Directory as -> Sources Root (As shown below). Additionally, mark the "resources" directory as the "Resources Root." πŸ‘ Mark Directory as Sources Root

Store Database Connection Properties

Create an "application.properties" file to store the database connection properties. To do this, right-click on the "resources" folder, opt for New -> File, input the file name as "application.properties," and press Enter. πŸ‘ Create a new (configuration) file
πŸ‘ Name the file as application.properties

In the application.properties file, we set the configuration properties for the ServiceNow JDBC Driver, using the Class name and JDBC URL:

	spring.datasource.driver=cdata.jdbc.servicenow.ServiceNowDriver
	spring.datasource.url=jdbc:servicenow:OAuthClientId=MyOAuthClientId;OAuthClientSecret=MyOAuthClientSecret;Username=MyUsername;Password=MyPassword;URL=https://myinstance12345.service-now-com;InitiateOAuth=GETANDREFRESH;

Built-in Connection String Designer

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

java -jar cdata.jdbc.servicenow.jar

ServiceNow uses the OAuth 2.0 authentication standard. To authenticate using OAuth, register an OAuth app with ServiceNow to obtain the OAuthClientId and OAuthClientSecret connection properties. In addition to the OAuth values, specify the Instance, Username, and Password connection properties.

See the "Getting Started" chapter in the help documentation for a guide on connecting to ServiceNow.

πŸ‘ Using the built-in connection string designer to generate a JDBC URL (Salesforce is shown.)

After setting the properties in the application.properties file, we now configure them.

Data Source Configuration

First, we mark the ServiceNow data source as our primary data source. Then, we create a Data Source Bean.

Create a DriverManagerDataSource.java file and create a Bean within it, as shown below. If @Bean gives an error, Spring Boot may not have loaded properly. To fix this, go to File -> Invalidate Caches and restart. Additionally, make sure that Maven has added the Spring Boot dependencies.

To create a data source bean, we use the DriverManagerDataSource Class. This class allows us to set the properties of the data source. To create this Java class, right-click on "com.example.MDS" package, and choose New -> Java Class. πŸ‘ Create a new Java class

The following code shows the bean definition of our data source. Each driver should have a bean.

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Primary;
import org.springframework.core.env.Environment;
import javax.sql.DataSource;

public class DriverManagerDataSource{
	@Autowired
	private static Environment env;

	@Bean(name ="ServiceNow")
	@Primary
	public static DataSource ServiceNowDataSource()
	{

	DataSourceBuilder<?> dataSourceBuilder = DataSourceBuilder.create();
		dataSourceBuilder.driverClassName("cdata.jdbc.servicenow.ServiceNowDriver");
		dataSourceBuilder.url("jdbc:servicenow:OAuthClientId=MyOAuthClientId;OAuthClientSecret=MyOAuthClientSecret;Username=MyUsername;Password=MyPassword;URL=https://myinstance12345.service-now-com;InitiateOAuth=GETANDREFRESH;");
		return dataSourceBuilder.build();
	}
	
	//@Override
	public void setEnvironment( final Environment environment) {
	env=environment;
	}
}

Next, move the ServiceNow jar file to the Documents folder (see path in command below) - The idea is to have a path without any spaces for the jar file. Then, click the Maven icon (top right corner of IntelliJ) and click "Execute Maven Goal." Now, run the following command: πŸ‘ Execute Maven Goal
πŸ‘ Run Maven install command

mvn install:install-file "-Dfile=C:\Program Files\CData[product_name] ####\lib\cdata.jdbc.servicenow.jar" -DgroupId=org.cdata.connectors -DartifactId=cdata-servicenow-connector -Dversion=23 -Dpackaging=jar

Follow either of the given steps to run this command:

  1. The "-Dfile location" can be kept as the default installation path of the CData JDBC Driver. Make sure to keep the path in quotations in this case. Also, change the year and "Dversion" based on the current version of the driver being used.
  2. As mentioned earlier in the article, in case you relocate the

After pressing enter, we see the following output: πŸ‘ Successful installation of the JDBC driver

Testing the Connection

The last step is testing the connection. Create a new Java class following the format

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import java.sql.Connection;
import java.sql.SQLException;
import static com.example.demo.DriverManagerDataSources.ServiceNowDataSource;


@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
	public class MDSApplication {
		//remove the comment on the line below
		public static void main (){
		SpringApplication.run(DemoApplication.class, args);
		Connection conn = ServiceNowDataSource().getConnection();
		System.out.println("Catalog: "+ conn.getCatalog());
	}
}

The output generated should look like this: πŸ‘ Successful test connection

Free Trial & More Information

Download a free, 30-day trial of the CData JDBC Driver for ServiceNow and start working with your live ServiceNow in Spring Boot.

Ready to get started?

Download a free trial of the ServiceNow Driver to get started:

 Download Now

Learn more:

πŸ‘ ServiceNow Icon
ServiceNow JDBC Driver

Rapidly create and deploy powerful Java applications that integrate with ServiceNow data includingSchedules, Timelines, Questions, Syslogs, and more!