2013-02-01 67 views
2

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

我原来的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 

我捶我的头靠在这里的墙壁,没有人知道我能做些什么让这件事正在运行?

+0

你能证实tomcat-dbcp.jar出现在你的$ CATALINA_HOME/lib中吗? – Perception

+0

我如何检查弹性豆茎下的情况?我需要某种命令行工具吗? – oberger

+0

你如何安装EBS卷?你在使用EC2吗? – Perception

回答

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 Forums here.

但是给我的,更好的解决方案,我将努力去工作,我通过将.ebextensions文件放入我的应用程序中,为它编写一个.config文件,并使其以这种方式工作。我认为这种方法将会更好地适用于长期,因为它可以让我解决我的开发环境和弹性beanstalk的Tomcat 7之间的任何进一步配置不匹配问题。此解决方案也在AWS论坛here上进行了布置,并且here

相关问题