Hi,
thanks for the answer. I think I just wanted to overcompicate it as usual ;)
I wanted to have my DataSource(s) as private 'services' (objects) configured individually for each service which needs it.
But I guess that's just something I do not really need, and it's easier this way.
Istvan
Hello Istvan,
First of all the problem you describe is not actually related to configuration points and contributions in HiveMind. I think one easy way to do what you want is to do something like that:
<service-point id="DataSource1" interface="javax.sql.DataSource"> <invoke-factory service-id="hivemind.BuilderFactory"> <construct class="org.apache.commons.dbcp.BasicDataSource"> ... </construct> </invoke-factory> </service-point> <service-point id="DataSource2" interface="javax.sql.DataSource"> <invoke-factory service-id="hivemind.BuilderFactory"> <construct class="org.apache.commons.dbcp.BasicDataSource"> ... </construct> </invoke-factory> </service-point>
And then for any service that need access to DataSource1:
<service-point id="MyDAO" interface="com.acme.MyDAO"> <invoke-factory service-id="hivemind.BuilderFactory"> <construct class="com.acme.MyDAOImpl"> <set-service property="dataSource" service-id="DataSource1"> </construct> </invoke-factory> </service-point>
What is important here (it seems you missed that) is not to exclusively use <set> when you use BuilderFactory, but use the more appropriate <set-service>.
If you have a service that needs both DataSource 1 & 2, just do:
<service-point id="MyComplexDAO" interface="com.acme.MyComplexDAO"> <invoke-factory service-id="hivemind.BuilderFactory"> <construct class="com.acme.MyDAOComplexImpl"> <set-service property="dataSource1" service-id="DataSource1"> <set-service property="dataSource2" service-id="DataSource2"> </construct> </invoke-factory> </service-point>
Hope this helps
-----Original Message----- From: Istvan Orban [mailto:[EMAIL PROTECTED] Sent: Sunday, October 17, 2004 3:13 PM To: [email protected] Subject: Configuration ?
Hi,
I come across with an other problem. it seems the configuration and contribution part is not fully clear for in Hivemind.
I have some services which needs Database access, I have got 2 services accessing the same db, and an other which requests data from a second db.
I do not want to create 2 servicse for accessing the the 2 db, although I like this example as how easy to configure DB access with Hivemind
<service-point id="DefaultDataSource" interface="javax.sql.DataSource"> <invoke-factory service-id="hivemind.BuilderFactory"> <construct class="org.apache.commons.dbcp.BasicDataSource"> <set property="driverClassName" value="org.firebirdsql.jdbc.FBDriver"/> <set property="url" value="jdbc:firebirdsql:localhost/3050:D:/Firebird/data/etstore.gdb"/> <set property="username" value="SYSDBA"/> <set property="password" value="masterkey"/> </construct> </invoke-factory> </service-point>
My services has a property called Datasource and I would like to feed them somehow using the configuratoin power of Hivemind. But I'm little stuck how could I have 2 configurations where I have 2 pooled DataSource with all the config values set and when defining the 3 servies I would just bind the needed Datasource to the service.
Could someone give me some useful advices, or directions what should I use, or how could I achive this the best way.
Thanks a lot!
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
.
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
