[midPoint] MySQL configuration for 3.0

Deepak Natarajan dnataraj at trilobytesystems.com
Tue Aug 26 21:11:21 CEST 2014


Hi Ivan -

Nice one!. For our first/current customer, we are not using Workflow (it
is planned for the future, and I will have to learn how to configure and
use it etc) but for our current delivery it is not pertinent.

Could you give me a quick tip on how to disable it? (I did a quick
search on the wiki, was unable to find anything).

BR/Deepak

Ivan Noris wrote:
> Hi Deepak,
> 
> in your log (attached to your last mail) the final exception is:
> 
> Caused by: com.evolveum.midpoint.util.exception.SystemException: JDBC driver must be specified (either explicitly or in SQL repository configuration)
> 	at com.evolveum.midpoint.wf.impl.WfConfiguration.notEmpty(WfConfiguration.java:201) ~[workflow-impl-3.0.jar:na]
> 	at com.evolveum.midpoint.wf.impl.WfConfiguration.validate(WfConfiguration.java:193) ~[workflow-impl-3.0.jar:na]
> 	at com.evolveum.midpoint.wf.impl.WfConfiguration.initialize(WfConfiguration.java:165) ~[workflow-impl-3.0.jar:na]
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_45]
> 
> 
> This implies that workflow is enabled. And it's failing to use datasource.
> 
> Further, I see:
> 
> 
> 2014-08-26 18:19:25,703 [RMI TCP Connection(2)-127.0.0.1] INFO 
> (c.e.midpoint.repo.sql.CompositeDataSource): Loading datasource.
> 2014-08-26 18:19:25,703 [RMI TCP Connection(2)-127.0.0.1] INFO 
> (c.e.midpoint.repo.sql.CompositeDataSource): JDNI datasource present in
> configuration, looking for 'java:comp/env/jdbc/midpointDS'.
> 
> So repository IS using datasource.
> 
> Then:
> 
> 2014-08-26 18:19:28,458 [RMI TCP Connection(2)-127.0.0.1] INFO 
> (c.e.midpoint.task.quartzimpl.Initializer): Task Manager: Quartz Job
> Store: in-memory, NOT clustered. Threads: 10
> 
> So task manager is using memory, not database (that's why you didn't
> have the error that I do).
> 
> So, the problem is probably caused by workflow+datasource combination,
> not repository. I'm not using workflow in my setup.
> 
> Just to be sure: are you using the workflow in your setup or it can be
> disabled (that would work around the problem)?
> 
> If the combination datasource+jdbc url+user+password works, I would
> speculate that repository is using datasource and workflow is inheriting
> the jdbc url+user+password parameters.
> 
> Regards,
> Ivan
> 
> On 08/26/2014 08:26 PM, Deepak Natarajan wrote:
>> Hi Ivan -
>>
>> Hmmm. My configuration looks like yours, albeit with MySQL.
>>
>> 1. I have mysql-connector-java-5.1.28-bin.jar in <tc>/lib
>>
>> 2. My <tc>/conf/context.xml :
>>
>> <Context>
>>
>>     <!-- Default set of monitored resources -->
>>     <WatchedResource>WEB-INF/web.xml</WatchedResource>
>>     <ResourceLink name="jdbc/midpointDS" global="jdbc/midpointDS"
>> type="javax.sql.DataSource"/>
>> ...
>> ...
>> </Context>
>>
>> 3. My <tc>/conf/server.xml
>>
>>   <GlobalNamingResources>
>>
>>
>>     <Resource name="jdbc/midpointDS" auth="Container"
>> type="javax.sql.DataSource"
>>         username="xx" password="xx"
>>         url="jdbc:mysql://localhost:3306/midpoint"
>>         driverClassName="com.mysql.jdbc.Driver"
>>         accessToUnderlyingConnectionAllowed="true"
>>         initialSize="5" maxWait="5000"
>>         maxActive="30" maxIdle="5"
>>         validationQuery="select 1"
>>         poolPreparedStatements="true"/>
>>
>>   </GlobalNamingResources>
>>
>> 4. midpoint's config :
>>
>>         <repository
>> 	<repositoryServiceFactoryClass>com.evolveum.midpoint.repo.sql.SqlRepositoryFactory</repositoryServiceFactoryClass>
>>             <embedded>false</embedded>
>>
>> <hibernateDialect>com.evolveum.midpoint.repo.sql.util.MidPointMySQLDialect</hibernateDialect>
>>             <hibernateHbm2ddl>validate</hibernateHbm2ddl>
>>             <dataSource>java:comp/env/jdbc/midpointDS</dataSource>
>>         </repository>
>>
>>
>> and when I redeploy/restart, I get the same error - see attached log file.
>>
>> In any case, I am able to work around this by specifying the details of
>> the jdbc connection - username, driver class etc. as below :
>>
>>         <repository>
>>
>> <repositoryServiceFactoryClass>com.evolveum.midpoint.repo.sql.SqlRepositoryFactory</repositoryServiceFactoryClass>
>>             <embedded>false</embedded>
>>
>> <hibernateDialect>com.evolveum.midpoint.repo.sql.util.MidPointMySQLDialect</hibernateDialect>
>>             <hibernateHbm2ddl>validate</hibernateHbm2ddl>
>>             <dataSource>java:comp/env/jdbc/midpointDS</dataSource>
>>             <jdbcUrl>jdbc:mysql://localhost:3306/midpoint</jdbcUrl>
>>             <driverClassName>com.mysql.jdbc.Driver</driverClassName>
>>             <jdbcUsername>xx</jdbcUsername>
>>             <jdbcPassword>xx</jdbcPassword>
>>         </repository>
>>
>> And, when I do go to configure/about, I actually see the DS! - I didnt
>> check this previously. So I guess it IS using the DS after all?
>>
>> Thanks for your help!
>>
>> BR/Deepak
>>
>> Ivan Noris wrote:
>>> Hi Deepak,
>>>
>>> my working configuration for Repository (Task Manager/cluster not
>>> working yet) and Postgresql (I don't have mysql handy now):
>>>
>>> 1. postgresql JDBC driver is in <tomcat>/lib directory for datasource to
>>> work
>>> 2. <tomcat>/conf/context.xml:
>>> . . .
>>> <Context>
>>>
>>>     <!-- Default set of monitored resources -->
>>>     <WatchedResource>WEB-INF/web.xml</WatchedResource>
>>>     <ResourceLink name="*jdbc/midpointDS*"
>>>                   global="*jdbc/midpointDS*"
>>>                   type="javax.sql.DataSource"/>
>>>
>>> . . .
>>>
>>> 3. <tomcat>/conf/server.xml:
>>> . . .
>>>   <GlobalNamingResources>
>>> . . .
>>>     <Resource name="*jdbc/midpointDS*" auth="Container"
>>> type="javax.sql.DataSource"
>>>         username="username" password="password"
>>>         url="jdbc:postgresql://localhost/midpoint"
>>>         driverClassName="org.postgresql.Driver"
>>>         accessToUnderlyingConnectionAllowed="true"
>>>         initialSize="5" maxWait="5000"
>>>         maxActive="30" maxIdle="5"
>>>         validationQuery="select 1"
>>>         poolPreparedStatements="true"/>
>>>   </GlobalNamingResources>
>>> . . .
>>>
>>> 4. midpoint's config.xml:
>>>
>>>     <repository>
>>>       <embedded>false</embedded>
>>>      
>>> <repositoryServiceFactoryClass>com.evolveum.midpoint.repo.sql.SqlRepositoryFactory</repositoryServiceF
>>>      
>>> <hibernateDialect>com.evolveum.midpoint.repo.sql.util.MidPointPostgreSQLDialect</hibernateDialect>
>>>       <hibernateHbm2ddl>validate</hibernateHbm2ddl>
>>>       *<dataSource>java:comp/env/jdbc/midpointDS</dataSource>*
>>>     </repository>
>>>
>>> After starting, Configuration - About shows:
>>> Additional details
>>> dataSource     java:comp/env/jdbc/midpointDS
>>>
>>> so the Datasource is being used.
>>>
>>> I will still have to configure Task Manager, but this is a quick report
>>> so you can test it (with MySQL).
>>> I will update the wiki page after that.
>>>
>>> Best regards,
>>> Ivan
>>>
>>> On 08/26/2014 05:49 PM, Deepak Natarajan wrote:
>>>> Hi Ivan -
>>>>
>>>> I'm sorry, in my reply I pasted from the wiki, to make my point (i.e I
>>>> am using the configuration as described).
>>>>
>>>> The one in my file is (and which is working correctly now that I added
>>>> in the additional fields of username, password, url and driverclass:
>>>>
>>>>         <repository>
>>>>
>>>> <repositoryServiceFactoryClass>com.evolveum.midpoint.repo.sql.SqlRepositoryFactory</repositoryServiceFactoryClass>
>>>>             <embedded>false</embedded>
>>>>
>>>> <hibernateDialect>com.evolveum.midpoint.repo.sql.util.MidPointMySQLDialect</hibernateDialect>
>>>>             <hibernateHbm2ddl>validate</hibernateHbm2ddl>
>>>>             <dataSource>java:comp/env/jdbc/midpointDS</dataSource>
>>>>             <jdbcUrl>jdbc:mysql://localhost:3306/midpoint</jdbcUrl>
>>>>             <driverClassName>com.mysql.jdbc.Driver</driverClassName>
>>>>             <jdbcUsername>x</jdbcUsername>
>>>>             <jdbcPassword>x</jdbcPassword>
>>>>             <!-- <asServer>true</asServer> -->
>>>>             <!--
>>>>             <baseDir>${midpoint.home}</baseDir>
>>>>             -->
>>>>         </repository>
>>>>
>>>> So yes, it is the same DS as I have configured in my Tomcat instance :
>>>>
>>>>   <GlobalNamingResources>
>>>>     <!-- Editable user database that can also be used by
>>>>          UserDatabaseRealm to authenticate users
>>>>     -->
>>>>     <Resource name="UserDatabase" auth="Container"
>>>>               type="org.apache.catalina.UserDatabase"
>>>>               description="User database that can be updated and saved"
>>>>               factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
>>>>               pathname="conf/tomcat-users.xml" />
>>>>
>>>>     <Resource name="jdbc/midpointDS" auth="Container"
>>>> type="javax.sql.DataSource"
>>>>         username="x" password="x"
>>>>         url="jdbc:mysql://localhost:3306/midpoint"
>>>>         driverClassName="com.mysql.jdbc.Driver"
>>>>         accessToUnderlyingConnectionAllowed="true"
>>>>         initialSize="5" maxWait="5000"
>>>>         maxActive="30" maxIdle="5"
>>>>         validationQuery="select 1"
>>>>         poolPreparedStatements="true"/>
>>>>
>>>>   </GlobalNamingResources>
>>>>
>>>> which is the same in the context.xml
>>>>
>>>> -deepak
>>>>
>>>> Ivan Noris wrote:
>>>>> Hi Deepak,
>>>>>
>>>>> it seems you are referencing bad datasource.
>>>>>
>>>>> Shouldn't it be "jdbc/mysql" based on your configuration pasted earlier
>>>>> in this thread?
>>>>> Anyway it must be the same as in the datasource configuration in Tomcat.
>>>>>
>>>>> Regards,
>>>>> Ivan
>>>>>
>>>>> On 08/26/2014 05:07 PM, Deepak Natarajan wrote:
>>>>>> Argh - I should have noticed this, sorry. Didn't spot this change in
>>>>>> Vilo's email. This got rid of that error - however, I subsequently get
>>>>>> these :
>>>>>>
>>>>>> Caused by: com.evolveum.midpoint.util.exception.SystemException: JDBC
>>>>>> driver must be specified (either explicitly or in SQL repository
>>>>>> configuration)
>>>>>>
>>>>>> Caused by: com.evolveum.midpoint.util.exception.SystemException: JDBC
>>>>>> URL must be specified (either explicitly or in SQL repository
>>>>>> configuration).
>>>>>>
>>>>>> Caused by: com.evolveum.midpoint.util.exception.SystemException: JDBC
>>>>>> user name must be specified (either explicitly or in SQL repository
>>>>>> configuration).
>>>>>>
>>>>>> So the configuration prescribed here :
>>>>>>
>>>>>> <configuration>
>>>>>>     <midpoint>
>>>>>>         <repository>
>>>>>>
>>>>>> <repositoryServiceFactoryClass>com.evolveum.midpoint.repo.sql.SqlRepositoryFactory</repositoryServiceFactoryClass>
>>>>>>             <embedded>false</embedded>
>>>>>>
>>>>>> <hibernateDialect>com.evolveum.midpoint.repo.sql.util.MidPointMySQLDialect</hibernateDialect>
>>>>>>             <hibernateHbm2ddl>validate</hibernateHbm2ddl>
>>>>>>             <dataSource>java:comp/env/jdbc/mysql</dataSource>
>>>>>>         </repository>
>>>>>>     </midpoint>
>>>>>> </configuration>
>>>>>>
>>>>>> does not work, I had to pretty much add in the rest of it (essentially
>>>>>> what I had before moving to the DS configuration -
>>>>>> https://wiki.evolveum.com/display/midPoint/MySQL). So I'm not sure if
>>>>>> the DS is really being used, if you know what I mean...?
>>>>>>
>>>>>> Thanks
>>>>>> -deepak
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> midPoint mailing list
>>>>>> midPoint at lists.evolveum.com
>>>>>> http://lists.evolveum.com/mailman/listinfo/midpoint
>>> -- 
>>>   Ing. Ivan Noris
>>>   Senior Identity Management Engineer
>>>   evolveum.com
>>>   ___________________________________________
>>>            "Idem per idem - semper idem Vix."
>>>
>>> _______________________________________________
>>> midPoint mailing list
>>> midPoint at lists.evolveum.com
>>> http://lists.evolveum.com/mailman/listinfo/midpoint
>>
>>
>> _______________________________________________
>> midPoint mailing list
>> midPoint at lists.evolveum.com
>> http://lists.evolveum.com/mailman/listinfo/midpoint
> 
> -- 
>   Ing. Ivan Noris
>   Senior Identity Management Engineer
>   evolveum.com
>   ___________________________________________
>            "Idem per idem - semper idem Vix."
> 
> _______________________________________________
> midPoint mailing list
> midPoint at lists.evolveum.com
> http://lists.evolveum.com/mailman/listinfo/midpoint

-- 
Deepak Natarajan
Director

Trilobyte Systems ApS

Falkoner Alle 1, 3            Fredrikinkatu 61A, 6th Floor
2000 Frederiksberg         Business Center Papula
Denmark                          00100 Helsinki
                                        Finland

Tel : +45 29375068
http://www.trilobytesystems.com





More information about the midPoint mailing list