[ 
https://issues.apache.org/jira/browse/KARAF-1?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Guillaume Nodet closed KARAF-1.
-------------------------------

    Resolution: Cannot Reproduce

> Exception in thread "SpringOsgiExtenderThread-22" 
> java.lang.IllegalStateException: BeanFactory not initialized or already 
> closed - call 'refresh' before ac cessing beans via the ApplicationContext 
> Click to flag this post
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: KARAF-1
>                 URL: https://issues.apache.org/jira/browse/KARAF-1
>             Project: Karaf
>          Issue Type: Bug
>            Reporter: Guillaume Nodet
>
> The following error is generated by SMX Kernel / Spring DM during bundle 
> start after an update :
> {code}
> s...@root:osgi> Exception in thread "SpringOsgiExtenderThread-22" 
> java.lang.IllegalStateException: BeanFactory not initialized or already 
> closed - call 'refresh' before ac
> cessing beans via the ApplicationContext
>         at 
> org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:153)
>         at 
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.close(DependencyWaiterApplicationContextExecutor.jav
> a:345)
>         at 
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.fail(DependencyWaiterApplicationContextExecutor.java
> :401)
>         at 
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.stageOne(DependencyWaiterApplicationContextExecutor.
> java:287)
>         at 
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.refresh(DependencyWaiterApplicationContextExecutor.j
> ava:175)
>         at 
> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.refresh(AbstractDelegatedExecutionApplicationContext.java:175)
>         at 
> org.springframework.osgi.extender.internal.activator.ContextLoaderListener$2.run(ContextLoaderListener.java:716)
>         at java.lang.Thread.run(Thread.java:619)
> {code}
> This is very difficult to reproduce it but it seems that the error is 
> generated when there is a syntactical error in the camel spring DSL file.
> e.g.
> <setHeader name="origin">
> <simple>file</simple>
> </setHeader>
> <simple> can't be use but <constant>
> The syntactical error is not the cause of the error message but I presume 
> that during the camel context and spring beans instantiation, there are 
> interaction responsible of the error returned.
> Here is the my camel-context :
> {code}
> <?xml version="1.0" encoding="UTF-8"?>
> <beans xmlns="http://www.springframework.org/schema/beans";
>       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>       xmlns:camel="http://camel.apache.org/schema/spring";
>       xmlns:osgi="http://www.springframework.org/schema/osgi";
>       xmlns:cxf="http://camel.apache.org/schema/cxf";
>       xsi:schemaLocation="
>           http://www.springframework.org/schema/beans
>               http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
>               http://www.springframework.org/schema/osgi
>               http://www.springframework.org/schema/osgi/spring-osgi.xsd
>               http://camel.apache.org/schema/osgi
>               http://camel.apache.org/schema/osgi/camel-osgi.xsd
>               http://camel.apache.org/schema/spring
>               http://camel.apache.org/schema/spring/camel-spring.xsd
>               http://camel.apache.org/schema/cxf
>               http://camel.apache.org/schema/cxf/camel-cxf.xsd";>
>               
>  <import resource="classpath:META-INF/cxf/cxf.xml"/>
>  <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
>  <import resource="classpath:META-INF/cxf/cxf-extension-http-jetty.xml"/>
>  
>       <bean id="bindyDataformat" 
> class="org.apache.camel.dataformat.bindy.csv.BindyCsvDataFormat">
>               <constructor-arg type="java.lang.String" 
> value="org.apache.camel.example.reportincident.model" />
>       </bean>
>       <bean id="incidentSaver" 
> class="org.apache.camel.example.reportincident.beans.IncidentSaver">
>               <property name="incidentService">
>                       <osgi:reference 
> interface="org.apache.camel.example.reportincident.service.IncidentService"/>
>               </property>
>       </bean>
>       
>       <bean id="webservice" 
> class="org.apache.camel.example.reportincident.beans.WebService" />
>       <bean id="feedback" 
> class="org.apache.camel.example.reportincident.beans.Feedback" />
>       
>       <!-- webservice endpoint --> 
>       <cxf:cxfEndpoint id="reportIncident"
>               address="http://localhost:8080/camel-example/incident";
>               
> serviceClass="org.apache.camel.example.reportincident.ReportIncidentEndpoint"
>               xmlns:s="http://reportincident.example.camel.apache.org";>
>       </cxf:cxfEndpoint>
>       
>       <osgi:reference id="queuingservice" 
> interface="org.apache.camel.Component" />
>       <camelContext trace="true" xmlns="http://camel.apache.org/schema/osgi";>
>               <!-- File route -->
>               <camel:route>
>                       <camel:from     
> uri="file://d:/temp/data/?move=d:/temp/done/${file:name}" />
>                       <camel:setHeader headerName="origin">
>                               <camel:constant>file</camel:constant>
>                       </camel:setHeader>
>                       <camel:unmarshal ref="bindyDataformat" />
>                       <camel:to uri="queuingservice:queue:in" />
>               </camel:route>
>               
>               <camel:route>
>                       <camel:from uri="queuingservice:queue:in" />
>                       <camel:to uri="bean:incidentSaver?method=process" />
>                       
>                       <!-- 
>                       <camel:marshal ref="bindyDataformat" />
>                       <camel:to uri="file://d:/temp/data/queue" />
>                       -->
>               </camel:route>
>                
>               <!-- CXF route -->
>               <camel:route>
>                       <camel:from uri="cxf:bean:reportIncident" />
>                       <!--                    -->
>                       <camel:setHeader headerName="origin">
>                               <camel:constant>webservice</camel:constant>
>                       </camel:setHeader>
>                       <camel:convertBodyTo 
> type="org.apache.camel.example.reportincident.InputReportIncident" />
>                       <camel:to uri="bean:webservice" />
>                       <!-- <camel:to uri="queuingservice:queue:in" />  -->
>                       <camel:transform>
>                               <camel:method bean="feedback" method="setOk" />
>                       </camel:transform>
>               </camel:route>
>       </camelContext>
> </beans>
> {code}
> ===================
> I confirm my hypothesis. Here is a scenario showing/generating the error :
> 1) Generate a syntactical error in the spring xml file :
> {code}
> <!-- Hibernate Transaction Manager exported as OSGI service because used -->
> org.apache.camel.example.reportincident.service
> <osgi:service id="transactionManagerOsgi"
> ref="transactionManager"
> interface="org.springframework.transaction.PlatformTransactionManager"/>
> {code}
> the line 'org.apache.camel.example.reportincident.service ' is not part of 
> the xml comments <!-- -->
> 2) Generate the osgi bundle containing the spring file using mvn
> 3) stop the bundle on SMX
> 4) update the bundle
> 5) start the bundle
> On the SMX console, you will see :
> {code}
> s...@root:osgi> Exception in thread "SpringOsgiExtenderThread-19" 
> java.lang.IllegalStateException: BeanFactory not initialized or already 
> closed - call 'refresh' before ac
> cessing beans via the ApplicationContext
>         at 
> org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:153)
>         at 
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.close(DependencyWaiterApplicationContextExecutor.jav
> a:345)
>         at 
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.fail(DependencyWaiterApplicationContextExecutor.java
> :401)
>         at 
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.stageOne(DependencyWaiterApplicationContextExecutor.
> java:287)
>         at 
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.refresh(DependencyWaiterApplicationContextExecutor.j
> ava:175)
>         at 
> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.refresh(AbstractDelegatedExecutionApplicationContext.java:175)
>         at 
> org.springframework.osgi.extender.internal.activator.ContextLoaderListener$2.run(ContextLoaderListener.java:716)
>         at java.lang.Thread.run(Thread.java:619)
> {code}
> and in the SM log
> {code}
> Caused by: org.xml.sax.SAXParseException: cvc-complex-type.2.3: Element 
> 'beans' cannot have character [children], because the type's content type is 
> element-only.
> at 
> com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:231)
> at 
> com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:167)
> at 
> com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:420)
> at 
> com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:354)
> at 
> com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(XMLSchemaValidator.java:453)
> at 
> com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.reportSchemaError(XMLSchemaValidator.java:3229)
> at 
> com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.elementLocallyValidComplexType(XMLSchemaValidator.java:3180)
> at 
> com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.elementLocallyValidType(XMLSchemaValidator.java:3140)
> at 
> com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.processElementContent(XMLSchemaValidator.java:3042)
> at 
> com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleEndElement(XMLSchemaValidator.java:2185)
> at 
> com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.endElement(XMLSchemaValidator.java:853)
> at 
> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1796)
> at 
> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2952)
> at 
> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:662)
> at 
> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:154)
> at 
> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:525)
> at 
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:844)
> at 
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:773)
> at 
> com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:155)
> at 
> com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:271)
> at 
> com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:320)
> at 
> org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:75)
> at 
> org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:396)
> ... 18 more
> {code}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to