Skip to content
Snippets Groups Projects
Commit 6d8777e1 authored by Goik Martin's avatar Goik Martin
Browse files

Dynamic JDBC driver loading demo

parent c3fc8e95
No related merge requests found
File added
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>de.hdm_stuttgart.de</groupId>
<artifactId>jdbcdyndriver</artifactId>
<version>0.9</version>
<packaging>jar</packaging>
<name>jdbcdyndriver</name>
<url>https://freedocs.mi.hdm-stuttgart.de/sd1_sect_mavenCli.html</url>
<description>Basic Java project providing Junit 4 testing and log4j2 logging.</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.19.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<!-- Starting from 3.3.1 generated filenames no longer show up on terminal output -->
<version>3.3.0</version>
<configuration>
<linksource>true</linksource>
<detectJavaApiLink>false</detectJavaApiLink>
<additionalOptions>
<additionalOption>-html5 --allow-script-in-comments</additionalOption>
</additionalOptions>
<nohelp>true</nohelp>
<header><![CDATA[
<script type="text/javascript"
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@10.5.0/build/styles/idea.min.css">
<script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@10.5.0/build/highlight.js"></script>
<script type="text/javascript">hljs.initHighlightingOnLoad();</script>]]>
</header>
<javadocExecutable>${java.home}/bin/javadoc</javadocExecutable>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.4.1</version>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Main-Class>de.hdm_stuttgart.de.DynDriverTest</Main-Class>
<Multi-Release>true</Multi-Release>
</manifestEntries>
</transformer>
</transformers>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<!-- Avoiding 'overlapping resources' problems -->
<configuration>
<filters>
<filter>
<artifact>org.apache.logging.log4j:*</artifact>
<excludes>
<exclude>META-INF/*</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.12.1</version>
</plugin>
</plugins>
</build>
</project>
package de.hdm_stuttgart.de;
import java.io.File;
import java.net.URL;
import java.net.URLClassLoader;
import java.sql.*;
import java.util.Properties;
/**
* Demonstrating dynamic JDBC Driver loading from file system based jar archive
*/
public class DynDriverTest {
public static void main(String[] args) {
try {
final URL[] urlList = {new File("lib/mariadb-java-client-2.7.4.jar").toURI().toURL()};
final ClassLoader classLoader = new URLClassLoader(urlList);
final Class<?> driverClassDesc = Class.forName("org.mariadb.jdbc.Driver",true,classLoader);
final Driver driver = (Driver) driverClassDesc.getDeclaredConstructor().newInstance();
final Properties prop = new Properties();
prop.setProperty("user","root");
prop.setProperty("password" ,"secret");
final Connection conn = driver.connect("jdbc:mysql://127.0.0.1/mysql", prop);
final ResultSet r = conn.createStatement().executeQuery("SELECT * from user");
while (r.next()) {
System.out.println(r.getString("user"));
}
}
catch (Exception e) {System.out.println(e.getMessage());
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<File name="A1" fileName="A1.log" append="false">
<PatternLayout pattern="%t %-5p %c{2} - %m%n"/>
</File>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
</Console>
</Appenders>
<Loggers>
<!-- You my want to define class or package level per-logger rules -->
<Logger name="de.hdm_stuttgart.de.App" level="debug">
<AppenderRef ref="A1"/>
</Logger>
<Root level="info">
<AppenderRef ref="STDOUT"/>
</Root>
</Loggers>
</Configuration>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment