[
https://issues.apache.org/activemq/browse/SMX4KNL-253?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=50821#action_50821
]
Charles Moulliard commented on SMX4KNL-253:
-------------------------------------------
Hi,
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}
> 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: SMX4KNL-253
> URL: https://issues.apache.org/activemq/browse/SMX4KNL-253
> Project: ServiceMix Kernel
> Issue Type: Bug
> Environment: ServiceMix Kernel
> Reporter: Charles Moulliard
>
> 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}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.