Hi Strub,
> On May 16, 2017, at 10:58 PM, Mark Struberg <[email protected]> wrote:
>
> Hi Craig!
>
> Those are additional properties which are _not_ passed in to
> EntityManagerFactore.createEM(String, Map) ?
What I'm trying to do is to pass extra properties to the underlying connection
which is normally opaque to the user. The connection url, user, and password
have official property names in the map. What I'm trying to do is to pass an
additional property to the jdbc driver manager.
I'm thinking that there must be a way to tell openjpa that a key should be
stripped and the result passed to the jdbc driver manager as a property.
For example, key: openjpa.ConnectionExtra.useSSL, value: false
This should be passed to the jdbc driver manager as a property "useSSL":"false".
>
> From the stacktrace it looks like you run some unit test, right?
> Do you do this via Maven or your IDE?
I do this via Maven and there's another way to run the tests that is managed by
explicit -Dopenjpa.ConnectionURL=jdbc:mysql://localhost:13021/test and that
works fine. But I also want to know how to use e.g.
-Dopenjpa.ConnectionExtra.useSSL=false
>
> The -D you set should imo work. We use the same within OpenJPA itself.
> But it might happen that it doesn't get propagated to your java process?
I just need to know the key prefix of the property or if there is some other
way to pass connection properties.
>
> Can you probably check your System.properties in the debugger, just to see
> whether this properly gets propagated?
The existing "known" properties work fine. I'm looking for an extra property
that openjpa doesn't know anything about.
Thanks,
Craig
>
>
> If you run it via Maven than you might probably tell the
> maven-surefire-plugin to set it.
>
> <plugin>
> <groupId>org.apache.maven.plugins</groupId>
> <artifactId>maven-surefire-plugin</artifactId>
> <version>${maven.surefire.version}</version>
> <configuration>
> <systemProperties>
> <property>
> <name>openjpa.ConnectionURL</name>
> <value>${connection.url}</value>
> </property>
> ...
>
> LieGrue,
> strub
>
>
>> Am 17.05.2017 um 02:51 schrieb Craig Russell <[email protected]>:
>>
>> Hi,
>>
>> I've got an implementation of a plugin Broker that uses an underlying jdbc
>> connection via the dbcp implementation.
>>
>> I need to pass a property to the DriverManager.getConnection(String url,
>> Properties props) method.
>>
>> I've looked for how a special property can be configured and I'm stuck. I'm
>> passing the URL via a variable on the command line.
>> -Dopenjpa.ConnectionURL="jdbc:mysql://localhost:13021/test" Maybe there is a
>> way to pass extra connection properties either via command line or via the
>> broker?
>>
>> Any ideas?
>>
>> Thanks,
>>
>> Craig
>>
>> <openjpa-2.2.2-r422266:1468616 nonfatal general error>
>> org.apache.openjpa.persistence.PersistenceException: There were errors
>> initializing your configuration: <openjpa-2.2.2-r422266:1468616 fatal user
>> error> org.apache.openjpa.util.UserException: A connection could not be
>> obtained for driver class "com.mysql.jdbc.Driver" and URL
>> "jdbc:mysql://localhost:13021/test". You may have specified an invalid URL.
>> at
>> org.apache.openjpa.jdbc.schema.DataSourceFactory.newConnectException(DataSourceFactory.java:255)
>> at
>> org.apache.openjpa.jdbc.schema.DataSourceFactory.installDBDictionary(DataSourceFactory.java:241)
>> at
>> org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getConnectionFactory(JDBCConfigurationImpl.java:733)
>> at sun.reflect.GeneratedMethodAccessor25.invoke(Unknown Source)
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> at java.lang.reflect.Method.invoke(Method.java:606)
>> at
>> org.apache.openjpa.lib.conf.ConfigurationImpl.instantiateAll(ConfigurationImpl.java:306)
>> at
>> org.apache.openjpa.conf.OpenJPAConfigurationImpl.instantiateAll(OpenJPAConfigurationImpl.java:1670)
>> at
>> org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:652)
>> at
>> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:203)
>> at
>> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
>> at
>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:227)
>> at
>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:154)
>> at
>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:60)
>> at
>> com.mysql.clusterj.jpatest.SingleEMTestCase.setUp(SingleEMTestCase.java:42)
>> at
>> com.mysql.clusterj.jpatest.SingleEMFTestCase.setUp(SingleEMFTestCase.java:55)
>> at
>> com.mysql.clusterj.jpatest.SingleEMTestCase.setUp(SingleEMTestCase.java:35)
>> at junit.framework.TestCase.run(TestCase.java:52)
>> at
>> com.mysql.clusterj.jpatest.PersistenceTestCase.run(PersistenceTestCase.java:104)
>> at junit.framework.TestSuite.run(TestSuite.java:125)
>> at junit.textui.TestRunner.run(TestRunner.java:46)
>> at testsuite.clusterj.AllTests.main(AllTests.java:150)
>> Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create
>> PoolableConnectionFactory (Communications link failure
>>
>> The last packet successfully received from the server was 206 milliseconds
>> ago. The last packet sent successfully to the server was 199 milliseconds
>> ago.)
>> at
>> org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549)
>> at
>> org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
>> at
>> org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
>> at
>> org.apache.openjpa.jdbc.schema.DBCPDriverDataSource.getDBCPConnection(DBCPDriverDataSource.java:74)
>> at
>> org.apache.openjpa.jdbc.schema.AutoDriverDataSource.getConnection(AutoDriverDataSource.java:42)
>> at
>> org.apache.openjpa.jdbc.schema.SimpleDriverDataSource.getConnection(SimpleDriverDataSource.java:76)
>> at
>> org.apache.openjpa.lib.jdbc.DelegatingDataSource.getConnection(DelegatingDataSource.java:118)
>> at
>> org.apache.openjpa.lib.jdbc.DecoratingDataSource.getConnection(DecoratingDataSource.java:93)
>> at
>> org.apache.openjpa.jdbc.schema.DataSourceFactory.installDBDictionary(DataSourceFactory.java:233)
>> ... 20 more
>> Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:
>> Communications link failure
>>
>> The last packet successfully received from the server was 206 milliseconds
>> ago. The last packet sent successfully to the server was 199 milliseconds
>> ago.
>> at sun.reflect.GeneratedConstructorAccessor46.newInstance(Unknown
>> Source)
>> at
>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>> at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
>> at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
>> at
>> com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:989)
>> at
>> com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:175)
>> at com.mysql.jdbc.MysqlIO.negotiateSSLConnection(MysqlIO.java:4901)
>> at
>> com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1659)
>> at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1226)
>> at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2194)
>> at
>> com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2225)
>> at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2024)
>> at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:779)
>> at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
>> at sun.reflect.GeneratedConstructorAccessor38.newInstance(Unknown
>> Source)
>> at
>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>> at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
>> at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
>> at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:389)
>> at
>> com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:330)
>> at
>> org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
>> at
>> org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)
>> at
>> org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)
>> at
>> org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)
>> ... 28 more
>> Caused by: javax.net.ssl.SSLException: Server selected improper ciphersuite
>> SSL_RSA_WITH_RC4_128_MD5
>> at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
>> at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1916)
>> at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:279)
>> at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:269)
>> at
>> sun.security.ssl.ClientHandshaker.serverHello(ClientHandshaker.java:531)
>> at
>> sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:203)
>> at sun.security.ssl.Handshaker.processLoop(Handshaker.java:913)
>> at sun.security.ssl.Handshaker.process_record(Handshaker.java:849)
>> at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1035)
>> at
>> sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1344)
>> at
>> sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1371)
>> at
>> sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1355)
>> at
>> com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:160)
>> ... 46 more
>>
>> at
>> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:218)
>> at
>> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
>> at
>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:227)
>> at
>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:154)
>> at
>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:60)
>> at
>> com.mysql.clusterj.jpatest.SingleEMTestCase.setUp(SingleEMTestCase.java:42)
>> at
>> com.mysql.clusterj.jpatest.SingleEMFTestCase.setUp(SingleEMFTestCase.java:55)
>> at
>> com.mysql.clusterj.jpatest.SingleEMTestCase.setUp(SingleEMTestCase.java:35)
>> at junit.framework.TestCase.run(TestCase.java:52)
>> at
>> com.mysql.clusterj.jpatest.PersistenceTestCase.run(PersistenceTestCase.java:104)
>> at junit.framework.TestSuite.run(TestSuite.java:125)
>> at junit.textui.TestRunner.run(TestRunner.java:46)
>> at testsuite.clusterj.AllTests.main(AllTests.java:150)
>> Craig L Russell
>> [email protected]
>>
>
Craig L Russell
Secretary, Apache Software Foundation
[email protected] http://db.apache.org/jdo