2

我正在尝试将一个 Maven 构建的 Java Web 应用程序部署到 Elastic Beanstalk,它在 Amazon Linux Tomcat 7 版本下运行环境。该应用程序在 localhost 上运行良好,即使使用外部 mysql 数据库 (XEROUND)。

我原来的 context.xml 有一个资源如下:

<Resource auth="Container"        
    driverClassName="com.mysql.jdbc.Driver" 
    logAbandoned="true" 
    maxActive="100" 
    maxIdle="30" 
    maxWait="10000" 
    name="jdbc/xxxx-01292013" 
    password="xxxx" 
    removeAbandoned="true" 
    removeAbandonedTimeout="60" 
    type="javax.sql.DataSource" 
    url="jdbc:mysql://instancexxxx.db.xeround.com:xxxx/xxxx-01292013?   autoReconnect=true"
    username="xxxx-general"/>

但是,当我运行此应用程序时,我收到以下错误:

java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory

我尝试将以下行添加到我的 context.xml 资源中:

factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"

但这也没有用。然后我尝试添加这一行:

factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"

但这给了我新的例外:

javax.naming.NamingException: com.mysql.jdbc.Driver

我在这里用头撞墙,有谁知道我可以做些什么来让这个东西启动并运行?

4

1 回答 1

5

好的,所以经过更多的实验和配置,我通过将以下内容放入我的 context.xml 资源标签中来让我的应用程序正常工作:

    factory="org.apache.commons.dbcp.BasicDataSourceFactory"

以及我的 pom.xml 文件中的以下内容:

    <dependency>
        <groupId>commons-dbcp</groupId>
        <artifactId>commons-dbcp</artifactId>
        <version>1.4</version>
    </dependency>

    <dependency>
        <groupId>commons-pool</groupId>
        <artifactId>commons-pool</artifactId>
        <version>1.6</version>
    </dependency>

    <dependency>
        <groupId>commons-collections</groupId>
        <artifactId>commons-collections</artifactId>
        <version>3.2.1</version>
    </dependency>

这个答案是在AWS 论坛上给我的。

但是,我将尝试使用的更好的解决方案是在我的应用程序中放置一个 .ebextensions 文件,为其编写一个 .config 文件,然后让它以这种方式工作。我认为这种方法更适合长期使用,因为它可以让我解决我的开发环境和弹性 beantalk 的 Tomcat 7 之间的任何进一步的配置不匹配问题。这个解决方案也在 AWS 论坛上列出在这里

于 2013-02-02T21:50:40.047 回答