I am not sure about this, but it looks like the container is checking for a
service provider definition in service-jar.xml compatible with my type(that
would be "sample.jndi.ResourceBean")
Is there a chance that I could add such a definition?
David Blevins wrote:
>
> 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.
>>
>>
>
>
>
--
View this message in context:
http://www.nabble.com/Custom-Resource-Factory-tp18852971p19059489.html
Sent from the OpenEJB User mailing list archive at Nabble.com.