On Mar 15, 2006, at 12:55 AM, johnxmas wrote:
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>
>>>>>>>>>>>>>>>>>>>>>>>
In here, you need the resource-ref for the outbound adapter and
resource-env-refs for the admin objects.
>>>>>>>>>>>>>>>>>>>>>>>
</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,JCAResou
rce=ScortJcaAdapter15,j2eeType=JCAResourceAdapter,name=ScortJcaAdapter
15</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....
It's a good idea, I just never thought of it :-)
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
That should definitely work fine, there is nothing jms specific about
the geronimo connector implementation.
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
I think adding the missing bits to your spec dd for resource-ref and
resource-env-ref should fix that.
thanks
david jencks
Thanks
Jean-Noël