WSO2 ESB:在dblookup介体中配置db连接失败

问题描述 投票:0回答:1

使用IntegrationStudio,我创建了一个ESB项目。然后,我创建了一个代理服务,并添加了一个dblookup中介器。我已将其配置为使用postgresql DB。我配置如下。

连接类型为DB_CONNECTION

在数据库配置窗口中,我选择连接类型作为postgresql。

我选择了“从服务器获取”单选按钮,并从组合列表中选择了“ 42.2.5”,并输入了连接参数。

连接数据库驱动程序:com.postgres.jdbc.Driver(尝试过org.postgresql.Driver)jdbc网址连接:jdbc:postgresql://localhost:5432/EDH_DATABASE连接用户名:postgres密码:entered

测试连接工作正常。但是,通过IntegrationStudio运行代理时,会出现以下错误。

注:我将postgresql-42.2.5.jar复制到IntegrationStudio.app/Contents/Eclipse/runtime/microesb/lib

[2020-01-08 17:39:25,612] ERROR {org.apache.synapse.mediators.db.DBLookupMediator} - SQL Exception occurred while executing statement : select * from teacher; against DataSource : jdbc:postgresql://localhost:5432/EDH_DATABASE org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class     'com.postgres.jdbc.Driver'
    at org.apache.commons.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1429)
    at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
    at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
    at org.apache.synapse.mediators.db.DBLookupMediator.processStatement(DBLookupMediator.java:58)
    at org.apache.synapse.mediators.db.AbstractDBMediator.mediate(AbstractDBMediator.java:243)
    at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:109)
    at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71)
    at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:158)
    at org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(ProxyServiceMessageReceiver.java:224)
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
    at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:367)
    at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:412)
    at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:181)
    at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
     Caused by: java.lang.ClassNotFoundException: com.postgres.jdbc.Driver
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at org.eclipse.osgi.internal.framework.ContextFinder.loadClass(ContextFinder.java:139)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at org.apache.commons.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1420)
    ... 16 more

postgresql-42.2.5.jar没有路径"com.postgresql.jdbc.Driver"。因此,尝试将"org.postgresql.Driver"作为“连接数据库驱动程序”字段的值。但是仍然会给出相同的错误。在使用“ org.postgresql.Driver”的情况下,使用可配置字段,仍然会出现相同的错误。

    [2020-01-08 17:39:25,612] ERROR {org.apache.synapse.mediators.db.DBLookupMediator} - SQL Exception occurred while executing statement : select * from teacher; against DataSource : jdbc:postgresql://localhost:5432/EDH_DATABASE org.apache.commons.dbcp.SQLNestedException: 
     Cannot load JDBC driver class 'com.postgres.jdbc.Driver'
    at 
    org.apache.commons.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1429)
    at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
    at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
    at 
    org.apache.synapse.mediators.db.DBLookupMediator.processStatement(DBLookupMediator.java:58)
    at org.apache.synapse.mediators.db.AbstractDBMediator.mediate(AbstractDBMediator.java:243)
    at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:109)
    at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71)
    at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:158)
    at Org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(ProxyServiceMessageReceiver.java:224)
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
    at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:367)
    at 
        org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:412)
    at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:181)
    at 
        org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
        Caused by: java.lang.ClassNotFoundException: com.postgres.jdbc.Driver
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at org.eclipse.osgi.internal.framework.ContextFinder.loadClass(ContextFinder.java:139)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at 
    org.apache.commons.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1420)
    ... 16 more

任何帮助将不胜感激。

wso2 wso2esb
1个回答
0
投票

似乎正确的驱动程序名称是“ org.postgresql.Driver”。在错误日志中,即使您已将驱动程序名称从“ com.postgres.jdbc.Driver”更改为“ org.postgresql.Driver”,它似乎仍在寻找前者。请确保通过单击停止按钮已停止正在运行的Micro Integrator,并通过单击“运行方式->在Micro Integrator上运行”再次运行代理。

© www.soinside.com 2019 - 2024. All rights reserved.