Hmm, I dont have much time to check you exact setup and what is needed but
here few pointers:

- tomee.xml datasource are shared accross the server so RA should be able
to lookup it
- ra properties can be overwriten using system properties (ra name.property
= value)
- you can cast your ConnectionFactory to all types it implements using
class-name


Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber
<http://www.tomitribe.com>

2015-07-20 14:37 GMT-07:00 Mike Spencer <[email protected]>:

> Using class-name with the implementation worked, but it turns out that
> isn't what I needed. I am going to take a step back and try to describe
> what I am trying to do.
>
> I have a resource adapter packaged in a .rar file that includes the JCA
> implementation .jar and a ra.xml in the META-INF folder. It appears to be
> deploying to TomEE successfully. It makes two Resources available - one for
> the <connector id="Connector_ID"> root element and one for the
> <resourceadapter> using the <resourceadapter id="ra-id"> tag. These
> resources are currently *not* defined in the tomee.xml file.
>
> I need to configure two additional properties outside of the ra.xml as
> they are specific to the server that the resource adapter is deployed to.
> In Glassfish they are defined as properties on the
> <connector-connection-pool> tag. JBoss defines them in a ra-name-ds.xml
> file. These properties are configuring a
> javax.resource.spi.ManagedConnectionFactory implementation.
>
> In addition, I need to make the javax.resource.cci.ConnectionFactory
> implementation class defined in the ra.xml available via a JNDI name.
> Glassfish defines this a a <connector-resource> element that references the
> <connector-connection-pool> element above. JBoss defines this information
> in the ra-name-ds.xml file.
>
> In my previous attempt, I configured the additional properties using a
> <Resource class-name="ManagedConnectionFactory impl"> and made that
> available via JNDI. It turned out that I did not need that implementation
> but instead I need the javax.resource.cci.ConnectionFactory.
>
> Thanks,
> Mike Spencer
>
>
> On 07/17/2015 04:00 PM, Romain Manni-Bucau wrote:
>
>> 2015-07-17 12:48 GMT-07:00 Mike Spencer <[email protected]>:
>>
>>  Hi Romain,
>>>
>>> Using class-name allowed it to get past the 'Cannot determine a provider'
>>> message, but now I am encountering a new error.
>>>
>>> This error occurs when using <Resource id="ra-jrac"
>>> class-name"javax.resource.cci.ConnectionFactory"></Resource> in
>>> tomee.xml:
>>>
>>>
>>>  class-name should use the actual implementation - it means you
>> instantiate
>> yourself the class by this definition, also means the jar in the rar needs
>> to be added in tomee/lib
>>
>>
>>  SEVERE: FATAL ERROR: Unknown error in Assembler.  Please send the
>>> following stack trace and this message to [email protected] :
>>>   org.apache.xbean.recipe.ConstructionException: Class is an interface:
>>> javax.resource.cci.ConnectionFactory
>>>
>>> When I try to use the concrete implementation
>>> (class-name="com.unisys.coms.connector.COMSManagedConnectionFactory") I
>>> get
>>> the following error:
>>>
>>> SEVERE: FATAL ERROR: Unknown error in Assembler.  Please send the
>>> following stack trace and this message to [email protected] :
>>>   org.apache.xbean.recipe.ConstructionException: Type class could not be
>>> found: com.unisys.coms.connector.COMSConnectionFactory
>>>
>>> The resource adapter I am deploying contains that class. The log says
>>> that
>>> the .rar is loaded before this error occurs. What could be the reason
>>> that
>>> the Resource definition can't find the class?
>>>
>>> Thanks,
>>> Mike
>>>
>>>
>>> On 07/17/2015 02:04 PM, Romain Manni-Bucau wrote:
>>>
>>>  Hi
>>>>
>>>> Using class-name in Resource declaration should make it.
>>>>
>>>> That said <ra name as logged>.<property> =<value> in
>>>> conf/system.properties
>>>> should work IIRC.
>>>>    Le 17 juil. 2015 20:32, "Mike Spencer" <[email protected]> a
>>>> écrit :
>>>>
>>>>   Hi all,
>>>>
>>>>> I am trying to migrate an application using a resource adapter in a
>>>>> .rar
>>>>> file from Glassfish to TomEE. The resource adapter needs to be deployed
>>>>> globally (so multiple application can access it) and make the
>>>>> javax.resource.cci.ConnectionFactory implementation available via JNDI.
>>>>>
>>>>> I believe I have deployed the resource adapter to TomEE by adding the
>>>>> line
>>>>> <Deployments dir="apps" /> in the tomee.xml file. I see the following
>>>>> lines
>>>>> in the logs afterwards, so I am assuming the .rar is detected and made
>>>>> available.
>>>>>
>>>>> INFO: Configuring enterprise application:
>>>>> /opt/apps/tomee-plume-1.7.1/apps/jrac-tweb.rar
>>>>> Jul 17, 2015 1:18:08 PM
>>>>> org.apache.openejb.config.OutputGeneratedDescriptors writeRaXml
>>>>> INFO: Dumping Generated ra.xml to:
>>>>> /opt/apps/tomee-plume-1.7.1/temp/ra-6993024062304172339Connector_ID.xml
>>>>> Jul 17, 2015 1:18:08 PM org.apache.openejb.config.ConfigurationFactory
>>>>> configureService
>>>>> INFO: Configuring Service(id=ra-jrac, type=Resource,
>>>>> provider-id=ra-jrac)
>>>>> Jul 17, 2015 1:18:08 PM org.apache.openejb.config.ConfigurationFactory
>>>>> configureService
>>>>> INFO: Configuring Service(id=Connector_ID, type=Resource,
>>>>> provider-id=Connector_ID)
>>>>> Jul 17, 2015 1:18:08 PM org.apache.openejb.config.AppInfoBuilder build
>>>>> INFO: Enterprise application
>>>>> "/opt/apps/tomee-plume-1.7.1/apps/jrac-tweb.rar" loaded.
>>>>>
>>>>> However, I cannot figure out how to configure properties on the
>>>>> resource
>>>>> adapter. I need to specify some configuration properties (username,
>>>>> password, etc). In Glassfish, I have the connector-connection-pool and
>>>>> connector-resource elements in the domain.xml where I can configure
>>>>> this
>>>>> information and set up a JNDI name for the connector.
>>>>>
>>>>> I tried to add a <Resource> block to the tomee.xml file, but it fails
>>>>> with
>>>>> the following message:
>>>>>
>>>>> SEVERE: Failed Configuring Service(id=ra-jrac)
>>>>> org.apache.openejb.config.NoSuchProviderException: Cannot determine a
>>>>> provider for Resource(id=ra-jrac,
>>>>> type=javax.resource.cci.ConnectionFactory, provider=null).
>>>>>
>>>>> Possible valid configurations might be:
>>>>>     <Resource id="ra-jrac" type="DataSource"/>
>>>>>     <Resource id="ra-jrac" type="javax.sql.DataSource"/>
>>>>>     <Resource id="ra-jrac" type="ActiveMQResourceAdapter"/>
>>>>>     <Resource id="ra-jrac" type="javax.jms.QueueConnectionFactory"/>
>>>>>     <Resource id="ra-jrac" type="TopicConnectionFactory"/>
>>>>>     <Resource id="ra-jrac" type="javax.jms.ConnectionFactory"/>
>>>>>     <Resource id="ra-jrac" type="javax.jms.TopicConnectionFactory"/>
>>>>>     <Resource id="ra-jrac" type="QueueConnectionFactory"/>
>>>>>     <Resource id="ra-jrac" type="javax.jms.Destination"/>
>>>>>     <Resource id="ra-jrac" type="javax.jms.Queue"/>
>>>>>     <Resource id="ra-jrac" type="Queue"/>
>>>>>     <Resource id="ra-jrac" type="javax.jms.Topic"/>
>>>>>     <Resource id="ra-jrac" type="Topic"/>
>>>>>     <Resource id="ra-jrac" type="ORB"/>
>>>>>     <Resource id="ra-jrac" type="org.omg.CORBA.ORB"/>
>>>>>     <Resource id="ra-jrac" type="javax.mail.Session"/>
>>>>>     <Resource id="ra-jrac"
>>>>> type="javax.enterprise.concurrent.ManagedExecutorService"/>
>>>>>     <Resource id="ra-jrac" type="ManagedExecutorService"/>
>>>>>     <Resource id="ra-jrac" type="ManagedScheduledExecutorService"/>
>>>>>     <Resource id="ra-jrac"
>>>>> type="javax.enterprise.concurrent.ManagedScheduledExecutorService"/>
>>>>>     <Resource id="ra-jrac"
>>>>> type="javax.enterprise.concurrent.ManagedThreadFactory"/>
>>>>>     <Resource id="ra-jrac" type="ManagedThreadFactory"/>
>>>>>     <Resource id="ra-jrac" type="ContextService"/>
>>>>>     <Resource id="ra-jrac"
>>>>> type="javax.enterprise.concurrent.ContextService"/>
>>>>>       at
>>>>>
>>>>>
>>>>> org.apache.openejb.config.ConfigurationFactory.configureService(ConfigurationFactory.java:1092)
>>>>>       at
>>>>>
>>>>>
>>>>> org.apache.openejb.config.ConfigurationFactory.getOpenEjbConfiguration(ConfigurationFactory.java:484)
>>>>>       ...
>>>>>
>>>>> I have also tried setting up a <Resource> in the context.xml file in
>>>>> the
>>>>> same way that I have database connections configured, hoping that would
>>>>> let
>>>>> me access the ConnectionFactory via JNDI, but my application fails to
>>>>> find
>>>>> the JNDI name.
>>>>>
>>>>> <Resource id="ra-jrac"
>>>>>                 name="foo/bar/baz"
>>>>>                 auth="Container"
>>>>>                 type="javax.resource.cci.ConnectionFactory"
>>>>>                 username="USERNAME"
>>>>>                 password="PASSWORD" />
>>>>>
>>>>> I am using TomEE-plume 1.7.1. It would be greatly appreciated if anyone
>>>>> can point me in the correct direction to get this configured.
>>>>>
>>>>> Thanks,
>>>>> Mike
>>>>>
>>>>>
>>>>>
>

Reply via email to