自宅でWarework for PC-MACを試しており、テスト アプリをローカル マシンの MySQL データベースに接続したいと考えています。
このタスクを達成するために、Warework が提供するオンライン チュートリアル (完全なテンプレートでプール サービスをカスタマイズする) に従っているので、pool-service.xml
ファイルを/META-INF/system
ディレクトリに配置して c3p0 を構成します。ファイルの内容は次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<proxy-service xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://repository.warework.com/xsd/proxyservice-1.0.0.xsd">
<clients>
<client name="c3p0-client" connector="com.warework.service.pool.client.connector.C3P0Connector">
<parameter name="driver-class" value="com.mysql.jdbc.Driver" />
<parameter name="jdbc-url" value="jdbc:mysql://localhost/test1" />
<parameter name="connect-on-create" value="true" />
</client>
</clients>
</proxy-service>
問題は、log4j が常に次のエラーを出力することです。
[2012-09-02 15:18:02,613]-[INFO @ system] - WAREWORK connected Client 'default-client' in Service 'log-service'.
[2012-09-02 15:18:02,616]-[INFO @ system] - WAREWORK created Service 'log-service'.
[2012-09-02 15:18:02,616]-[INFO @ system] - WAREWORK created Provider 'collection-provider'.
[2012-09-02 15:18:02,618]-[INFO @ system] - WAREWORK created Provider 'datastore-view-provider'.
[2012-09-02 15:18:02,674]-[INFO @ system] - WAREWORK created Data Store 'rdbms-client' in Service 'datastore-service'.
[2012-09-02 15:18:02,674]-[INFO @ system] - WAREWORK created Service 'datastore-service'.
[2012-09-02 15:18:02,674]-[INFO @ system] - WAREWORK CONFIGURED SCOPE 'system' AND NOW IT'S READY.
[2012-09-02 15:18:04,727]-[INFO @ system] - WAREWORK created Provider 'ddbb-connection-provider'.
[2012-09-02 15:18:04,791]-[INFO @ system] - WAREWORK created Client 'c3p0-client' in Service 'pool-service'.
[2012-09-02 15:18:04,936]-[INFO @ system] - MLog clients using log4j logging.
[2012-09-02 15:18:05,679]-[INFO @ system] - Initializing c3p0-0.9.1.2 [built 21-May-2007 15:04:56; debug? true; trace: 10]
[2012-09-02 15:18:06,094]-[INFO @ system] - WAREWORK connected Client 'c3p0-client' in Service 'pool-service'.
[2012-09-02 15:18:06,094]-[INFO @ system] - WAREWORK created Service 'pool-service'.
[2012-09-02 15:18:06,272]-[INFO @ system] - Initializing c3p0 pool... com.mchange.v2.c3p0.PoolBackedDataSource@ef95dc8 [ connectionPoolDataSource -> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@107413fc [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, debugUnreturnedConnectionStackTraces -> false, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 1hge1bm8p11hsa6a1qtkrfw|1bbdd48, idleConnectionTestPeriod -> 0, initialPoolSize -> 3, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 0, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 15, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 3, nestedDataSource -> com.mchange.v2.c3p0.DriverManagerDataSource@dafa338 [ description -> null, driverClass -> null, factoryClassLocation -> null, identityToken -> 1hge1bm8p11hsa6a1qtkrfw|1e903d5, jdbcUrl -> jdbc:mysql://WW-DEV-SRV2:2803/test1, properties -> {jdbc-url=jdbc:mysql://WW-DEV-SRV2:2803/test1, connect-on-create=true, driver-class=com.mysql.jdbc.Driver} ], preferredTestQuery -> null, propertyCycle -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, usesTraditionalReflectiveProxies -> false; userOverrides: {} ], dataSourceName -> null, factoryClassLocation -> null, identityToken -> 1hge1bm8p11hsa6a1qtkrfw|7e9ce2, numHelperThreads -> 3 ]
[2012-09-02 15:18:36,893]-[WARN @ system] - com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@523df -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception:
java.sql.SQLException: Access denied for user ''@'127.0.0.1' (using password: NO)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:943)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4113)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1308)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2336)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2369)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:377)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:119)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:143)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:132)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
[2012-09-02 15:18:36,991]-[WARN @ system] - WAREWORK cannot retrieve a database connection from the c3p0 pool 'c3p0-client' in Service 'pool-service' because c3p0 reported the following error:
[2012-09-02 15:18:36,994]-[WARN @ system] - Connections could not be acquired from the underlying database!
[2012-09-02 15:18:36,996]-[WARN @ system] - WAREWORK cannot retrieve the connection for Data Store 'rdbms-client' because Provider 'ddbb-connection-provider' does not returns a 'java.sql.Connection' object for 'c3p0-client' or it is null.
[2012-09-02 15:18:36,996]-[WARN @ system] - WAREWORK cannot open a connection with Client 'rdbms-client' at Service 'datastore-service' because its Connector generated the following error: WAREWORK cannot retrieve the connection for Data Store 'rdbms-client' because Provider 'ddbb-connection-provider' does not returns a 'java.sql.Connection' object for 'c3p0-client' or it is null.
[2012-09-02 15:18:39,861]-[WARN @ system] - com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@b914b3 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception:
java.sql.SQLException: Access denied for user ''@'127.0.0.1' (using password: NO)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:943)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4113)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1308)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2336)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2369)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:377)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:119)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:143)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:132)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
[2012-09-02 15:18:39,882]-[WARN @ system] - com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@c22a3b -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception:
java.sql.SQLException: Access denied for user ''@'127.0.0.1' (using password: NO)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:943)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4113)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1308)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2336)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2369)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:377)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:119)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:143)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:132)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
WAREWORK cannot open a connection with Client 'rdbms-client' at Service 'datastore-service' because its Connector generated the following error: WAREWORK cannot retrieve the connection for Data Store 'rdbms-client' because Provider 'ddbb-connection-provider' does not returns a 'java.sql.Connection' object for 'c3p0-client' or it is null.
at com.warework.core.service.client.AbstractClient.connect(AbstractClient.java:113)
at com.warework.service.datastore.DefaultView.connect(DefaultView.java:106)
at com.warework.service.datastore.AbstractDataStoreView.connect(AbstractDataStoreView.java:72)
at com.chafi.test.Test.main(Test.java:25)
ユーザー+パスワードを指定する必要があるようです。これを指定するにはどうすればよいですか?これがエラーでない場合、何が間違っているのでしょうか?