That definitely should work.  Let me see if I can't reproduce this.

-David

On Aug 12, 2008, at 1:45 PM, lupu.slobodu wrote:


If I declare my session bean in ejb-jar.xml, together with the
resource-env-ref like this

       <session>
           <ejb-name>CalculatorImpl</ejb-name>
           <business-local>sample.CalculatorLocal</business-local>
           <ejb-class>sample.CalculatorImpl</ejb-class>
           <transaction-type>Container</transaction-type>

                        <resource-env-ref>
                                  <description>
                                    Object factory for MyBean instances.
                                  </description>
                                
                                  <resource-env-ref-name>
                                     bean/ParamsFactory
                                  </resource-env-ref-name>
                                
                                  <resource-env-ref-type>
                                    sample.jndi.ResourceBean
                                  </resource-env-ref-type>
                        </resource-env-ref>
       </session>


it crashes at deploy time like this:

org.apache.openejb.OpenEJBException: No provider available for resource-ref
'null' of type 'sample.jndi.ResourceBean' for 'CalculatorImpl'.
        at
org .apache.openejb.config.AutoConfig.autoCreateResource(AutoConfig.java: 1292) at org.apache.openejb.config.AutoConfig.getResourceId(AutoConfig.java: 1285) at org.apache.openejb.config.AutoConfig.getResourceId(AutoConfig.java: 1236)
        at
org .apache.openejb.config.AutoConfig.processResourceRef(AutoConfig.java: 781)
        at org.apache.openejb.config.AutoConfig.deploy(AutoConfig.java:706)
        at org.apache.openejb.config.AutoConfig.deploy(AutoConfig.java:133)
        at
org.apache.openejb.config.ConfigurationFactory $Chain.deploy(ConfigurationFactory.java:148)
        at
org .apache .openejb .config .ConfigurationFactory.configureApplication(ConfigurationFactory.java: 440)
        at
org .apache .openejb .tomcat.catalina.TomcatWebAppBuilder.start(TomcatWebAppBuilder.java: 233)
        at
org .apache .openejb .tomcat .catalina .GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:58)
        at
org .apache .catalina .util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
        at
org.apache.catalina.core.StandardContext.start(StandardContext.java: 4252) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java: 1045)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java: 1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java: 516) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)

David Blevins wrote:


On Aug 8, 2008, at 11:11 AM, lupu.slobodu wrote:


Here it is what I've been trying:

1)Resource Factory configuration in tomcat context.xml

<Resource
     name="bean/ParamsFactory"
     auth="Container"
     type="sample.jndi.ResourceBean"
     factory="sample.jndi.GenericObjectFactory"
                value="ContextResource"
     />

2)test web application's  web.xml

<resource-env-ref>
<description>
  Object factory for ResourceBean instances.
</description>
<resource-env-ref-name>
   bean/ParamsFactory
</resource-env-ref-name>
<resource-env-ref-type>
  sample.jndi.ResourceBean
</resource-env-ref-type>
</resource-env-ref>


I can look it up successfully from a servlet like this

                Context initCtx = new InitialContext();
                Context envCtx = (Context) initCtx.lookup("java:comp/env");
                ResourceBean bean = (ResourceBean) envCtx.lookup("bean/
ParamsFactory");


The same look up fails  when performed inside a session bean.

I tried to integrate the declarations in the openejb web module
web.xml
descriptor also but with no success.

If you can look it up from a Servlet, we're not too far! Post the ejb-
jar.xml you using if you can.  You would need an identical resource-
env-ref in there for your session bean.

-David




--
View this message in context: 
http://www.nabble.com/Custom-Resource-Factory-tp18852971p18952298.html
Sent from the OpenEJB User mailing list archive at Nabble.com.



Reply via email to