当前位置: 首页 > 知识库问答 >
问题:

通过jdbc驱动程序和h2console.war连接到postgresql

魏康安
2023-03-14

我使用JBoss作为7.1.1.final作为我的应用程序服务器。

我已经在JBoss社区用户论坛上发布了我的问题:question-here

jboss-as-cmt war工作得很好,即我能够将客户添加到发票中。我可以psql进入数据库引擎,我可以看到所有的记录。我唯一的问题是我不能使用h2console webapp进入我创建的jboss-as-cmt postgres数据库。

我使用:“org.PostgreSQL.Driver”作为驱动程序类字段。JDBC URL的“JDBC:PostgreSQL://127.0.0.1:5432/jboss-as-cmt”。这与我在standalone-full.xml配置文件中设置的connection-url值相同。“sa”表示用户名和密码。

当我按下h2console应用程序上的“测试连接”按钮时,不幸的是我看到-

Class "org.postgresql.Driver" not found [90086-161]
org.h2.message.DbException: Class "org.postgresql.Driver" not found [90086-161]
    at org.h2.message.DbException.get(DbException.java:158)
    at org.h2.util.Utils.loadUserClass(Utils.java:429)
    at org.h2.util.JdbcUtils.getConnection(JdbcUtils.java:146)
    at org.h2.server.web.WebServer.getConnection(WebServer.java:653)
    at org.h2.server.web.WebApp.test(WebApp.java:839)
    at org.h2.server.web.WebApp.process(WebApp.java:215)
    at org.h2.server.web.WebApp.processRequest(WebApp.java:164)
    at org.h2.server.web.WebServlet.doGet(WebServlet.java:118)
    at org.h2.server.web.WebServlet.doPost(WebServlet.java:153)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
    at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930)
    at java.lang.Thread.run(Thread.java:680)
Caused by: org.h2.jdbc.JdbcSQLException: Class "org.postgresql.Driver" not found [90086-161]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
    ... 24 more
Caused by: java.lang.ClassNotFoundException: org.postgresql.Driver from [Module "com.h2database.h2:main" from local module loader @b4e29b (roots: /Users/avyayatek/Downloads/jboss-as-7.1.1.Final/modules)]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:423)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:169)
    at org.h2.util.Utils.loadUserClass(Utils.java:424)
    ... 22 more

我不知道为什么h2console没有连接到postgresql db引擎。它成功地连接到jboss-as-greeter示例中使用的h2内存数据库。

我已经将JDBC驱动程序放在$JBOSS_HOME/modules/org/PostgreSQL/main文件夹中。在那里创建了module.xml。在~/org/PostgreSQL/文件夹中的jar中有一个Driver.class文件。我已经修改了$jboss_home/standalone/configuration/standalone-full.xml,以添加与postgresql相关的数据源和驱动程序部分。

正如我所说的,我可以构建jboss-as-cmt并进行部署,它按预期工作。如果我可以让h2console连接到这个postgresql数据库,它会给我一些安宁。

共有1个答案

麹浩瀚
2023-03-14

首先,感谢@ThomasMueller,他的评论鼓励我进一步挖掘,并得出一个功能性的解决方案。也感谢JBoss社区页面上的Wolf-Dieter为我指明了正确的方向。所以,我对@MarkRotteveel真诚的建议是,在可信的论坛上发帖没有坏处,当我们找到解决方案时,每个人都受益。

这对我很有效:感谢指向源代码的链接,我从源代码创建了h2console,这一次,我将postgres JDBC驱动程序jar文件放在WEB-INF/lib文件夹中。现在,我能够使用h2console连接到postgresql数据库。

quickstart附带的h2console应用程序在WEB-INF/lib文件夹中没有任何库JAR。相反,它在META-INF/MANIFEST.MF文件中指定依赖项。我确信在JBoss启动时加载了h2和postgres驱动程序--我可以看到日志。但出于某种原因,这款应用程序只识别h2驱动程序,无法识别postgres驱动程序。查看源文件,我非常肯定其中没有任何“硬编码”。所以,对我来说还是个谜。

谢谢大家。希望这能帮助某人--不仅仅限于此。

 类似资料:
  • 我正在尝试使用本教程连接Oracle数据库。当我使用命令行:java-cp c:\jdbc-test\ojdbc6.jar;c:\jdbc-test OracleJDBC我已经将ojdbc6.jar与OracleJDBC.java放在同一个文件夹中。现在我需要在Eclipse上运行它,但它给我一个错误: 是因为OJDBC6.jar位置吗?

  • Java教程说有两种方法可以通过JDBC连接到数据库:使用DriverManager类(旧的,不推荐)和DataSource类。 我明白如何做它与DriverManager: 但我无法找到如何使用DataSource的SQLite通过JDBC。SQLite(或JDBC驱动程序提供程序,我不知道如何正确地调用它)是否支持使用DataSource? 我正在使用xerial/sqlite jdbc驱动程

  • 问题内容: 我目前正在为大学的一个班级做项目。我正在学习有关连接和操作数据库的信息,我们正在使用Microsoft .accdb文件。 这是我到目前为止所拥有的。 当寻找“ sun.jdbc.odbc.JdbcOdbcDriver”时,我得到以下输出。 似乎很容易解决。看来我想念司机或类似的东西。但是,我很难找到解决方法。JDK随附驱动程序吗?我需要单独下载吗?是否取决于我的操作系统?(Mac O

  • 这很奇怪。我使用的是运行VirtualBox 4.2.6的Mac OS X 10.7.5 64位主机。我有一个Windows 7 SP1来宾(64位),带有运行Microsoft SQL Server Express 2012的桥接网络。我将 SQL Server 配置为在端口 1433 上使用 TCP/IP,而不是动态端口(设置为空,而不是 0)。Windows 7 来宾的 IPv4 地址为 1

  • 我需要使用sqldeveloper连接到db2 7.1 as400系统,使用jdbc驱动程序连接到oracle data integrator。 我下载了db2cc.jar、db2cc_license_cisuz.jar..jt400.jar、db2java.jar。 连接显示成功,并且似乎已连接,但在运行任何查询或浏览任何表时,每次我得到以下错误:

  • 我试图建立一个SSL连接到赛贝斯ASE 15.7使用JDBC驱动程序没有运气。我尝试了以下选项: > 使用JTDS 1.25驱动程序(jtds-1.2.5.jar) 使用以下连接字符串: 我收到 使用jconnect4(jconn4.jar) 使用以下连接字符串: jdbc:sybase:Tds:host:port/dbname?ENABLE_SSL=true 我得到了