You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by Lasantha Ranaweera <la...@opensource.lk> on 2006/09/18 14:17:11 UTC

How to Access Geronimo Resources from a Web Application?

Hi All,

I want get the list of database connections deployed in the Geronimo 
from a web application. Any help would be appreciated.

Thanks,
Lasantha Ranaweera

Re: How to Access Geronimo Resources from a Web Application?

Posted by Lasantha Ranaweera <la...@opensource.lk>.
Thanks!!! It definitely helps.  :-)

David Jencks wrote:
> This won't quite work. There's no guarantee that a JCA 1.5 adapter 
> with a ResourceAdapter is going to have any outbound connectors at 
> all, nor will this pick up any jca 1.0 adapters without a 
> ResourceAdapter.
>
> What you want is to use ConnectionFactorySource as the interface in 
> your query.
>
> ConnectionFactorySource isn't the connection factory itself, you have 
> to call the oddly named method $getResource(). This could be a 
> datasource, a jms ConnectionFactory, or just about anything else, so 
> you have to test the results to see if its something you want.
>
>
> Kernel kernel = KernelRegistry.getSingleKernel();
> Collection cfss = kernel.listGBeans(new 
> AbstractNameQuery(ConnectionFactorySource.class.getName()));
> Collection datasources = new ArrayList();
> for (Iterator i = cfss.iterator(); i.hasNext(); ) {
> Object cf = kernel.invoke((AbstractName)i.next(), "$getResource", new 
> Object[] {}, new String[]{}); //this might not be the right signature 
> for the invoke method-- this is from memory
> if (cf instanceof DataSource) {
> datasources.add(cf);
> }
> }
>
> Hope this helps
> david jencks
>
>
>
> On Sep 19, 2006, at 10:51 PM, Lasantha Ranaweera wrote:
>
>> Hi Aaron,
>>
>> I want to test the existing db connections in the Geronimo with the 
>> help of a web application. Following code helped me to list the 
>> resource adapters in the server. Now my problem is how to identify 
>> which are the db connection adapters and convert them in to 
>> javax.sql.DataSource.
>>
>> Kernel kernel = KernelRegistry.getSingleKernel();
>> Set list = kernel.listGBeans(new 
>> AbstractNameQuery(ResourceAdapter.class.getName()));
>> for(Iterator iterator = list.iterator();iterator.hasNext();){
>> AbstractName name = (AbstractName)iterator.next();
>> ResourceAdapter ra = 
>> (ResourceAdapter)(kernel.getProxyManager().createProxy(name, 
>> ResourceAdapter.class));
>> //How to indentify is this ra is DataSource or not
>> }
>>
>> Any help would be appreciated. If this is can be done better way than 
>> this please let me know too.
>> Thanks,
>> Lasantha Ranaweera
>>
>> Aaron Mulder wrote:
>>> In Geronimo 1.1, you can use a gbean-ref to map the J2EEServer into
>>> the web application's JNDI space. From the J2EEServer, you can
>>> navigate to a list of resource adapters (J2EE Connectors), and I think
>>> there's a way to check which connection factory interface they
>>> implement (you'd want javax.sql.DataSource). There's probably a
>>> method in KernelManagementHelper that more or less does that (given a
>>> server get database connection pools) if you want something to refer
>>> to.
>>>
>>> Please write back if you need help with the details.
>>>
>>> Thanks,
>>> Aaron
>>>
>>> On 9/18/06, Lasantha Ranaweera <la...@opensource.lk> wrote:
>>>> Hi All,
>>>>
>>>> I want get the list of database connections deployed in the Geronimo
>>>> from a web application. Any help would be appreciated.
>>>>
>>>> Thanks,
>>>> Lasantha Ranaweera
>>>>
>>>
>>
>
>


Re: How to Access Geronimo Resources from a Web Application?

Posted by David Jencks <da...@yahoo.com>.
This won't quite work.  There's no guarantee that a JCA 1.5 adapter  
with a ResourceAdapter is going to have any outbound connectors at  
all, nor will this pick up any jca 1.0 adapters without a  
ResourceAdapter.

What you want is to use ConnectionFactorySource as the interface in  
your query.

ConnectionFactorySource isn't the connection factory itself, you have  
to call the oddly named method $getResource().  This could be a  
datasource, a jms ConnectionFactory, or just about anything else, so  
you have to test the results to see if its something you want.


Kernel kernel = KernelRegistry.getSingleKernel();
Collection cfss = kernel.listGBeans(new AbstractNameQuery 
(ConnectionFactorySource.class.getName()));
Collection datasources = new ArrayList();
for (Iterator i = cfss.iterator(); i.hasNext(); ) {
     Object cf = kernel.invoke((AbstractName)i.next(),  
"$getResource", new Object[] {}, new String[]{});  //this might not  
be the right signature for the invoke method-- this is from memory
    if (cf instanceof DataSource) {
       datasources.add(cf);
    }
}

Hope this helps
david jencks



On Sep 19, 2006, at 10:51 PM, Lasantha Ranaweera wrote:

> Hi Aaron,
>
> I want to test the existing db connections in the Geronimo with the  
> help of a web application. Following code  helped me to list the  
> resource adapters in the server. Now my problem is how to identify  
> which are the  db connection adapters and convert them in to  
> javax.sql.DataSource.
>
> Kernel kernel = KernelRegistry.getSingleKernel();
>              Set list = kernel.listGBeans(new AbstractNameQuery 
> (ResourceAdapter.class.getName()));
>        for(Iterator iterator = list.iterator();iterator.hasNext();){
>            AbstractName name = (AbstractName)iterator.next();
>                      ResourceAdapter ra = (ResourceAdapter) 
> (kernel.getProxyManager().createProxy(name, ResourceAdapter.class));
>                      //How to indentify is this ra is DataSource or  
> not
>                  }
>
> Any help would be appreciated. If this is can be done better way  
> than this please let me know too.
> Thanks,
> Lasantha Ranaweera
>
> Aaron Mulder wrote:
>> In Geronimo 1.1, you can use a gbean-ref to map the J2EEServer into
>> the web application's JNDI space.  From the J2EEServer, you can
>> navigate to a list of resource adapters (J2EE Connectors), and I  
>> think
>> there's a way to check which connection factory interface they
>> implement (you'd want javax.sql.DataSource).  There's probably a
>> method in KernelManagementHelper that more or less does that (given a
>> server get database connection pools) if you want something to refer
>> to.
>>
>> Please write back if you need help with the details.
>>
>> Thanks,
>>     Aaron
>>
>> On 9/18/06, Lasantha Ranaweera <la...@opensource.lk> wrote:
>>> Hi All,
>>>
>>> I want get the list of database connections deployed in the Geronimo
>>> from a web application. Any help would be appreciated.
>>>
>>> Thanks,
>>> Lasantha Ranaweera
>>>
>>
>


Re: How to Access Geronimo Resources from a Web Application?

Posted by Lasantha Ranaweera <la...@opensource.lk>.
Hi Aaron,

I want to test the existing db connections in the Geronimo with the help 
of a web application. Following code  helped me to list the resource 
adapters in the server. Now my problem is how to identify which are the  
db connection adapters and convert them in to javax.sql.DataSource.

Kernel kernel = KernelRegistry.getSingleKernel();
       
        Set list = kernel.listGBeans(new 
AbstractNameQuery(ResourceAdapter.class.getName()));
        for(Iterator iterator = list.iterator();iterator.hasNext();){
            AbstractName name = (AbstractName)iterator.next();
           
            ResourceAdapter ra = 
(ResourceAdapter)(kernel.getProxyManager().createProxy(name, 
ResourceAdapter.class));
           
            //How to indentify is this ra is DataSource or not
           
        }

Any help would be appreciated. If this is can be done better way than 
this please let me know too.
Thanks,
Lasantha Ranaweera

Aaron Mulder wrote:
> In Geronimo 1.1, you can use a gbean-ref to map the J2EEServer into
> the web application's JNDI space.  From the J2EEServer, you can
> navigate to a list of resource adapters (J2EE Connectors), and I think
> there's a way to check which connection factory interface they
> implement (you'd want javax.sql.DataSource).  There's probably a
> method in KernelManagementHelper that more or less does that (given a
> server get database connection pools) if you want something to refer
> to.
>
> Please write back if you need help with the details.
>
> Thanks,
>     Aaron
>
> On 9/18/06, Lasantha Ranaweera <la...@opensource.lk> wrote:
>> Hi All,
>>
>> I want get the list of database connections deployed in the Geronimo
>> from a web application. Any help would be appreciated.
>>
>> Thanks,
>> Lasantha Ranaweera
>>
>


Re: How to Access Geronimo Resources from a Web Application?

Posted by Aaron Mulder <am...@alumni.princeton.edu>.
In Geronimo 1.1, you can use a gbean-ref to map the J2EEServer into
the web application's JNDI space.  From the J2EEServer, you can
navigate to a list of resource adapters (J2EE Connectors), and I think
there's a way to check which connection factory interface they
implement (you'd want javax.sql.DataSource).  There's probably a
method in KernelManagementHelper that more or less does that (given a
server get database connection pools) if you want something to refer
to.

Please write back if you need help with the details.

Thanks,
     Aaron

On 9/18/06, Lasantha Ranaweera <la...@opensource.lk> wrote:
> Hi All,
>
> I want get the list of database connections deployed in the Geronimo
> from a web application. Any help would be appreciated.
>
> Thanks,
> Lasantha Ranaweera
>