apache - tomcat服务器上的jdbc连接

标签 apache tomcat jdbc connection

我会尽我所能地制定。

首先,Web 应用程序(Spring MVC 和 Spring Jdbc)运行良好,直到我开始使用 STS(基于 Eclipse 的 Spring 工具套件)和 JDK+JRE7 版本来获得 Java 7 的特性。

其次,当前的问题是 Apache Tomcat 6 或 7(由于我不记得的原因我重新安装了这两个)似乎正在影响与数据库的连接。直接说:获取jdbc连接失败

 org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: No suitable driver found for jdbc:postgresql:postgres

每当我尝试从我的 Web 应用程序对数据库执行任何操作时,它就会发生。

为了以防万一,jdbc:postgresql:postgres 这一行是可以的,因为它之前工作过,它有效地表示要连接到名为 postgres 的本地数据库(也因为下面的要点)。

另一个需要提及的重点是,在 vFabric tc Server 下,一切都完美无缺,没有任何问题。

第三,数据库是 PostgreSql 以及 Apache DBCP 池。

第四,maven jdbc 驱动程序依赖项似乎运行良好,如果它们不存在,vFabric tc Server 也会像 Apache Tomcat 一样失败,这让我想到 Apache Tomcat 本身就是罪魁祸首。

服务器启动时产生的一些信息:

     Dec 14, 2011 4:54:32 PM org.apache.catalina.core.AprLifecycleListener init
     INFO: The APR based Apache Tomcat Native library which allows optimal                       performance in production environments was not found on the java.library.path:           C:\ProgramFiles\Java\jdk1.7.0_02\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\MiKTeX 2.9\miktex\bin;C:\Program Files\Apache Software Foundation\apache-maven-3.0.3\bin;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files\WIDCOMM\Bluetooth Software\;C:\Program Files\WIDCOMM\Bluetooth Software\syswow64;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\QuickTime\QTSystem\;.
     Dec 14, 2011 4:54:32 PM org.apache.coyote.AbstractProtocol init
     INFO: Initializing ProtocolHandler ["http-bio-8080"]
     Dec 14, 2011 4:54:32 PM org.apache.coyote.AbstractProtocol init
     INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
     Dec 14, 2011 4:54:32 PM org.apache.catalina.startup.Catalina load
     INFO: Initialization processed in 849 ms
     Dec 14, 2011 4:54:32 PM org.apache.catalina.core.StandardServicestartInternal
     INFO: Starting service Catalina
     Dec 14, 2011 4:54:32 PM org.apache.catalina.core.StandardEngine startInternal
     INFO: Starting Servlet Engine: Apache Tomcat/7.0.23
     Dec 14, 2011 4:54:33 PM org.apache.catalina.startup.HostConfig deployDescriptor
     INFO: Deploying configuration descriptor C:\Users\User\Documents\workspace-sts\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\conf\Catalina\localhost\project.xml
     Dec 14, 2011 4:54:33 PM org.apache.catalina.startup.SetContextPropertiesRule begin
     WARNING: [SetContextPropertiesRule]{Context} Setting property 'source' to 'org.eclipse.jst.jee.server:project' did not find a matching property.
     Dec 14, 2011 4:54:34 PM org.apache.catalina.core.ApplicationContext log
     INFO: Initializing Spring root WebApplicationContext

     Dec 14, 2011 4:54:37 PM org.apache.coyote.AbstractProtocol start
     INFO: Starting ProtocolHandler ["http-bio-8080"]
     Dec 14, 2011 4:54:37 PM org.apache.coyote.AbstractProtocol start
     INFO: Starting ProtocolHandler ["ajp-bio-8009"]
     Dec 14, 2011 4:54:37 PM org.apache.catalina.startup.Catalina start
     INFO: Server startup in 4664 ms

我真的很绝望,请帮忙。

更新:

仍然坐在前面看着悲伤的屏幕,所以我决定包含所有 .xml 配置。

<bean id="dataSource" class="org.apache.commons.dbcp.PoolingDataSource">
    <constructor-arg ref="connectionPool"/>
</bean>

<bean id ="connectionPool" class="org.apache.commons.pool.impl.GenericObjectPool">
<constructor-arg><null/></constructor-arg>
</bean>


<bean id="poolableConnectionFactory" class="org.apache.commons.dbcp.PoolableConnectionFactory" >
<constructor-arg ref="connectionFactory"/>
<constructor-arg ref="connectionPool"/>
<constructor-arg><null/></constructor-arg>
<constructor-arg><null/></constructor-arg>
<constructor-arg value="false"/>
<constructor-arg value="true"/>
</bean>

    <bean id="connectionFactory" class="org.apache.commons.dbcp.DriverManagerConnectionFactory">
    <constructor-arg value="jdbc:postgresql:postgres"/>
    <constructor-arg value="postgres"/>
    <constructor-arg value="myCorrectPassword"/>
</bean>

最佳答案

在 grl 中,我认为数据库驱动程序可能应该进入 Tomcat 上的公共(public) lib 文件夹。 通常这些驱动程序用于多个应用程序。

此外,如果您在 context.xml 中设置池,则这是必需的。

关于apache - tomcat服务器上的jdbc连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8508545/

相关文章:

java - Spring Boot + Apache 反向代理 : This combination of host and port requires TLS

java - 在 tomcat 中屏蔽 WAR 文件和端口

java - 我可以多次更改 JDBC 连接的 AutoCommit 属性吗

javascript - 创建 PHP websockets 服务器

c# - Mono 上的 MVC 查找 aspx 文件而不是路由

php - PHP var_dump() 上的授权 header 为空

java - Tomcat7 启动时间过长

java - HttpServletRequest 重用

java - JDBC 语句无法删除特定 MySql 表中的行

java - 使用预准备语句的变量列名