2

Amazon Linux Tomcat 7 バージョンで環境を実行している Elastic Beanstalk に、Maven で構築された Java ウェブアプリをデプロイしようとしています。外部の mysql データベース (XEROUND) を使用しても、アプリは localhost で正常に動作します。

私の元の 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 ファイルを作成して、そのように機能させることです。このアプローチは、私の開発環境と Elastic Beanstalk の Tomcat 7 の間の構成の不一致の問題にさらに対処できるため、長期的にはより適していると思います。このソリューションは、こちらの AWS フォーラムでも公開されています。ここに

于 2013-02-02T21:50:40.047 に答える