I don't see what is wrong, everything looks correct to me. I would investigate by stepping through

ConnectorModuleBuilder.getActivationSpecInfoMap in a debugger while deploying the rar and

ConnectorModuleBuilder.locateActivationSpecInfo while deploying the mdb.

The first method puts the needed info about all the activation specs into a gbean for later reference, and the second method retrieves it when the mdb needs it.

thanks
david jencks

On Mar 9, 2006, at 7:06 AM, johnxmas wrote:


Thanks for your answer. But still stuck in problem

a) my Adapter configId (in geronimo-ra.xml) is ScortJcaAdapter15

b) following your advice, I added to my EAR the following geronimo- application.xml

<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://geronimo.apache.org/xml/ns/j2ee/ application"
             configId="EARPlan"
             parentId="ScortJcaAdapter15">

  <module>
    <ejb>inboundCustListMdb.jar</ejb>
    <alt-dd>openejb-jar.xml</alt-dd>
  </module>

</application>

c) and modified my openejb-jar.xml to change the parent
<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="EARPlan">
 <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>
        </message-driven>
 </enterprise-beans>

</openejb-jar>

So, no more ClassNotFoundException

But (alas),

Geronimo Application Server started
15:58:38,228 INFO [Hot Deployer] Deploying scortInboundMdbCustList.ear 15:58:40,931 ERROR [Hot Deployer] Unable to deploy: no activation spec found for resource adapter: geronimo.server:J2EEApplication=null,J2EEServer=geronimo,JCAR esource=ScortJcaAdapter15,j2eeType=JCAResourceAdapter,name=ScortJcaAda pter15 and
 message listener type: com.scort.inbound.jca.api.InboundListener
org.apache.geronimo.common.DeploymentException: no activation spec found for res ource adapter: geronimo.server:J2EEApplication=null,J2EEServer=geronimo,JCAResou rce=ScortJcaAdapter15,j2eeType=JCAResourceAdapter,name=ScortJcaAdapter 15 and mes
sage listener type: com.scort.inbound.jca.api.InboundListener
at org.openejb.deployment.MdbBuilder.addActivationSpecWrapperGBean(MdbBu
ilder.java:247)
at org.openejb.deployment.MdbBuilder.buildBeans (MdbBuilder.java:119) at org.openejb.deployment.OpenEJBModuleBuilder.addGBeans (OpenEJBModuleBu
ilder.java:533)
at org.openejb.deployment.OpenEJBModuleBuilder$ $FastClassByCGLIB$$11bd7b
20.invoke(<generated>)
        at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
at org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethod
Invoker.java:38)
at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke (GBeanOperatio
n.java:118)
at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke (GBeanInstance.
java:800)
at org.apache.geronimo.gbean.runtime.RawInvoker.invoke (RawInvoker.java:5
7)
at org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperat
ionInvoker.java:36)
at org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(Pro
xyMethodInterceptor.java:96)
at org.apache.geronimo.j2ee.deployment.ModuleBuilder$ $EnhancerByCGLIB$$1
3ff1c22.addGBeans(<generated>)
at org.apache.geronimo.j2ee.deployment.EARConfigBuilder.buildConfigurati
on(EARConfigBuilder.java:402)
at org.apache.geronimo.j2ee.deployment.EARConfigBuilder$ $FastClassByCGLI
B$$38e56ec6.invoke(<generated>)
        at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
at org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethod
Invoker.java:38)
at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke (GBeanOperatio
n.java:118)
at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke (GBeanInstance.
java:800)
at org.apache.geronimo.gbean.runtime.RawInvoker.invoke (RawInvoker.java:5
7)
at org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperat
ionInvoker.java:36)
at org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(Pro
xyMethodInterceptor.java:96)
at org.apache.geronimo.deployment.ConfigurationBuilder$ $EnhancerByCGLIB$
$1fec2494.buildConfiguration(<generated>)
at org.apache.geronimo.deployment.Deployer.deploy (Deployer.java:269) at org.apache.geronimo.deployment.Deployer.deploy (Deployer.java:102) at org.apache.geronimo.deployment.Deployer$$FastClassByCGLIB $$734a235d.i
nvoke(<generated>)
        at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
at org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethod
Invoker.java:38)
at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke (GBeanOperatio
n.java:118)
at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke (GBeanInstance.
java:835)
at org.apache.geronimo.kernel.basic.BasicKernel.invoke (BasicKernel.java:
178)
at org.apache.geronimo.deployment.plugin.local.AbstractDeployCommand.doD
eploy(AbstractDeployCommand.java:106)
at org.apache.geronimo.deployment.plugin.local.DistributeCommand.run(Dis
tributeCommand.java:59)
        at java.lang.Thread.run(Thread.java:534)

Jean-Noël

Hi,


U can create a EAR plan (geronimo-application.xml)  that contains the
EJB plan (openejb-jar.xml).

The configIds and parentIds can be configured in such a way so that dependencies
are resolved.
EAR plan : configID="EARPlan" ParentID="ScortJcaAdapter15"
EAR contains EJB plan(openejb-jar.xml) ConfigID="EJBPlan" ParentID="EARPlan"
or
U can set parent of EJB plan to RA plan ConfigID="EJBPlan"
ParentID="ScortJcaAdapter15"
or
U can try configID for geronimo-ra.xml
<..... configId="myGroupId/myJCAAdapter/1.0/car"....>
and the ear should include the following import
<import>
 <groupId>myGroupId</groupId>
 <type>car</type>
 <artifactId>myJCAAdapter</artifactId>
 <version>1.0</version>
</import>

myGroupID and myJCAAdapter are names u can give for RA plan and are
used in import for EAR plan.

Regards
Krish

Regarding GroupID/Car these are

On 3/9/06, johnxmas <[EMAIL PROTECTED]> wrote:
On Mar 8, 2006, at 7:48 AM, johnxmas wrote:

Hi,

I deploy an Inbound Resource Adapter at server level (and, no I
don't want to include it in my ear). This RA
have all is classes in a jar (including the infamous
ActivationSpec :-D)

I deploy an EAR with a message-driven bean. And bingo, at
deployment time

[************************> ] 93%  25s  Loading
scortInboundCustListMdb16:14:53,2
99 ERROR [GBeanInstanceState] Error while starting; GBean is now in
the FAILED s
tate:
objectName="geronimo.server:EJBModule=inboundCustListMdb.jar,J2EEA ppli
cati
on=scortInboundCustListMdb,J2EEServer=geronimo,j2eeType=JCAActivat ionS
pec,name=S
cortInboundCustListMdb"
java.lang.ClassNotFoundException:
com.scort.inbound.jca.socket.impl.SocketActiva
tionSpec
        at java.net.URLClassLoader$1.run(URLClassLoader.java:199)


I expected the Resource Adapter class loader to be a parent of the
EAR class loader !

What did you do to make this be the case?

I didn't do anything. I just assumed that that, in the openebj- jar.xml, the parentId or the resource-link element,
where there to do the trick

Assuming you are using
geronimo 1.0 or trunk/head, your ra plan should have something like
this:

<..... configId="myGroupId/myJCAAdapter/1.0/car"....>

and the ear should include up before the dependencies (IIRC)

<import>
  <groupId>myGroupId</groupId>
  <type>car</type>
  <artifactId>myJCAAdapter</artifactId>
  <version>1.0</version>
</import>

This specifies that one of the parent classloaders of the ear is the
classloader of the deployed jca adapter.


Sorry to insist, but there are informations I miss. I deploy my Adapter by dropping the archive in the deploy
directory, putting nothing in the repository dir.

So,
What is my groupId ? What is car ?
In which file for the ear must I specifiy the import element and how do I specify dependencies ?

Very basic questions indeed, but I'm quite lost.

Thanks for your answer...

Jean-Noël




Reply via email to