Stuart Roebuck wrote:
> 
> On Friday, May 10, 2002, at 08:03 AM, Gerhard Froehlich wrote:
> 
>> Stuart Roebuck wrote:
>>
>>> I'm trying to install a new 'user' component into Cocoon 2 but I'm 
>>> hitting a problem which I can't seem to get a handle on:
>>> Basically, I'm getting a the following stack dump:
>>>
>>>> ERROR   (2002-05-09) 19:03.08:176   [sitemap.generator.database-
>>>> access](/about_us_index.html) 
>>>> HttpProcessor[8080][4]/DatabaseAccessGenerator: Can't get 
>>>> DatabaseAccessManager component
>>>> org.apache.avalon.framework.component.ComponentException: Could not 
>>>> find component
>>>>         at 
>>>> org.apache.avalon.excalibur.component.ExcaliburComponentManager.lookup
>>>> (ExcaliburComponentManager.java:335)
>>>>         at org.apache.cocoon.components.CocoonComponentManager.lookup
>>>> (CocoonComponentManager.java:175)
>>>>         at 
>>>> 
>org.apache.avalon.excalibur.component.DefaultComponentFactory$ComponentManagerProxy. 
>>>>
>>>> lookup(DefaultComponentFactory.java:323)
>>>>         at 
>>>> 
>org.apache.avalon.excalibur.component.DefaultComponentFactory$ComponentManagerProxy. 
>>>>
>>>> lookup(DefaultComponentFactory.java:323)
>>>>         at com.adolos.cocoon.generation.DatabaseAccessGenerator.compose
>>>> (DatabaseAccessGenerator.java:94)
>>>> ...
>>>
>>> My new DatabaseAccessGenerator (generator) is composable and uses the 
>>> given manager to lookup the new component called 
>>> DatabaseAccessManager.  This component is defined in my my.roles file:
>>>
>>>> <?xml version="1.0"?>
>>>> <role-list>
>>>>   <role name="com.adolos.cocoon.util.DatabaseAccessManager"
>>>>         shorthand="database-access-manager"
>>>>         default-class="com.adolos.cocoon.util.DatabaseAccessManager"/>
>>>> </role-list>
>>>
>>> The my.roles file is referenced in my cocoon.xconf file as:
>>>
>>>> <cocoon version="2.0" user-roles="/WEB-INF/my.roles">
>>>
>>> This appears to be being accessed, as prior to putting in the 
>>> preceding forward-slash this reference threw a runtime error as well.
>>> The cocoon.xconf file also has an entry for the component like this 
>>> (I'm not sure if this is really necessary):
>>>
>>>>   <database-access-manager 
>>>> class="com.adolos.cocoon.util.DatabaseAccessManager" 
>>>> logger="core.database.access" />
>>>
>>> I have some logging in place and I know that the compose and 
>>> configure methods of my DatabaseAccessManager component are called 
>>> prior to any attempt to use the component.
>>> But, when my DatabaseAccessGenerator attempts to lookup the component 
>>> it throws the 'Could not find component' exception listed above (top).
>>> I've checked and double-checked that the role names match up throughout.
>>> Any thoughts?
>>
>>
>> Blind shot. Do you have a work interface for your DatabaseAccessManager?
> 
> 
> Thank you for a suggestion - I'm not sure what you mean by a 'work 
> interface'.  Do you mean 'ThreadSafe', 'Poolable', etc. ?  Here is the 
> class declaration:
> 
> public class DatabaseAccessManager extends AbstractLoggable implements 
> Composable, Configurable, ThreadSafe {

Every Avalon Component must implement a work interface, in your case:

package your.package;

import org.apache.avalon.framework.component.Component;

public interface DatabaseAccessManager extends Component {

     String ROLE = your.package.DatabaseAccessManager ";

     //your methods and fields
}

public class DatabaseAccessManagerImpl
extends AbstractLoggable
implements DatabaseAccessManager,
Parameterizable, Composable, Disposable, ThreadSafe {

//your class goes here
}

You see what I mean. There interface name is the same as you
define in your roles.conf. Important is the String ROLE in the
DatabaseAccessManager interface. Now the ComponentManager should
find your component.

Refer to:
<http://jakarta.apache.org/avalon/developing/index.html>

I hope that helps!

Greets
Gerhard

-- 

--------------------------------------------------
Black holes were created when God divided by zero.
--------------------------------------------------

Weblogging at: http://radio.weblogs.com/0107791/


---------------------------------------------------------------------
Please check that your question has not already been answered in the
FAQ before posting. <http://xml.apache.org/cocoon/faqs.html>

To unsubscribe, e-mail: <[EMAIL PROTECTED]>
For additional commands, e-mail: <[EMAIL PROTECTED]>

Reply via email to