>On Mar 14, 2006, at 7:58 AM, johnxmas wrote:
>
>> Hi List,
>>
>> I have a Resource Adapter (both inbound and outbound) and an
>> MDB. When the MBD is called, it tries to use the oubound part of
>> the RA, looking up
>> for the ConnectionFactory, the InteractionSpec and the
>> ConnectionSpec (the two laters
>> having been deployead as admin objects)
>>
>> My questions:
>>
>> a) how are the jndi-names of this three objects declared in
>> geronimo-ra.xml
>
>We don't have global jndi context, so the jndi names you can use are
>really determined by the ejb-jar.xml + openejb-jar.xml. The name you
>specify in the geronimo-ra.xml for the admin object also has
>something to do with it :-)
Here is my geronimo-ra.xml
<?xml version="1.0" encoding="UTF-8"?>
<connector xmlns="http://geronimo.apache.org/xml/ns/j2ee/connector"
configId="ScortJcaAdapter15"
version="1.5">
<resourceadapter>
<resourceadapter-instance>
<resourceadapter-name>ScortJcaAdapter15</resourceadapter-name>
<workmanager>
<gbean-link>DefaultWorkManager</gbean-link>
</workmanager>
</resourceadapter-instance>
<outbound-resourceadapter>
<connection-definition>
<connectionfactory-interface>javax.resource.cci.ConnectionFactory</connectionfactory-interface>
<connectiondefinition-instance>
<name>demoInbound.managedConnectionFactory</name>
<implemented-interface>com.scort.ctg.cics.eci.jca.EciConnectionFactory</implemented-interface>
<connectionmanager>
<xa-transaction>
<transaction-caching/>
</xa-transaction>
<single-pool>
<max-size>10</max-size>
<blocking-timeout-milliseconds>5000</blocking-timeout-milliseconds>
<match-one/>
</single-pool>
</connectionmanager>
</connectiondefinition-instance>
</connection-definition>
</outbound-resourceadapter>
</resourceadapter>
<adminobject>
<adminobject-interface>com.scort.ctg.cics.eci.jca.EciConnectionSpecInterface</adminobject-interface>
<adminobject-class>com.scort.ctg.cics.eci.jca.EciConnectionSpec</adminobject-class>
<adminobject-instance>
<message-destination-name>demoInbound.CS</message-destination-name>
<config-property-setting name="userName">aa</config-property-setting>
<config-property-setting name="password">aa</config-property-setting>
</adminobject-instance>
</adminobject>
<adminobject>
<adminobject-interface>com.scort.ctg.cics.eci.jca.EciInteractionSpecInterface</adminobject-interface>
<adminobject-class>com.scort.ctg.cics.eci.jca.EciInteractionSpec</adminobject-class>
<adminobject-instance>
<message-destination-name>demoInbound.IS</message-destination-name>
<config-property-setting
name="commareaLength">20000</config-property-setting>
<config-property-setting
name="compactOutgoingData">true</config-property-setting>
<config-property-setting
name="dumpCodePage">cp037</config-property-setting>
<config-property-setting
name="executionTimeout">10000</config-property-setting>
<config-property-setting name="mode">1</config-property-setting>
</adminobject-instance>
</adminobject>
</connector>
>>
>> b) must my MDB have a resource-ref entry on these objects ?
>
>It needs a resource-ref for the connection factory and a resource-env-
>ref for each of the InteractionSpec and ConnectionSpecs. We've added
>a resource-env-link element that may be helpful to shorten the
>openejb-jar.xml entry you will need, but I think it only works within
>an ear, so you may well have to specify the target admin object fully.
BTW, my MDB is deployed as an ear
Here are my ebj-jar.xml and openejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"
version="2.1">
<enterprise-beans>
<message-driven>
<ejb-name>ScortInboundCustListMdb</ejb-name>
<ejb-class>com.scort.inbound.test.custlist.GeronimoInboundCustListMdb</ejb-class>
<messaging-type>com.scort.inbound.jca.api.InboundListener</messaging-type>
<transaction-type>Container</transaction-type>
<activation-config>
<activation-config-property>
<activation-config-property-name>id</activation-config-property-name>
<activation-config-property-value>CUSTLIST</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>port</activation-config-property-name>
<activation-config-property-value>23072</activation-config-property-value>
</activation-config-property>
</activation-config>
</message-driven>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>ScortInboundCustListMdb</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>NotSupported</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
<openejb-jar
xmlns="http://www.openejb.org/xml/ns/openejb-jar"
xmlns:naming="http://geronimo.apache.org/xml/ns/naming"
xmlns:security="http://geronimo.apache.org/xml/ns/security"
xmlns:sys="http://geronimo.apache.org/xml/ns/deployment"
configId="ScortInboundCustListMdb"
parentId="ScortInboundCustListMessageDrivenBean">
<enterprise-beans>
<message-driven>
<ejb-name>ScortInboundCustListMdb</ejb-name>
<!--
<resource-adapter>
<target-name>geronimo.server:J2EEApplication=null,J2EEServer=geronimo,JCAResource=ScortJcaAdapter15,j2eeType=JCAResourceAdapter,name=ScortJcaAdapter15</target-name>
</resource-adapter>
-->
<resource-adapter>
<resource-link>ScortJcaAdapter15</resource-link>
</resource-adapter>
<activation-config>
<activation-config-property>
<activation-config-property-name>id</activation-config-property-name>
<activation-config-property-value>CUSTLIST</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>port</activation-config-property-name>
<activation-config-property-value>23072</activation-config-property-value>
</activation-config-property>
</activation-config>
<resource-ref>
<ref-name>demoInbound.managedConnectionFactory</ref-name>
<resource-link>demoInbound.managedConnectionFactory</resource-link>
</resource-ref>
<resource-env-ref>
<ref-name>demoInbound.IS</ref-name>
<message-destination-link>demoInbound.IS</message-destination-link>
</resource-env-ref>
</resource-env-ref>
</message-driven>
</enterprise-beans>
</openejb-jar>
Is that correct ?
I tried looking up an adminobject (the InteractionSpec) using as names
"demoInBound.IS",
"java:demoInbound.IS", "java:comp/demoInbound.IS",
"java:comp/env/demoInbound.IS".
No way: NameNotFoundException.
I tried listing the JNDI
context.listBindings("");
only shows
JMXConnector: javax.management.remote.rmi.RMIServerImpl_Stub:javax.manageme
nt.remote.rmi.RMIServerImpl_Stub[RemoteStub [ref: [endpoint:[10.1.10.53:1843](re
mote),objID:[0]]]]
and context.listBindings("java:") does not show anything
>AFAIK no one has tried using admin objects for anything but jms
>destinations before.
AdminObject are for me a precious features of JCA 1.5, allowing to deploy
InteractionSpec
and ConnectionSpec in the RA and saving a lot of further class loaders
problems....
As regards the INBOUND part, I do regret that it seems for most people only to
deal with
JMS (try googling !). My Ra needs to be INBOUND and does not do JMS
> I think that when you look up an admin object
>in jndi you get a proxy to the actual object: this may cause problems
>with your objects. Please let us know what happens, we may need to
>make some changes in exactly what we are returning.
I will let you know with great pleasure, as soon as I will succeed, which I'm
beginnig to doubt
(after lot of deployment troubles, see further mails, now JNDI problems !) :-D
Thanks
Jean-Noël