67.3. 使用 Java DSL
以下示例使用了名为 soap 的命名数据格式,它使用软件包 com.example.customerservice 初始化 JAXBContext。第二个参数是 ElementNameStrategy。路由能够处理普通对象和例外。(请注意,下面的操作只是将 SOAP Envelope 发送到队列。Web 服务提供商实际上需要侦听实际发生 SOAP 调用的队列,在这种情况下,它是 SOAP 请求的一种方式。如果您需要请求回复,那么您应该查看下一个示例。)
SoapJaxbDataFormat soap = new SoapJaxbDataFormat("com.example.customerservice", new ServiceInterfaceStrategy(CustomerService.class));
from("direct:start")
.marshal(soap)
.to("jms:myQueue");
SoapJaxbDataFormat soap = new SoapJaxbDataFormat("com.example.customerservice", new ServiceInterfaceStrategy(CustomerService.class));
from("direct:start")
.marshal(soap)
.to("jms:myQueue");
注意
另请参阅
,因为 SOAP 数据格式继承来自 JAXB 数据格式的大部分设置。
67.3.1. 使用 SOAP 1.2 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
由于 Camel 2.11
SoapJaxbDataFormat soap = new SoapJaxbDataFormat("com.example.customerservice", new ServiceInterfaceStrategy(CustomerService.class));
soap.setVersion("1.2");
from("direct:start")
.marshal(soap)
.to("jms:myQueue");
SoapJaxbDataFormat soap = new SoapJaxbDataFormat("com.example.customerservice", new ServiceInterfaceStrategy(CustomerService.class));
soap.setVersion("1.2");
from("direct:start")
.marshal(soap)
.to("jms:myQueue");
当使用 XML DSL 时,您可以在 <soapjaxb> 元素上设置一个 version 属性。
<!-- Defining a ServiceInterfaceStrategy for retrieving the element name when marshalling -->
<bean id="myNameStrategy" class="org.apache.camel.dataformat.soap.name.ServiceInterfaceStrategy">
<constructor-arg value="com.example.customerservice.CustomerService"/>
<constructor-arg value="true"/>
</bean>
<!-- Defining a ServiceInterfaceStrategy for retrieving the element name when marshalling -->
<bean id="myNameStrategy" class="org.apache.camel.dataformat.soap.name.ServiceInterfaceStrategy">
<constructor-arg value="com.example.customerservice.CustomerService"/>
<constructor-arg value="true"/>
</bean>
在 Camel 路由中