Java 使用JPA/Hibernate和Jasypt进行配置

Java 使用JPA/Hibernate和Jasypt进行配置,java,hibernate,jpa,jasypt,Java,Hibernate,Jpa,Jasypt,我试图在JSF/Primefaces项目中使用JPA+Hibernate4.5.1。我正在使用c3p0进行连接池。当应用程序启动时,c3p0尝试初始化池,但身份验证失败 这是我的persistence.xml: <persistence-unit name="ba"> <properties> <property name="hibernate.connection.driver_class" value="net.sourcefo

我试图在JSF/Primefaces项目中使用JPA+Hibernate4.5.1。我正在使用c3p0进行连接池。当应用程序启动时,c3p0尝试初始化池,但身份验证失败

这是我的persistence.xml:

    <persistence-unit name="ba">

    <properties>
        <property name="hibernate.connection.driver_class" value="net.sourceforge.jtds.jdbc.Driver"/>
        <property name="hibernate.connection.url" value="jdbc:jtds:sqlserver://x.x.x.x:1433/ba"/>
        <property name="hibernate.connection.username" value="ba"/>
        <property name="hibernate.connection.password" value="ENC(UcsChwXw5vYnM7w2S9XUaw==)" />            
        <property name="hibernate.connection.provider_class" value="org.jasypt.hibernate4.connectionprovider.EncryptedPasswordC3P0ConnectionProvider"/>
        <property name="hibernate.connection.encryptor_registered_name" value="configurationHibernateEncryptor"/>
        <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect"/>  
        <property name="hibernate.connection.release_mode" value="on_close"/>
        <property name="hibernate.archive.autodetection" value="class, hbm"/>
        <property name="hibernate.show_sql" value="true"/>
        <property name="hibernate.c3p0.validate" value="true"/>
        <property name="hibernate.c3p0.min_size" value="5"/>
        <property name="hibernate.c3p0.max_size" value="20"/>
        <property name="hibernate.c3p0.timeout" value="8"/>
        <property name="hibernate.c3p0.max_statements" value="50"/>
        <property name="hibernate.c3p0.preferredTestQuery" value="SELECT 1;"/>
        <property name="hibernate.c3p0.idle_test_period" value="5"/>  
        <property name="hibernate.c3p0.idle_test_period" value="1200"/>
        <property name="hibernate.c3p0.acquire_increment" value="1"/>
    </properties>

</persistence-unit>
}

以下是“错误”行:

INFO:正在初始化c3p0池。。。com.mchange.v2.c3p0。PoolBackedDataSource@b0d5e69
d[connectionPoolDataSource->com.mchange.v2.c3p0.WrapperConnectionPoolDataSou
rce@b495f632[acquireIncrement->1,收单机构测试->30,收单机构测试
放置->1000,自动提交关闭->假,自动测试表->空,断开
cquireFailure->false,签出超时->0,connectionCustomizerClassName->n
ull,ConnectionTestClassName->com.mchange.v2.c3p0.impl.DefaultConnectionTest
呃,debugUnreturnedConnectionStackTraces->false,factoryClassLocation->null,
ForceIgnoreUnsolvedTransactions->false,identityToken->2rxe6q8s1103xfe10g
g38n | 1712f3d,idleConnectionTestPeriod->1200,initialPoolSize->3,maxAdminis
trativeTaskTime->0,maxConnectionAge->0,maxIdleTime->8,maxIdleTimeExcess
连接->0,maxPoolSize->20,maxStatements->50,maxStatementsPerConnec
操作->0,最小池大小->5,嵌套数据源->com.mchange.v2.c3p0.DriverManag
erDataSource@b80b5127[说明->空,驱动器类->空,factoryClassLo
阳离子->空,标识符->2rxe6q8s1103xfe10gg38n | bc294a,jdbcUrl->jdbc:
jtds:sybase://x.x.x.x:yyyy/crystal,属性->{encryptor\u registered\u name=
配置HibernateEncryptor,用户=*******,密码=****,自动提交=true,
release_mode=auto}],preferredTestQuery->null,propertyCycle->0,语句C
acheNumDeferredCloseThreads->0,TestConnectionOnOnOnCheckin->false,TestConnection
OnOnOnCheckout->false,unreturnedConnectionTimeout->0,使用传统反射
veProxies->false;userOverrides:{}],dataSourceName->null,factoryClassLoc
ation->null,identityToken->2rxe6q8s1103xfe10gg38n | 1976f39,numHelperThreads
-> 3 ]
2013年1月29日上午11:16:25 com.mchange.v2.resourcepool.BasicResourcePool$s
获取任务运行
警告:com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@1de3
1b1——采集尝试失败!!!清算未决收购。在试图
获得所需的新资源后,我们未能成功超过最大数量
允许的采集尝试次数(30次)。上次采集尝试异常:
java.sql.SQLException:用户“xxxxx”登录失败。
位于net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.j
艾娃:372)
位于net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2820)
位于net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2258)
位于net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:603)
位于net.sourceforge.jtds.jdbc.ConnectionJDBC2.(ConnectionJDBC2.java
:352)
位于net.sourceforge.jtds.jdbc.ConnectionJDBC3.(ConnectionJDBC3.java
:50)
位于net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:185)
在com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManag
erDataSource.java:134)
在com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.GetPooledConnection上
在(WrapperConnectionPoolDataSource.java:183)上
在com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.GetPooledConnection上
在(WrapperConnectionPoolDataSource.java:172)上
在com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionRe
AcquisiteSource(C3P0PooledConnectionPool.java:152)
位于com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResource
Pool.java:1074)
位于com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndCrementpe
ndingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1061)
访问com.mchange.v2.resourcepool.BasicResourcePool.access$800
ePool.java:32)
请访问com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.ru
n(BasicResourcePool.java:1796)
在com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(Thre
adPoolAsynchronousRunner.java:635)
2013年1月29日上午11:16:25 com.mchange.v2.resourcepool.BasicResourcePool forceKill
获得
警告:获取资源失败,com.mchange.v2.resourcepool.BasicR
esourcePool@13dcf53正在中断等待资源检查o的所有线程
美国犹他州。将重试以响应新的客户端请求。
2013年1月29日上午11:16:25 com.mchange.v2.resourcepool.BasicResourcePool forceKill
获得
警告:获取资源失败,com.mchange.v2.resourcepool.BasicR
esourcePool@13dcf53正在中断等待资源检查o的所有线程
美国犹他州。将重试以响应新的客户端请求。

这是一个bug。有关更多详细信息,请单击此处:


为了修复它,必须根据链接中提供的详细信息修改Jasypt-hibernate4提供的一个文件(EncryptedPasswordC3P0ConnectionProvider)

日志上写了什么?到底是什么错误?@snow8261,请检查更新。
  @Override
  public void contextInitialized(ServletContextEvent contextEvent) {
    StandardPBEStringEncryptor strongEncryptor = new StandardPBEStringEncryptor();
    strongEncryptor.setAlgorithm("PBEWithMD5AndDES");
    strongEncryptor.setPassword("password");      
    HibernatePBEEncryptorRegistry registry = HibernatePBEEncryptorRegistry.getInstance();
    registry.registerPBEStringEncryptor("configurationHibernateEncryptor", strongEncryptor);
INFO: Initializing c3p0 pool... com.mchange.v2.c3p0.PoolBackedDataSource@b0d5e69
d [ connectionPoolDataSource -> com.mchange.v2.c3p0.WrapperConnectionPoolDataSou
rce@b495f632 [ acquireIncrement -> 1, acquireRetryAttempts -> 30, acquireRetryDe
lay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterA
cquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> n
ull, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTest
er, debugUnreturnedConnectionStackTraces -> false, factoryClassLocation -> null,
 forceIgnoreUnresolvedTransactions -> false, identityToken -> 2rxe6q8s1103xfe10g
g38n|1712f3d, idleConnectionTestPeriod -> 1200, initialPoolSize -> 3, maxAdminis
trativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 8, maxIdleTimeExcess
Connections -> 0, maxPoolSize -> 20, maxStatements -> 50, maxStatementsPerConnec
tion -> 0, minPoolSize -> 5, nestedDataSource -> com.mchange.v2.c3p0.DriverManag
erDataSource@b80b5127 [ description -> null, driverClass -> null, factoryClassLo
cation -> null, identityToken -> 2rxe6q8s1103xfe10gg38n|bc294a, jdbcUrl -> jdbc:
jtds:sybase://x.x.x.x:yyyy/crystal, properties -> {encryptor_registered_name=
configurationHibernateEncryptor, user=******, password=******, autocommit=true,
release_mode=auto} ], preferredTestQuery -> null, propertyCycle -> 0, statementC
acheNumDeferredCloseThreads -> 0, testConnectionOnCheckin -> false, testConnecti
onOnCheckout -> false, unreturnedConnectionTimeout -> 0, usesTraditionalReflecti
veProxies -> false; userOverrides: {} ], dataSourceName -> null, factoryClassLoc
ation -> null, identityToken -> 2rxe6q8s1103xfe10gg38n|1976f39, numHelperThreads
 -> 3 ]


Jan 29, 2013 11:16:25 AM com.mchange.v2.resourcepool.BasicResourcePool$Scattered
AcquireTask run
WARNING: com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@1de3
1b1 -- 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: Login failed for user 'xxxxx'.
        at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.j
ava:372)
        at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2820)
        at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2258)
        at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:603)
        at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java
:352)
        at net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3.java
:50)
        at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:185)
        at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManag
erDataSource.java:134)
        at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnecti
on(WrapperConnectionPoolDataSource.java:183)
        at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnecti
on(WrapperConnectionPoolDataSource.java:172)
        at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionRe
sourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:152)
        at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResource
Pool.java:1074)
        at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPe
ndingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1061)
        at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourc
ePool.java:32)
        at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.ru
n(BasicResourcePool.java:1796)
        at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(Thre
adPoolAsynchronousRunner.java:635)

Jan 29, 2013 11:16:25 AM com.mchange.v2.resourcepool.BasicResourcePool forceKill
Acquires
WARNING: Having failed to acquire a resource, com.mchange.v2.resourcepool.BasicR
esourcePool@13dcf53 is interrupting all Threads waiting on a resource to check o
ut. Will try again in response to new client requests.
Jan 29, 2013 11:16:25 AM com.mchange.v2.resourcepool.BasicResourcePool forceKill
Acquires
WARNING: Having failed to acquire a resource, com.mchange.v2.resourcepool.BasicR
esourcePool@13dcf53 is interrupting all Threads waiting on a resource to check o
ut. Will try again in response to new client requests.