1

自宅で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)

ユーザー+パスワードを指定する必要があるようです。これを指定するにはどうすればよいですか?これがエラーでない場合、何が間違っているのでしょうか?

4

1 に答える 1

0

プール サービスの構成にさらに 2 つのパラメーターを追加する必要があります。

   <parameter name="user" value="the-user-name" />
   <parameter name="password" value="the-password" />

データベースへの接続に問題がある場合は、次の点に注意してください。

  1. クラスパスにデータベース ドライバーを追加します (JAR にバンドルされている Warework PC-MAC ディストリビューションの H2 データベースを除く)。可能であれば、最新のドライバー バージョンをダウンロードしてインストールします。

  2. pool-service.xmlファイルに「driver-class」および「jdbc-url」パラメータを設定します。望ましくない問題を回避するために、URL でポートを指定することもお勧めします。

  3. 必要に応じて、 pool-service.xmlファイルに「 user」および「password」パラメーターを追加します。

  4. pool-service.xmlファイルでパラメータ「connect-on-create」を「true」に設定することをお勧めします。

次のテンプレートを使用して、MySQL データベースに接続します。

<?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://host:port/database-name" />
   <parameter name="user" value="the-user-name" />
   <parameter name="password" value="the-password" />
   <parameter name="connect-on-create" value="true" />
  </client>
 </clients>
</proxy-service>
于 2012-09-03T12:02:01.093 に答える