在 apache karaf 上使用 apache camel blueprint 的 Soap 请求失败
Soap request using apache camel blueprint on apache karaf fails
我正在尝试发送带有骆驼蓝图的 soap 请求,现在我收到了 blueprint.xml
<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
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 http://camel.apache.org/schema/blueprint/camel-blueprint.xsd">
<bean id="serviceBean" class="osgiBlueprintSoap.Service"/>
<cxfEndpoint id="serviceEndpoint"
address="{http://some.url/services/}SomeService"
wsdlUrl="{http://some.url/services/}SomeService?wsdl"
serviceName="{http://some.url/services/}SomeService"
portName="{http://some.url/services/}SomeServiceSoapPort">
<properties>
<entry key="dataFormat" value="MESSAGE"/>
</properties>
</cxfEndpoint>
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route id="timerToLog">
<from uri="timer:foo?period=5000"/>
<to uri="cxf:serviceBean:serviceEndpoint"/>
<to uri="file:C:/output?fileName=db.txt"/>
</route>
</camelContext>
class 服务现在只是一个空 class。
在 karaf 上部署后出现此错误
org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Invalid content was found starting with element 'cxfEndpoint'. One of '{"http://www.osgi.org/xmlns/blueprint/v1.0.0":service, "http://www.osgi.org/xmlns/blueprint/v1.0.0":reference-list, "http://www.osgi.org/xmlns/blueprint/v1.0.0":bean, "http://www.osgi.org/xmlns/blueprint/v1.0.0":reference, WC[##other:"http://www.osgi.org/xmlns/blueprint/v1.0.0"]}" is expected.
谁能告诉我这有什么问题 xml 以及我该怎么做才能发送此请求?
XML 解析器遇到错误,因为它不知道 cxfEndpoint 是什么。您必须为您的路由定义正确的 XML 名称空间才能像这样工作:
xmlns:camelcxf="http://camel.apache.org/schema/blueprint/cxf"
然后像这样引用 cxfEndpoint "camelcxf:cxfEndpoint"。
您可以在 Camel 源 here.
中看到与您的问题类似的更完整的 Blueprint CXF 示例
我正在尝试发送带有骆驼蓝图的 soap 请求,现在我收到了 blueprint.xml
<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
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 http://camel.apache.org/schema/blueprint/camel-blueprint.xsd">
<bean id="serviceBean" class="osgiBlueprintSoap.Service"/>
<cxfEndpoint id="serviceEndpoint"
address="{http://some.url/services/}SomeService"
wsdlUrl="{http://some.url/services/}SomeService?wsdl"
serviceName="{http://some.url/services/}SomeService"
portName="{http://some.url/services/}SomeServiceSoapPort">
<properties>
<entry key="dataFormat" value="MESSAGE"/>
</properties>
</cxfEndpoint>
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route id="timerToLog">
<from uri="timer:foo?period=5000"/>
<to uri="cxf:serviceBean:serviceEndpoint"/>
<to uri="file:C:/output?fileName=db.txt"/>
</route>
</camelContext>
class 服务现在只是一个空 class。
在 karaf 上部署后出现此错误
org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Invalid content was found starting with element 'cxfEndpoint'. One of '{"http://www.osgi.org/xmlns/blueprint/v1.0.0":service, "http://www.osgi.org/xmlns/blueprint/v1.0.0":reference-list, "http://www.osgi.org/xmlns/blueprint/v1.0.0":bean, "http://www.osgi.org/xmlns/blueprint/v1.0.0":reference, WC[##other:"http://www.osgi.org/xmlns/blueprint/v1.0.0"]}" is expected.
谁能告诉我这有什么问题 xml 以及我该怎么做才能发送此请求?
XML 解析器遇到错误,因为它不知道 cxfEndpoint 是什么。您必须为您的路由定义正确的 XML 名称空间才能像这样工作:
xmlns:camelcxf="http://camel.apache.org/schema/blueprint/cxf"
然后像这样引用 cxfEndpoint "camelcxf:cxfEndpoint"。
您可以在 Camel 源 here.
中看到与您的问题类似的更完整的 Blueprint CXF 示例