Good hint, Guillaume.
I put in the try/catch block and retried.

This is the result now:

ERROR - DroolsComponent                - 
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 11 
in XML document from file 
[/opt/apache-servicemix-3.3-SNAPSHOT/data/smx/service-assemblies/cp-inputrouter-sa/version_1/sus/servicemix-drools/cp-inputrouter-su/xbean.xml]
 is invalid; nested exception is org.xml.sax.SAXParseException: The prefix 
"util" for element "util:map" is not bound.
ERROR - FileSystemXmlApplicationContext - Exception thrown from 
ApplicationListener handling ContextClosedEvent
java.lang.IllegalStateException: ApplicationEventMulticaster not initialized - 
call 'refresh' before multicasting events via the context: [EMAIL PROTECTED]: 
display name [EMAIL PROTECTED]; startup date [Tue Apr 01 15:42:46 CEST 2008]; 
root of context hierarchy
        at 
org.springframework.context.support.AbstractApplicationContext.getApplicationEventMulticaster(AbstractApplicationContext.java:259)
        at 
org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:246)
        at 
org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:676)
        at 
org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:651)
        at 
org.springframework.context.support.AbstractApplicationContext.destroy(AbstractApplicationContext.java:639)
        at 
org.apache.servicemix.common.xbean.AbstractXBeanDeployer.deploy(AbstractXBeanDeployer.java:108)
        at 
org.apache.servicemix.common.BaseServiceUnitManager.doDeploy(BaseServiceUnitManager.java:88)
        at 
org.apache.servicemix.common.BaseServiceUnitManager.deploy(BaseServiceUnitManager.java:69)
        at 
org.apache.servicemix.jbi.framework.DeploymentService.deployServiceAssembly(DeploymentService.java:508)
        at 
org.apache.servicemix.jbi.framework.AutoDeploymentService.checkPendingSAs(AutoDeploymentService.java:482)
        at 
org.apache.servicemix.jbi.framework.AutoDeploymentService.checkPendingComponents(AutoDeploymentService.java:535)
        at 
org.apache.servicemix.jbi.framework.AutoDeploymentService.updateSharedLibrary(AutoDeploymentService.java:317)
        at 
org.apache.servicemix.jbi.framework.AutoDeploymentService.updateArchive(AutoDeploymentService.java:254)
        at 
org.apache.servicemix.jbi.framework.AutoDeploymentService.monitorDirectory(AutoDeploymentService.java:658)
        at 
org.apache.servicemix.jbi.framework.AutoDeploymentService.access$800(AutoDeploymentService.java:62)
        at 
org.apache.servicemix.jbi.framework.AutoDeploymentService$1.run(AutoDeploymentService.java:622)
        at java.util.TimerThread.mainLoop(Timer.java:512)
        at java.util.TimerThread.run(Timer.java:462)
ERROR - DroolsComponent                - java.lang.IllegalStateException: 
BeanFactory not initialized or already closed - call 'refresh' before accessing 
beans via the ApplicationContext
ERROR - AutoDeploymentService          - Failed to update Service Assembly: 
cp-inputrouter-sa-1.0-SNAPSHOT.0.tmp
java.lang.Exception: <?xml version="1.0" encoding="UTF-8"?>
<jbi-task xmlns="http://java.sun.com/xml/ns/jbi/management-message"; 
version="1.0">
<jbi-task-result>
<frmwk-task-result>
<frmwk-task-result-details>
<task-result-details>
<task-id>deploy</task-id>
<task-result>FAILED</task-result>
<message-type>ERROR</message-type>
</task-result-details>
</frmwk-task-result-details>
</frmwk-task-result>
<component-task-result 
xmlns="http://java.sun.com/xml/ns/jbi/management-message";>
        <component-name>servicemix-drools</component-name>
        <component-task-result-details>
                <task-result-details>
                        <task-id>deploy</task-id>
                        <task-result>FAILED</task-result>
                        <message-type>ERROR</message-type>
                        <task-status-msg>
<msg-loc-info>
<loc-token/>
<loc-message>Could not deploy xbean service unit</loc-message>
</msg-loc-info>
</task-status-msg>
                        <exception-info>
                                <nesting-level>1</nesting-level>
                                <msg-loc-info>
                                        <loc-token/>
                                        <loc-message>Line 11 in XML document 
from file 
[/opt/apache-servicemix-3.3-SNAPSHOT/data/smx/service-assemblies/cp-inputrouter-sa/version_1/sus/servicemix-drools/cp-inputrouter-su/xbean.xml]
 is invalid; nested exception is org.xml.sax.SAXParseException: The prefix 
"util" for element "util:map" is not bound.</loc-message>
                                        
<stack-trace><![CDATA[org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:
 Line 11 in XML document from file 
[/opt/apache-servicemix-3.3-SNAPSHOT/data/smx/service-assemblies/cp-inputrouter-sa/version_1/sus/servicemix-drools/cp-inputrouter-su/xbean.xml]
 is invalid; nested exception is org.xml.sax.SAXParseException: The prefix 
"util" for element "util:map" is not bound.
Caused by: org.xml.sax.SAXParseException: The prefix "util" for element 
"util:map" is not bound.
        at 
org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown 
Source)
        at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
        at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
        at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
        at 
org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
        at 
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown
 Source)
        at 
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown 
Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
        at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
        at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
        at 
org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:76)
        at 
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:351)
        at 
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:303)
        at 
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:280)
        at 
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:131)
        at 
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:147)
        at 
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:173)
        at 
org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:112)
        at 
org.apache.xbean.spring.context.FileSystemXmlApplicationContext.loadBeanDefinitions(FileSystemXmlApplicationContext.java:168)
        at 
org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:101)
        at 
org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:389)
        at 
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:324)
        at 
org.apache.servicemix.common.xbean.AbstractXBeanDeployer.deploy(AbstractXBeanDeployer.java:89)
        at 
org.apache.servicemix.common.BaseServiceUnitManager.doDeploy(BaseServiceUnitManager.java:88)
        at 
org.apache.servicemix.common.BaseServiceUnitManager.deploy(BaseServiceUnitManager.java:69)
        at 
org.apache.servicemix.jbi.framework.DeploymentService.deployServiceAssembly(DeploymentService.java:508)
        at 
org.apache.servicemix.jbi.framework.AutoDeploymentService.checkPendingSAs(AutoDeploymentService.java:482)
        at 
org.apache.servicemix.jbi.framework.AutoDeploymentService.checkPendingComponents(AutoDeploymentService.java:535)
        at 
org.apache.servicemix.jbi.framework.AutoDeploymentService.updateSharedLibrary(AutoDeploymentService.java:317)
        at 
org.apache.servicemix.jbi.framework.AutoDeploymentService.updateArchive(AutoDeploymentService.java:254)
        at 
org.apache.servicemix.jbi.framework.AutoDeploymentService.monitorDirectory(AutoDeploymentService.java:658)
        at 
org.apache.servicemix.jbi.framework.AutoDeploymentService.access$800(AutoDeploymentService.java:62)
        at 
org.apache.servicemix.jbi.framework.AutoDeploymentService$1.run(AutoDeploymentService.java:622)
        at java.util.TimerThread.mainLoop(Timer.java:512)
        at java.util.TimerThread.run(Timer.java:462)
]]></stack-trace>
                                </msg-loc-info>
                        </exception-info>
                </task-result-details>
        </component-task-result-details>
</component-task-result>
</jbi-task-result>
</jbi-task>

        at 
org.apache.servicemix.jbi.framework.ManagementSupport.failure(ManagementSupport.java:125)
        at 
org.apache.servicemix.jbi.framework.ManagementSupport.failure(ManagementSupport.java:111)
        at 
org.apache.servicemix.jbi.framework.DeploymentService.deployServiceAssembly(DeploymentService.java:543)
        at 
org.apache.servicemix.jbi.framework.AutoDeploymentService.checkPendingSAs(AutoDeploymentService.java:482)
        at 
org.apache.servicemix.jbi.framework.AutoDeploymentService.checkPendingComponents(AutoDeploymentService.java:535)
        at 
org.apache.servicemix.jbi.framework.AutoDeploymentService.updateSharedLibrary(AutoDeploymentService.java:317)
        at 
org.apache.servicemix.jbi.framework.AutoDeploymentService.updateArchive(AutoDeploymentService.java:254)
        at 
org.apache.servicemix.jbi.framework.AutoDeploymentService.monitorDirectory(AutoDeploymentService.java:658)
        at 
org.apache.servicemix.jbi.framework.AutoDeploymentService.access$800(AutoDeploymentService.java:62)
        at 
org.apache.servicemix.jbi.framework.AutoDeploymentService$1.run(AutoDeploymentService.java:622)
        at java.util.TimerThread.mainLoop(Timer.java:512)
        at java.util.TimerThread.run(Timer.java:462)


It seems the parser has no idea what to do with the <util:map> stuff in the 
xbean config.

What to do now? Is there a namespace I can add?

Regards,
Lars




Guillaume Nodet schrieb:
> Sounds like another regression :-(
> Given the stack trace, it seems there is an exception that is swallowed by
> the exception displayed, because of the call to close/destroy.
> This may mean we need to enclose the applicationContext.destroy(); in a
> try/catch block in the AbstractXBeanDeployer#deploy() method.
> Could you try that ?
>
> On Tue, Apr 1, 2008 at 2:56 PM, lhe77 <[EMAIL PROTECTED]> wrote:
>
>   
>> Hi,
>>
>> I did what is described on the servicemix-drools wiki page to inject an
>> additional bean.
>> When deploying it to smx it throws exception:
>>
>>
>> WARN  - AutoDeploymentService          - Directory: hotdeploy: Automatic
>> install of
>> /opt/apache-servicemix-3.3-SNAPSHOT/hotdeploy/cp-
>> inputrouter-sa-1.0-SNAPSHOT.zip
>> failed
>> javax.jbi.management.DeploymentException: Failed to update Service
>> Assembly:
>> cp-inputrouter-sa
>>        at
>>
>> org.apache.servicemix.jbi.framework.AutoDeploymentService.updateServiceAssembly
>> (AutoDeploymentService.java:368)
>>        at
>> org.apache.servicemix.jbi.framework.AutoDeploymentService.updateArchive(
>> AutoDeploymentService.java:256)
>>        at
>> org.apache.servicemix.jbi.framework.AutoDeploymentService.monitorDirectory
>> (AutoDeploymentService.java:658)
>>        at
>> org.apache.servicemix.jbi.framework.AutoDeploymentService.access$800(
>> AutoDeploymentService.java:62)
>>        at
>> org.apache.servicemix.jbi.framework.AutoDeploymentService$1.run(
>> AutoDeploymentService.java:622)
>>        at java.util.TimerThread.mainLoop(Timer.java:512)
>>        at java.util.TimerThread.run(Timer.java:462)
>> Caused by: java.lang.Exception: <?xml version="1.0" encoding="UTF-8"?>
>> <jbi-task xmlns="http://java.sun.com/xml/ns/jbi/management-message";
>> version="1.0">
>> <jbi-task-result>
>> <frmwk-task-result>
>> <frmwk-task-result-details>
>> <task-result-details>
>> <task-id>deploy</task-id>
>> <task-result>FAILED</task-result>
>> <message-type>ERROR</message-type>
>> </task-result-details>
>> </frmwk-task-result-details>
>> </frmwk-task-result>
>> <component-task-result
>> xmlns="http://java.sun.com/xml/ns/jbi/management-message";>
>>        <component-name>servicemix-drools</component-name>
>>        <component-task-result-details>
>>                <task-result-details>
>>                        <task-id>deploy</task-id>
>>                        <task-result>FAILED</task-result>
>>                        <message-type>ERROR</message-type>
>>                        <task-status-msg>
>> <msg-loc-info>
>> <loc-token/>
>> <loc-message>Unable to deploy service unit</loc-message>
>> </msg-loc-info>
>> </task-status-msg>
>>                        <exception-info>
>>                                <nesting-level>1</nesting-level>
>>                                <msg-loc-info>
>>                                        <loc-token/>
>>                                        <loc-message>BeanFactory not
>> initialized or already closed - call 'refresh' before accessing beans via
>> the ApplicationContext</loc-message>
>>
>> <stack-trace><![CDATA[java.lang.IllegalStateException: BeanFactory not
>> initialized or already closed - call 'refresh' before accessing beans via
>> the ApplicationContext
>>        at
>>
>> org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory
>> (AbstractRefreshableApplicationContext.java:121)
>>        at
>>
>> org.springframework.context.support.AbstractApplicationContext.getLifecycleBeans
>> (AbstractApplicationContext.java:912)
>>        at
>> org.springframework.context.support.AbstractApplicationContext.stop(
>> AbstractApplicationContext.java:886)
>>        at
>> org.springframework.context.support.AbstractApplicationContext.doClose(
>> AbstractApplicationContext.java:682)
>>        at
>> org.springframework.context.support.AbstractApplicationContext.close(
>> AbstractApplicationContext.java:651)
>>        at
>> org.springframework.context.support.AbstractApplicationContext.destroy(
>> AbstractApplicationContext.java:639)
>>        at
>> org.apache.servicemix.common.xbean.AbstractXBeanDeployer.deploy(
>> AbstractXBeanDeployer.java:106)
>>        at
>> org.apache.servicemix.common.BaseServiceUnitManager.doDeploy(
>> BaseServiceUnitManager.java:88)
>>        at
>> org.apache.servicemix.common.BaseServiceUnitManager.deploy(
>> BaseServiceUnitManager.java:69)
>>        at
>>
>> org.apache.servicemix.jbi.framework.DeploymentService.deployServiceAssembly
>> (DeploymentService.java:508)
>>        at
>>
>> org.apache.servicemix.jbi.framework.AutoDeploymentService.updateServiceAssembly
>> (AutoDeploymentService.java:353)
>>        at
>> org.apache.servicemix.jbi.framework.AutoDeploymentService.updateArchive(
>> AutoDeploymentService.java:256)
>>        at
>> org.apache.servicemix.jbi.framework.AutoDeploymentService.monitorDirectory
>> (AutoDeploymentService.java:658)
>>        at
>> org.apache.servicemix.jbi.framework.AutoDeploymentService.access$800(
>> AutoDeploymentService.java:62)
>>        at
>> org.apache.servicemix.jbi.framework.AutoDeploymentService$1.run(
>> AutoDeploymentService.java:622)
>>        at java.util.TimerThread.mainLoop(Timer.java:512)
>>        at java.util.TimerThread.run(Timer.java:462)
>> ]]></stack-trace>
>>                                </msg-loc-info>
>>                        </exception-info>
>>                </task-result-details>
>>        </component-task-result-details>
>> </component-task-result>
>> </jbi-task-result>
>> </jbi-task>
>>
>>        at
>> org.apache.servicemix.jbi.framework.ManagementSupport.failure(
>> ManagementSupport.java:125)
>>        at
>> org.apache.servicemix.jbi.framework.ManagementSupport.failure(
>> ManagementSupport.java:111)
>>        at
>>
>> org.apache.servicemix.jbi.framework.DeploymentService.deployServiceAssembly
>> (DeploymentService.java:543)
>>        at
>>
>> org.apache.servicemix.jbi.framework.AutoDeploymentService.updateServiceAssembly
>> (AutoDeploymentService.java:353)
>>        ... 6 more
>>
>>
>> The xbean:
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <beans xmlns:drools="http://servicemix.apache.org/drools/1.0";
>>       xmlns:cp="http://www.compart.net/ns/jbi";>
>>
>>  <drools:endpoint service="cp:inputRouter"
>>                   endpoint="inEndpoint"
>>                   namespaceContext="#nsContext"
>>                   ruleBaseResource="classpath:router.drl"
>>                   globals="#globals" />
>>
>>  <util:map id="globals">
>>        <entry key="constants" value-ref="constants" />
>>  </util:map>
>>  <bean id="constants" class="ConstantsHelper" />
>>
>>  <drools:namespace-context id="nsContext">
>>    <drools:namespaces>
>>      <drools:namespace
>> prefix="cp">http://www.compart.net/ns/jbi</drools:namespace>
>>    </drools:namespaces>
>>  </drools:namespace-context>
>>
>> </beans>
>>
>>
>> The drl:
>>
>>
>> package org.apache.servicemix.drools
>>
>> import org.apache.commons.logging.Log;
>> import org.apache.commons.logging.LogFactory;
>> import org.apache.servicemix.drools.model.Exchange;
>> import ConstantsHelper;
>>
>> global org.apache.servicemix.drools.model.JbiHelper jbi;
>> global ConstantsHelper constants;
>>
>> rule UnkownOperation
>>    when
>>        me : Exchange( status == Exchange.ACTIVE, in : in != null,
>>                       operation != 
>> "{http://www.compart.net/ns/jbi}process<http://www.compart.net/ns/jbi%7Dprocess>
>> "
>> )
>>    then
>>        jbi.fault("<UnknownOperation
>> xmlns='http://www.compart.net/ns/jbi'/ <http://www.compart.net/ns/jbi%27/>
>>     
>>> ");
>>>       
>> end
>>
>> rule ProcessInputAFP
>>    when
>>        me : Exchange( status == Exchange.ACTIVE, in : in != null,
>>                       operation == 
>> "{http://www.compart.net/ns/jbi}process<http://www.compart.net/ns/jbi%7Dprocess>
>> "
>> )
>>        eval (isOfType(getFileName(me), "afp"))
>>    then
>>        jbi.getLogger().info("File " + getFileName(me) + " is of type
>> AFP");
>>        jbi.route("service:http://www.compart.net/ns/jbi/fileSender";);
>> end
>>
>> function boolean isOfType(String fileName, String type) {
>>    return fileName.toLowerCase().endsWith("." + type.toLowerCase());
>> }
>>
>> function String getFileName(Exchange me) {
>>    if (me.getIn().getProperty("user-props") != null) {
>>        java.util.Map userProps =
>> (java.util.Map)me.getIn().getProperty("user-props");
>>        String fileName = userProps.get("file-name").toString();
>>        if (fileName != null) {
>>            return fileName;
>>        } else {
>>            return "";
>>        }
>>    } else {
>>        return "";
>>    }
>> }
>>
>>
>> The helper bean:
>>
>> public class ConstantsHelper
>> {
>>    public String getFileNameProperty()
>>        {
>>        return "file-name";
>>        }
>>
>>    public String getUserPropertiesKeyProperty()
>>        {
>>        return "user-props";
>>        }
>> }
>>
>>
>> I have no idea why the injection doesn't work. Any ideas?
>>
>> Regards,
>> Lars
>>
>> --
>> View this message in context:
>> http://www.nabble.com/Error-injecting-bean-into-servicemix-drools-service-unit-tp16418402s12049p16418402.html
>> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>>
>>
>>     
>
>
>   

Reply via email to