Java Camel是否自动生成SOAP消息?

Java Camel是否自动生成SOAP消息?,java,web-services,soap,apache-camel,Java,Web Services,Soap,Apache Camel,如果我们提供所需的对象结构,ApacheCamel是否会自动生成SOAP消息 如果不是,为什么我应该使用Camel调用web服务 请为我提供调用任何SOAP Web服务的具体原因 我的骆驼配置是 camelContext.addRoutes(new RouteBuilder() { @Override public void configure() throws Exception { from("direct:st

如果我们提供所需的对象结构,ApacheCamel是否会自动生成SOAP消息

如果不是,为什么我应该使用Camel调用web服务

请为我提供调用任何SOAP Web服务的具体原因

我的骆驼配置是

camelContext.addRoutes(new RouteBuilder() {
            @Override
            public void configure() throws Exception {
                from("direct:start")
                        .process(new Processor() {

                            @Override
                            public void process(Exchange exchange) throws Exception {
                                System.out.println("In ........");
                                exchange.getIn().setBody("<country>india</country>");
                                System.out.println("in process method");
                                System.out.println(exchange.getExchangeId() + " : " + exchange.getFromRouteId() + " : " + exchange.isFailed());
                            }
                        }).
                        to("cxf://http://www.webservicex.net/airport.asmx?" + "wsdlURL=http://www.webservicex.net/airport.asmx?wsdl&"
                                + "serviceName={http://www.webserviceX.NET}airport&" + "portName={http://www.webserviceX.NET}airportSoap&"
                                + "defaultOperationName=GetAirportInformationByCountry&" + "dataFormat=MESSAGE")
                        .to("file:/home/viral?fileName=output.txt");

            }
        });
camelContext.addRoutes(新RouteBuilder(){
@凌驾
public void configure()引发异常{
从(“直接:开始”)
.进程(新处理器(){
@凌驾
公共作废进程(Exchange)引发异常{
系统输出打印项次(“输入…”);
exchange.getIn().setBody(“印度”);
System.out.println(“过程中方法”);
System.out.println(exchange.getExchangeId()+”:“+exchange.getFromRouteId()+”:“+exchange.isFailed());
}
}).
到(”cxf://http://www.webservicex.net/airport.asmx?“+”wsdlURL=http://www.webservicex.net/airport.asmx?wsdl&"
+“服务名={http://www.webserviceX.NET}机场&“+”端口名={http://www.webserviceX.NET}机场肥皂&“
+“defaultOperationName=GetAirPortInformation ByCountry&”+“dataFormat=MESSAGE”)
.to(“文件:/home/viral?fileName=output.txt”);
}
});
谢谢

如果我们提供所需的对象结构,ApacheCamel是否会自动生成SOAP消息

总的来说是的

你不需要自己制作肥皂信封。您只需要编写自定义的
处理器
,在其中定义SOAP消息。另外,在
camelContext
中,您需要定义
端点
路线
。它还将在出现错误时处理
soapfault
,或者您可以编写自己的自定义错误SOAP响应

更新回复您的评论:

如果您想使用通用的camel处理器,那么每次都可以在XML文件中添加消息体,并设置为SOAPBody,如下所示

...
@Override
public void process(Exchange exchange) throws Exception {
  System.out.println("In ........");

  try {
    File file = new File("soapbody.xml"); // generic body in separate XML file for every time 
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
    Document doc = db.parse(file);
    String body = doc.toString();
    exchange.getIn().setBody(body );

  }
  catch (Exception e) {
    e.printStackTrace();
  }
  System.out.println("in process method");
  System.out.println(exchange.getExchangeId() + " : " + exchange.getFromRouteId() + " : " + exchange.isFailed());
}
...

你能分享一下你的camel配置吗?根据camel/CXF提供的3种方法(
Message
Payload
Pojo
),我猜Pojo就是你想要的。你已经读过这本书了吗?接下来,谁首先强迫你使用骆驼?为了简单地发送和接收SOAP消息,您也可以使用CXF或任何其他SOAP框架——它们中的大多数都提供某种POJOSOAP功能(通常基于JAXB),我有Pojo的搜索示例,但我无法找到它。请为我提供相同的样本代码。因为我是骆驼队的新手。提前感谢。我们需要如何在处理器中编写一些逻辑,对吗?是的,这很明显,这取决于您的业务需求。实际上,我需要开发通用实用程序,以对象的形式接受web服务的输入,现在我需要创建到soap的消息。如何在处理器中以通用方式创建soap,以便能够使用camel调用任何类型的web服务。根据您的要求,我添加了有问题的驼峰配置本身。我需要通过网络服务的国家。请建议我应该怎么做,这样我就可以调用任何类型的基于SOAP的web服务。如果您需要通用的处理器,那么您可以将消息体放在XML文件中,读取XML文件并设置在消息体中。请参阅我在Answer中的更新。实际上,我需要创建集成框架,将对象作为输入并调用web服务。就这样。我没有XML。那么,你方提出的解决方案是什么呢。