You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by hu...@apache.org on 2022/05/22 06:26:27 UTC
[plc4x] branch develop updated: fix(plc4j): Set the class loader for for the driver to be the same as the PlcDriverManager
This is an automated email from the ASF dual-hosted git repository.
hutcheb pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git
The following commit(s) were added to refs/heads/develop by this push:
new 10e942b74f fix(plc4j): Set the class loader for for the driver to be the same as the PlcDriverManager
10e942b74f is described below
commit 10e942b74f4a4ebb8924c63c554400871918ad6b
Author: hutcheb <be...@gmail.com>
AuthorDate: Sun May 22 06:25:09 2022 +0000
fix(plc4j): Set the class loader for for the driver to be the same as the PlcDriverManager
---
.../org/apache/plc4x/java/PlcDriverManager.java | 26 +++++++++++++++++-----
.../org/apache/plc4x/kafka/Plc4xSourceTask.java | 2 +-
2 files changed, 21 insertions(+), 7 deletions(-)
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/PlcDriverManager.java b/plc4j/api/src/main/java/org/apache/plc4x/java/PlcDriverManager.java
index 13c39797ad..f62d407b3b 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/PlcDriverManager.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/PlcDriverManager.java
@@ -69,9 +69,16 @@ public class PlcDriverManager {
* @throws PlcConnectionException an exception if the connection attempt failed.
*/
public PlcConnection getConnection(String url) throws PlcConnectionException {
- PlcDriver driver = getDriverForUrl(url);
- PlcConnection connection = driver.getConnection(url);
- connection.connect();
+ ClassLoader originalClassLoader = Thread.currentThread().getContextClassLoader();
+ Thread.currentThread().setContextClassLoader(this.classLoader);
+ PlcConnection connection;
+ try {
+ PlcDriver driver = getDriverForUrl(url);
+ connection = driver.getConnection(url);
+ connection.connect();
+ } finally {
+ Thread.currentThread().setContextClassLoader(originalClassLoader);
+ }
return connection;
}
@@ -84,9 +91,16 @@ public class PlcDriverManager {
* @throws PlcConnectionException an exception if the connection attempt failed.
*/
public PlcConnection getConnection(String url, PlcAuthentication authentication) throws PlcConnectionException {
- PlcDriver driver = getDriverForUrl(url);
- PlcConnection connection = driver.getConnection(url, authentication);
- connection.connect();
+ ClassLoader originalClassLoader = Thread.currentThread().getContextClassLoader();
+ Thread.currentThread().setContextClassLoader(this.classLoader);
+ PlcConnection connection;
+ try {
+ PlcDriver driver = getDriverForUrl(url);
+ connection = driver.getConnection(url, authentication);
+ connection.connect();
+ } finally {
+ Thread.currentThread().setContextClassLoader(originalClassLoader);
+ }
return connection;
}
diff --git a/plc4j/integrations/apache-kafka/src/main/java/org/apache/plc4x/kafka/Plc4xSourceTask.java b/plc4j/integrations/apache-kafka/src/main/java/org/apache/plc4x/kafka/Plc4xSourceTask.java
index 95e6d11606..9fa01fdc72 100644
--- a/plc4j/integrations/apache-kafka/src/main/java/org/apache/plc4x/kafka/Plc4xSourceTask.java
+++ b/plc4j/integrations/apache-kafka/src/main/java/org/apache/plc4x/kafka/Plc4xSourceTask.java
@@ -153,7 +153,7 @@ public class Plc4xSourceTask extends SourceTask {
ScraperConfigurationTriggeredImpl scraperConfig = builder.build();
try {
- PlcDriverManager manager = new PlcDriverManager();
+ PlcDriverManager manager = new PooledDriverManager();
PlcDriverManager plcDriverManager = new CachedDriverManager(plc4xConnectionString,() -> manager.getConnection(plc4xConnectionString));
TriggerCollector triggerCollector = new TriggerCollectorImpl(plcDriverManager);
scraper = new TriggeredScraperImpl(scraperConfig, (jobName, sourceName, results) -> {