最近在研究james(java开源的邮件服务器,其国内镜像站点:http://apache.linuxforum.net/,在该页找James链接),不用数据库,运行挺好的,改为mysql数据库后,无法连接数据库,提示配置文件中的数据库连接有问题(Component named "database-connections" failed to pass through the Initialization stage. (Reason: org.apache.avalon.framework.configuration.ConfigurationException: Error configurable datasource).)
配置文件的相关配置为:
<data-source name="maildb" class="org.apache.james.util.dbcp.JdbcDataSource">
            <driver>org.gjt.mm.mysql.Driver</driver>
            <dburl>jdbc:mysql://127.0.0.1:3306/James?autoReconnect=true</dburl>
            <user>root</user>
            <password>root</password>
            <max>20</max>
         </data-source>
我发现james自带的mysql的jdbc驱动和我以前用的不一样的。james自带的是mm.mysql-2.0.14.jar,其MANIFESF.MF的说明为:
Manifest-Version: 1.0
Created-By: Apache Ant 1.5Beta1
我以前用的是mm.mysql-2.0.4-bin.jar,其MANIFESF.MF的说明为:
Manifest-Version: 1.0
Created-By: 1.3.0 (Sun Microsystems Inc.)
我用jsp(jdbc:mysql://localhost:3306/mail?user=root;password=root)测试了这两个驱动,mm.mysql-2.0.4-bin.jar可以正常连接数据库,而mm.mysql-2.0.14.jar这个不行的。mm.mysql-2.0.14.jar这个驱动应该怎么用?还有我的james应该怎么样才能连接为mysql数据库?
谢谢!!

解决方案 »

  1.   

    edward0716(雲威龍),就是配置的问题,应该如何配置?谢谢
      

  2.   

    log文件中的错误提示为:
    ERROR   2005-05-04 17:54:19.328 [Phoenix.] (): Component named "database-connections" failed to pass through the Initialization stage. (Reason: org.apache.avalon.framework.configuration.ConfigurationException: Error configurable datasource).
    ERROR   2005-05-04 17:54:19.328 [Phoenix.] (): There was an error running phase "startup" for Block named "database-connections". (Reason: Component named "database-connections" failed to pass through the Initialization stage. (Reason: org.apache.avalon.framework.configuration.ConfigurationException: Error configurable datasource).).
    org.apache.excalibur.containerkit.lifecycle.LifecycleException: Component named "database-connections" failed to pass through the Initialization stage. (Reason: org.apache.avalon.framework.configuration.ConfigurationException: Error configurable datasource).
    at org.apache.excalibur.containerkit.lifecycle.LifecycleHelper.fail(LifecycleHelper.java:289)
    at org.apache.excalibur.containerkit.lifecycle.LifecycleHelper.startup(LifecycleHelper.java:159)
    at org.apache.avalon.phoenix.components.application.DefaultApplication.startup(DefaultApplication.java:480)
    at org.apache.avalon.phoenix.components.application.DefaultApplication.doRunPhase(DefaultApplication.java:428)
    at org.apache.avalon.phoenix.components.application.DefaultApplication.runPhase(DefaultApplication.java:364)
    at org.apache.avalon.phoenix.components.application.DefaultApplication.start(DefaultApplication.java:138)
    at org.apache.avalon.framework.container.ContainerUtil.start(ContainerUtil.java:251)
    rethrown from
    org.apache.avalon.framework.configuration.ConfigurationException: Error configurable datasource
    at org.apache.james.util.dbcp.JdbcDataSource.configure(JdbcDataSource.java:198)
    at org.apache.avalon.cornerstone.blocks.datasource.DefaultDataSourceSelector.initialize(DefaultDataSourceSelector.java:104)
    at org.apache.avalon.framework.container.ContainerUtil.initialize(ContainerUtil.java:235)
    at org.apache.excalibur.containerkit.lifecycle.LifecycleHelper.startup(LifecycleHelper.java:144)
    at org.apache.avalon.phoenix.components.application.DefaultApplication.startup(DefaultApplication.java:480)
    at org.apache.avalon.phoenix.components.application.DefaultApplication.doRunPhase(DefaultApplication.java:428)
    at org.apache.avalon.phoenix.components.application.DefaultApplication.runPhase(DefaultApplication.java:364)
    rethrown from
    org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Communication failure during handshake. Is there a server running on 127.0.0.1:3306?)
    at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:855)
    at org.apache.james.util.dbcp.JdbcDataSource$1.createDataSource(JdbcDataSource.java:120)
    at org.apache.commons.dbcp.BasicDataSource.setLogWriter(BasicDataSource.java:598)
    at org.apache.james.util.dbcp.JdbcDataSource.configure(JdbcDataSource.java:155)
    at org.apache.avalon.cornerstone.blocks.datasource.DefaultDataSourceSelector.initialize(DefaultDataSourceSelector.java:104)
    at org.apache.avalon.framework.container.ContainerUtil.initialize(ContainerUtil.java:235)
    at org.apache.excalibur.containerkit.lifecycle.LifecycleHelper.startup(LifecycleHelper.java:144)
    rethrown from
    java.sql.SQLException: Communication failure during handshake. Is there a server running on 127.0.0.1:3306?
    at org.gjt.mm.mysql.MysqlIO.init(MysqlIO.java:327)
    at org.gjt.mm.mysql.Connection.connectionInit(Connection.java:261)
    at org.gjt.mm.mysql.jdbc2.Connection.connectionInit(Connection.java:89)
    at org.gjt.mm.mysql.Driver.connect(Driver.java:167)
    at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:37)
    at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:290)
    at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:877)
    INFO    2005-05-04 17:54:19.343 [Phoenix.] (): exception while starting:Component named "database-connections" failed to pass through the Initialization stage. (Reason: org.apache.avalon.framework.configuration.ConfigurationException: Error configurable datasource).
      

  3.   

    我把配置中的<data-source name="maildb" class="org.apache.james.util.dbcp.JdbcDataSource">
    改为<data-source name="maildb" class="org.apache.james.util.mordred.JdbcDataSource">,则提示下面的错误:
    ERROR   2005-05-04 17:59:36.781 [Phoenix.] (): Component named "James" failed to pass through the Initialization stage. (Reason: org.apache.avalon.framework.component.ComponentException: Cannot find or init repository).
    ERROR   2005-05-04 17:59:36.781 [Phoenix.] (): There was an error running phase "startup" for Block named "James". (Reason: Component named "James" failed to pass through the Initialization stage. (Reason: org.apache.avalon.framework.component.ComponentException: Cannot find or init repository).).
    org.apache.excalibur.containerkit.lifecycle.LifecycleException: Component named "James" failed to pass through the Initialization stage. (Reason: org.apache.avalon.framework.component.ComponentException: Cannot find or init repository).
    at org.apache.excalibur.containerkit.lifecycle.LifecycleHelper.fail(LifecycleHelper.java:289)
    at org.apache.excalibur.containerkit.lifecycle.LifecycleHelper.startup(LifecycleHelper.java:159)
    at org.apache.avalon.phoenix.components.application.DefaultApplication.startup(DefaultApplication.java:480)
    at org.apache.avalon.phoenix.components.application.DefaultApplication.doRunPhase(DefaultApplication.java:428)
    at org.apache.avalon.phoenix.components.application.DefaultApplication.runPhase(DefaultApplication.java:364)
    at org.apache.avalon.phoenix.components.application.DefaultApplication.start(DefaultApplication.java:138)
    at org.apache.avalon.framework.container.ContainerUtil.start(ContainerUtil.java:251)
    rethrown from
    org.apache.avalon.framework.component.ComponentException: Cannot find or init repository
    at org.apache.james.core.AvalonMailStore.select(AvalonMailStore.java:318)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.avalon.phoenix.components.application.BlockInvocationHandler.invoke(BlockInvocationHandler.java:92)
    at $Proxy3.select(Unknown Source)
    rethrown from
    java.sql.SQLException: Giving up... no connections available.
    at org.apache.james.util.mordred.JdbcDataSource.getConnection(JdbcDataSource.java:217)
    at org.apache.james.mailrepository.JDBCMailRepository.initialize(JDBCMailRepository.java:322)
    at org.apache.james.core.AvalonMailStore.select(AvalonMailStore.java:300)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    INFO    2005-05-04 17:59:36.796 [Phoenix.] (): exception while starting:Component named "James" failed to pass through the Initialization stage. (Reason: org.apache.avalon.framework.component.ComponentException: Cannot find or init repository).WARN    2005-05-04 17:59:36.796 [Phoenix.] (): Failed to start application james.
    org.apache.avalon.framework.CascadingException: Failed to start application james.
    at org.apache.avalon.phoenix.components.kernel.DefaultKernel.startup(DefaultKernel.java:195)
    at org.apache.avalon.phoenix.components.kernel.DefaultKernel.addApplication(DefaultKernel.java:254)
    at org.apache.avalon.phoenix.components.deployer.DefaultDeployer.deploy(DefaultDeployer.java:353)
    at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployFile(DefaultEmbeddor.java:498)
    at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployFile(DefaultEmbeddor.java:491)
    at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployFiles(DefaultEmbeddor.java:476)
    at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployDefaultApplications(DefaultEmbeddor.java:466)
    rethrown from
    org.apache.avalon.phoenix.interfaces.ApplicationException: Component named "James" failed to pass through the Initialization stage. (Reason: org.apache.avalon.framework.component.ComponentException: Cannot find or init repository).
    at org.apache.avalon.phoenix.components.application.DefaultApplication.start(DefaultApplication.java:144)
    at org.apache.avalon.framework.container.ContainerUtil.start(ContainerUtil.java:251)
    at org.apache.avalon.phoenix.components.kernel.DefaultKernel.startup(DefaultKernel.java:178)
    at org.apache.avalon.phoenix.components.kernel.DefaultKernel.addApplication(DefaultKernel.java:254)
    at org.apache.avalon.phoenix.components.deployer.DefaultDeployer.deploy(DefaultDeployer.java:353)
    at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployFile(DefaultEmbeddor.java:498)
    at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployFile(DefaultEmbeddor.java:491)
    rethrown from
    org.apache.excalibur.containerkit.lifecycle.LifecycleException: Component named "James" failed to pass through the Initialization stage. (Reason: org.apache.avalon.framework.component.ComponentException: Cannot find or init repository).
    at org.apache.excalibur.containerkit.lifecycle.LifecycleHelper.fail(LifecycleHelper.java:289)
    at org.apache.excalibur.containerkit.lifecycle.LifecycleHelper.startup(LifecycleHelper.java:159)
    at org.apache.avalon.phoenix.components.application.DefaultApplication.startup(DefaultApplication.java:480)
    at org.apache.avalon.phoenix.components.application.DefaultApplication.doRunPhase(DefaultApplication.java:428)
    at org.apache.avalon.phoenix.components.application.DefaultApplication.runPhase(DefaultApplication.java:364)
    at org.apache.avalon.phoenix.components.application.DefaultApplication.start(DefaultApplication.java:138)
    at org.apache.avalon.framework.container.ContainerUtil.start(ContainerUtil.java:251)
    rethrown from
    org.apache.avalon.framework.component.ComponentException: Cannot find or init repository
    at org.apache.james.core.AvalonMailStore.select(AvalonMailStore.java:318)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.avalon.phoenix.components.application.BlockInvocationHandler.invoke(BlockInvocationHandler.java:92)
    at $Proxy3.select(Unknown Source)
    rethrown from
    java.sql.SQLException: Giving up... no connections available.
    at org.apache.james.util.mordred.JdbcDataSource.getConnection(JdbcDataSource.java:217)
    at org.apache.james.mailrepository.JDBCMailRepository.initialize(JDBCMailRepository.java:322)
    at org.apache.james.core.AvalonMailStore.select(AvalonMailStore.java:300)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)