You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@hivemind.apache.org by Hugo Palma <hp...@digitalis.pt> on 2005/03/03 16:54:13 UTC

DataSource from JNDI tree

Hi, i'm having some trouble in grasping all the concepts behind hivemind 
so i'd like to ask for some help in what i think should be a pretty easy 
thing to do.
What i want is just to get a data source from the app server jndi tree. 
I've found an example of getting a data source in the 
wiki(http://wiki.apache.org/jakarta-hivemind/DatasourceService) and i 
know i have to use the hivemind.lib.NameLookup service, but i just 
haven't been able to figure out how. An example of how to do this would 
be great.


Thanks.

Hugo

---------------------------------------------------------------------
To unsubscribe, e-mail: hivemind-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: hivemind-user-help@jakarta.apache.org


Re: DataSource from JNDI tree

Posted by Achim Huegen <ah...@gmx-topmail.de>.
Sorry, I overlooked this small detail ;-)
Like Knut mentioned, a possible solution is a JndiServiceFactory.
You can also use object providers 
(http://jakarta.apache.org/hivemind/hivemind/ObjectProviders.html).

1. Implement a new object provider
2. Register and use the new provider in your hivemind descriptor.

The jndi: prefix tells hivemind to use the new provider for
retrieving an instance.

Bye
Achim


<module id="test" version="1.0.0">
	
   <service-point id="JndiObjectProvider" 
interface="org.apache.hivemind.service.ObjectProvider">
     <invoke-factory>
       <construct class="test.JndiObjectProvider">
         <set-object property="nameService" 
value="hivemind.lib.NameService"/>
       </construct>
     </invoke-factory>
   </service-point>

   <contribution configuration-id="hivemind.ObjectProviders">
     <provider prefix="jndi" service-id="JndiObjectProvider"/>
   </contribution>
   	
   <service-point id="Consumer" interface="java.lang.Runnable">
     <invoke-factory>
       <construct class="test.Consumer">
         <set-object property="dataSource" 
value="jndi:java:/comp/env/jdbc/TestDB"/>
       </construct>
     </invoke-factory>
   </service-point>
	
</module>


package test;

import org.apache.hivemind.Location;
import org.apache.hivemind.internal.Module;
import org.apache.hivemind.lib.NameLookup;
import org.apache.hivemind.service.ObjectProvider;

public class JndiObjectProvider implements ObjectProvider
{
	private NameLookup _nameLookup;

	public JndiObjectProvider()
	{
		super();
	}

	public Object provideObject(Module contributingModule, Class propertyType,
		String locator, Location location)
	{
		return _nameLookup.lookup(locator, Object.class);
	}

	
	public NameLookup getNameLookup()
	{
		return _nameLookup;
	}

	public void setNameLookup(NameLookup Lookup)
	{
		_nameLookup = Lookup;
	}
}



Hugo Palma wrote:
> You didn't get the datasource from the jndi tree. I think it has to be 
> through the NameLookup service.
> 
> Do you know how to do this ?
> 
> Thanks.
> 
> Hugo
> 
> Achim Huegen wrote:
> 
>> Ok, let's start with the DataSource declaration from the wiki:
>>
>>   <service-point id="DefaultDataSource" nterface="javax.sql.DataSource">
>>         <invoke-factory service-id="hivemind.BuilderFactory">
>>             <construct class="org.apache.commons.dbcp.BasicDataSource">
>>                ....
>>             </construct>
>>         </invoke-factory>
>>   </service-point>
>>
>> To inject this datasource in a service Consumer :
>>
>> <service-point id="Consumer" interface="...">
>>   <invoke-factory>
>>    <construct class="impl.TaskExecutor">
>>      <set-service service-id="DefaultDataSource" property="dataSource"/>
>>    </construct>
>>   </invoke-factory>
>> </service-point>
>>
>> Hivemind will call the setter 
>> setDefaultDataSource(javax.sql.DataSource)  and hand over a reference 
>> to the DefaultDataSource.
>>
>> I hope this helps
>>
>> Achim
>>
>>
>>
>> Hugo Palma wrote:
>>
>>> Forgot to say one thing.
>>> I know how to get the data source in java code, after i've declared 
>>> the NameLookup service in my module. What i want is to get the 
>>> datasource and inject it as a property of another service. All this 
>>> in the module descriptor.
>>>
>>> Thanks.
>>>
>>> Hugo
>>>
>>> Hugo Palma wrote:
>>>
>>>> Hi, i'm having some trouble in grasping all the concepts behind 
>>>> hivemind so i'd like to ask for some help in what i think should be 
>>>> a pretty easy thing to do.
>>>> What i want is just to get a data source from the app server jndi 
>>>> tree. I've found an example of getting a data source in the 
>>>> wiki(http://wiki.apache.org/jakarta-hivemind/DatasourceService) and 
>>>> i know i have to use the hivemind.lib.NameLookup service, but i just 
>>>> haven't been able to figure out how. An example of how to do this 
>>>> would be great.
>>>>
>>>>
>>>> Thanks.
>>>>
>>>> Hugo
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: hivemind-user-unsubscribe@jakarta.apache.org
>>>> For additional commands, e-mail: hivemind-user-help@jakarta.apache.org
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: hivemind-user-unsubscribe@jakarta.apache.org
>>> For additional commands, e-mail: hivemind-user-help@jakarta.apache.org
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: hivemind-user-unsubscribe@jakarta.apache.org
>> For additional commands, e-mail: hivemind-user-help@jakarta.apache.org
>>
>>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: hivemind-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: hivemind-user-help@jakarta.apache.org
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: hivemind-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: hivemind-user-help@jakarta.apache.org


Re: DataSource from JNDI tree

Posted by Knut Wannheden <kn...@gmail.com>.
Hugo,

I think you will have to implement a simple HiveMind service factory
(e.g. JndiServiceFactory). Inject the NameLookup service into this
factory and construct the service instances using that.

HTH,

--knut

On Mon, 07 Mar 2005 13:18:40 +0000, Hugo Palma <hp...@digitalis.pt> wrote:
> You didn't get the datasource from the jndi tree. I think it has to be
> through the NameLookup service.
> 
> Do you know how to do this ?
> 
> Thanks.
> 
> Hugo
> 
> Achim Huegen wrote:
> 
> > Ok, let's start with the DataSource declaration from the wiki:
> >
> >   <service-point id="DefaultDataSource" nterface="javax.sql.DataSource">
> >         <invoke-factory service-id="hivemind.BuilderFactory">
> >             <construct class="org.apache.commons.dbcp.BasicDataSource">
> >                ....
> >             </construct>
> >         </invoke-factory>
> >   </service-point>
> >
> > To inject this datasource in a service Consumer :
> >
> > <service-point id="Consumer" interface="...">
> >   <invoke-factory>
> >    <construct class="impl.TaskExecutor">
> >      <set-service service-id="DefaultDataSource" property="dataSource"/>
> >    </construct>
> >   </invoke-factory>
> > </service-point>
> >
> > Hivemind will call the setter
> > setDefaultDataSource(javax.sql.DataSource)  and hand over a reference
> > to the DefaultDataSource.
> >
> > I hope this helps
> >
> > Achim
> >
> >
> >
> > Hugo Palma wrote:
> >
> >> Forgot to say one thing.
> >> I know how to get the data source in java code, after i've declared
> >> the NameLookup service in my module. What i want is to get the
> >> datasource and inject it as a property of another service. All this
> >> in the module descriptor.
> >>
> >> Thanks.
> >>
> >> Hugo
> >>
> >> Hugo Palma wrote:
> >>
> >>> Hi, i'm having some trouble in grasping all the concepts behind
> >>> hivemind so i'd like to ask for some help in what i think should be
> >>> a pretty easy thing to do.
> >>> What i want is just to get a data source from the app server jndi
> >>> tree. I've found an example of getting a data source in the
> >>> wiki(http://wiki.apache.org/jakarta-hivemind/DatasourceService) and
> >>> i know i have to use the hivemind.lib.NameLookup service, but i just
> >>> haven't been able to figure out how. An example of how to do this
> >>> would be great.
> >>>
> >>>
> >>> Thanks.
> >>>
> >>> Hugo
> >>>
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail: hivemind-user-unsubscribe@jakarta.apache.org
> >>> For additional commands, e-mail: hivemind-user-help@jakarta.apache.org
> >>>
> >>>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: hivemind-user-unsubscribe@jakarta.apache.org
> >> For additional commands, e-mail: hivemind-user-help@jakarta.apache.org
> >>
> >>
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: hivemind-user-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: hivemind-user-help@jakarta.apache.org
> >
> >
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: hivemind-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: hivemind-user-help@jakarta.apache.org
> 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: hivemind-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: hivemind-user-help@jakarta.apache.org


Re: DataSource from JNDI tree

Posted by Hugo Palma <hp...@digitalis.pt>.
You didn't get the datasource from the jndi tree. I think it has to be 
through the NameLookup service.

Do you know how to do this ?

Thanks.

Hugo

Achim Huegen wrote:

> Ok, let's start with the DataSource declaration from the wiki:
>
>   <service-point id="DefaultDataSource" nterface="javax.sql.DataSource">
>         <invoke-factory service-id="hivemind.BuilderFactory">
>             <construct class="org.apache.commons.dbcp.BasicDataSource">
>                ....
>             </construct>
>         </invoke-factory>
>   </service-point>
>
> To inject this datasource in a service Consumer :
>
> <service-point id="Consumer" interface="...">
>   <invoke-factory>
>    <construct class="impl.TaskExecutor">
>      <set-service service-id="DefaultDataSource" property="dataSource"/>
>    </construct>
>   </invoke-factory>
> </service-point>
>
> Hivemind will call the setter 
> setDefaultDataSource(javax.sql.DataSource)  and hand over a reference 
> to the DefaultDataSource.
>
> I hope this helps
>
> Achim
>
>
>
> Hugo Palma wrote:
>
>> Forgot to say one thing.
>> I know how to get the data source in java code, after i've declared 
>> the NameLookup service in my module. What i want is to get the 
>> datasource and inject it as a property of another service. All this 
>> in the module descriptor.
>>
>> Thanks.
>>
>> Hugo
>>
>> Hugo Palma wrote:
>>
>>> Hi, i'm having some trouble in grasping all the concepts behind 
>>> hivemind so i'd like to ask for some help in what i think should be 
>>> a pretty easy thing to do.
>>> What i want is just to get a data source from the app server jndi 
>>> tree. I've found an example of getting a data source in the 
>>> wiki(http://wiki.apache.org/jakarta-hivemind/DatasourceService) and 
>>> i know i have to use the hivemind.lib.NameLookup service, but i just 
>>> haven't been able to figure out how. An example of how to do this 
>>> would be great.
>>>
>>>
>>> Thanks.
>>>
>>> Hugo
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: hivemind-user-unsubscribe@jakarta.apache.org
>>> For additional commands, e-mail: hivemind-user-help@jakarta.apache.org
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: hivemind-user-unsubscribe@jakarta.apache.org
>> For additional commands, e-mail: hivemind-user-help@jakarta.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: hivemind-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: hivemind-user-help@jakarta.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: hivemind-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: hivemind-user-help@jakarta.apache.org


Re: DataSource from JNDI tree

Posted by Achim Huegen <ah...@gmx-topmail.de>.
Ok, let's start with the DataSource declaration from the wiki:

   <service-point id="DefaultDataSource" nterface="javax.sql.DataSource">
         <invoke-factory service-id="hivemind.BuilderFactory">
             <construct class="org.apache.commons.dbcp.BasicDataSource">
                ....
             </construct>
         </invoke-factory>
   </service-point>

To inject this datasource in a service Consumer :

<service-point id="Consumer" interface="...">
   <invoke-factory>
    <construct class="impl.TaskExecutor">
      <set-service service-id="DefaultDataSource" property="dataSource"/>
    </construct>
   </invoke-factory>
</service-point>

Hivemind will call the setter setDefaultDataSource(javax.sql.DataSource) 
  and hand over a reference to the DefaultDataSource.

I hope this helps

Achim



Hugo Palma wrote:
> Forgot to say one thing.
> I know how to get the data source in java code, after i've declared the 
> NameLookup service in my module. What i want is to get the datasource 
> and inject it as a property of another service. All this in the module 
> descriptor.
> 
> Thanks.
> 
> Hugo
> 
> Hugo Palma wrote:
> 
>> Hi, i'm having some trouble in grasping all the concepts behind 
>> hivemind so i'd like to ask for some help in what i think should be a 
>> pretty easy thing to do.
>> What i want is just to get a data source from the app server jndi 
>> tree. I've found an example of getting a data source in the 
>> wiki(http://wiki.apache.org/jakarta-hivemind/DatasourceService) and i 
>> know i have to use the hivemind.lib.NameLookup service, but i just 
>> haven't been able to figure out how. An example of how to do this 
>> would be great.
>>
>>
>> Thanks.
>>
>> Hugo
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: hivemind-user-unsubscribe@jakarta.apache.org
>> For additional commands, e-mail: hivemind-user-help@jakarta.apache.org
>>
>>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: hivemind-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: hivemind-user-help@jakarta.apache.org
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: hivemind-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: hivemind-user-help@jakarta.apache.org


Re: DataSource from JNDI tree

Posted by Hugo Palma <hp...@digitalis.pt>.
Forgot to say one thing.
I know how to get the data source in java code, after i've declared the 
NameLookup service in my module. What i want is to get the datasource 
and inject it as a property of another service. All this in the module 
descriptor.

Thanks.

Hugo

Hugo Palma wrote:

> Hi, i'm having some trouble in grasping all the concepts behind 
> hivemind so i'd like to ask for some help in what i think should be a 
> pretty easy thing to do.
> What i want is just to get a data source from the app server jndi 
> tree. I've found an example of getting a data source in the 
> wiki(http://wiki.apache.org/jakarta-hivemind/DatasourceService) and i 
> know i have to use the hivemind.lib.NameLookup service, but i just 
> haven't been able to figure out how. An example of how to do this 
> would be great.
>
>
> Thanks.
>
> Hugo
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: hivemind-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: hivemind-user-help@jakarta.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: hivemind-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: hivemind-user-help@jakarta.apache.org