我使用 JBoss AS 7.1.1.Final 作为我的应用程序服务器。
我已经在 JBoss 社区用户论坛上发布了我的问题:question-here
转载如下:
在我的 MacBook Pro 上安装了 AS 7.1.1.Final。
下载了快速入门示例。能够成功部署和测试 helloworld、jboss-as-greeter 战争。
然后我设置了 postgresql 数据库引擎来尝试 jboss-as-cmt 示例。我能够编译和部署它。
一切都很好,除了一件事 - 我无法从应用程序服务器附带的 h2console web-app 连接到 postgresql 数据库。
jboss-as-cmt 战争完美运行,即我能够将客户添加到发票中。我可以 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
我能够建立从 jboss 管理控制台 (http://localhost:9990/console) 到数据源的成功连接。在数据源配置文件面板上,我将数据源的名称设置为“postgresDS”,将 jndi 设置为“java:jboss/postgresDS”。连接 URL 与我在 h2console 上使用的相同 - “jdbc:postgresql://127.0.0.1:5432/jboss-as-cmt”
我不知道为什么 h2console 没有连接到 postgresql 数据库引擎。它成功连接到 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 数据库,它会给我一些安宁。
一般来说,我是 JBoss 和服务器端的新手。
我附上了一些图片供参考。
谢谢你的时间。
任何想法都受到高度赞赏。感谢您的见解和时间。