出于测试目的,我有一个blueprint.xml,就像这样。这个蓝图包含一个只处理在同一路径中引发的异常的路由,我声称一个bean该死的作为异常bean抛出java.lang.IllegalArgumentException
<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0"
xmlns:cxf="http://camel.apache.org/schema/blueprint/cxf"
xmlns:cxf-core="http://cxf.apache.org/blueprint/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=" http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd http://camel.apache.org/schema/blueprint/cxf http://camel.apache.org/schema/blueprint/cxf/camel-cxf.xsd http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd">
<camelContext xmlns="http://camel.apache.org/schema/blueprint" trace="false">
<propertyPlaceholder id="properties" location="classpath:myService.properties"/>
<!-- setup endpoint -->
<!-- <endpoint id="dead" uri="mock:dead"/> -->
<endpoint id="dead" uri="mock:dead"></endpoint>
<!-- setup a common redelivery policy, using property placeholders -->
<redeliveryPolicyProfile id="myRedelivery" redeliveryDelay="{{delay}}" maximumRedeliveries="{{max}}"/>
<bean id="damn" class="java.lang.IllegalArgumentException">
<constructor-arg index="0" value="Damn"/>
</bean>
<route id="exceptionroute">
<from uri="direct-vm:csl-mpgs-payment-1.0-fromamq1"/>
<onException redeliveryPolicyRef="myRedelivery">
<!-- refer to common redelivery policy -->
<exception>java.lang.Exception</exception>
<!-- but we can override the profile and log retry attempts at WARN level -->
<redeliveryPolicy logRetryAttempted="true" retryAttemptedLogLevel="WARN"/>
<to ref="dead"/>
</onException>
<throwException ref="damn"/>
<to uri="direct-vm:csl-mpgs-payment-1.0-fromam"/>
</route>
</camelContext>
</blueprint>
当iam部署到保险丝容器时,我收到以下错误。
Caused by: org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Invalid content was found starting with element 'bean'. One of '{"http://camel.apache.org/schema/blueprint":redeliveryPolicyProfile, "http://camel.apache.org/schema/blueprint":onException, "http://camel.apache.org/schema/blueprint":onCompletion, "http://camel.apache.org/schema/blueprint":intercept, "http://camel.apache.org/schema/blueprint":interceptFrom, "http://camel.apache.org/schema/blueprint":interceptSendToEndpoint, "http://camel.apache.org/schema/blueprint":restConfiguration, "http://camel.apache.org/schema/blueprint":rest, "http://camel.apache.org/schema/blueprint":route}' is expected.
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)[:]
at org.apache.xerces.util.ErrorHandlerWrapper.error(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.XMLErrorReporter.reportError(Unknown Source)[:]
at org.apache.xerces.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(Unknown Source)[:]
at org.apache.xerces.impl.xs.XMLSchemaValidator.reportSchemaError(Unknown Source)[:]
at org.apache.xerces.impl.xs.XMLSchemaValidator.handleStartElement(Unknown Source)[:]
at org.apache.xerces.impl.xs.XMLSchemaValidator.startElement(Unknown Source)[:]
at org.apache.xerces.jaxp.validation.DOMValidatorHelper.beginNode(Unknown Source)[:]
at org.apache.xerces.jaxp.validation.DOMValidatorHelper.validate(Unknown Source)[:]
at org.apache.xerces.jaxp.validation.DOMValidatorHelper.validate(Unknown Source)[:]
at org.apache.xerces.jaxp.validation.ValidatorImpl.validate(Unknown Source)[:]
at javax.xml.validation.Validator.validate(Unknown Source)
at org.apache.aries.blueprint.parser.Parser.validate(Parser.java:314)
如何解决这个问题?
答案 0 :(得分:2)
The <bean>
should be outside <camelContext>
as its a OSGi Blueprint bean definition, eg move it before <camelContext>