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]>