You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Guillaume Nodet (JIRA)" <ji...@apache.org> on 2009/04/28 17:12:30 UTC
[jira] Created: (FELIX-1071) 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
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: FELIX-1071
URL: https://issues.apache.org/jira/browse/FELIX-1071
Project: Felix
Issue Type: Bug
Components: Karaf
Reporter: Guillaume Nodet
The following error is generated by SMX Kernel / Spring DM during bundle start after an update :
{code}
smx@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}
smx@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.