最近在研究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数据库?
谢谢!!
配置文件的相关配置为:
<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数据库?
谢谢!!
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).
改为<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)