Camel ルートを使用して SOAP/JAX-WS 経由で Web サービスを呼び出そうとしていますが、エラーが発生し続けています: CaughtExceptionMessage:HTTP 操作は、http://xyz.com/Service with statusCode: 404 の呼び出しに失敗しました。
Soap UI を使用して同じサービスを呼び出すとファイルが機能するため、リクエストが同じようにマーシャリングされず、サービスがどのメソッドが呼び出されているかを見つけることができず、404 が発生したと推測されます。 Soap UI は次のリクエスト XML を提供します。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bfg="http://xyz.com/Service">
<soapenv:Header/>
<soapenv:Body>
<bfg:login>
<bfg:request>
<ipAddress>1.2.3.4</ipAddress>
<locationId>0</locationId>
<password>Foo</password>
<productId>1</productId>
<username>Bar</username>
<vendorSoftwareId>0</vendorSoftwareId>
</bfg:request>
</bfg:login>
</soapenv:Body>
</soapenv:Envelope>
Camel は次の XML を吐き出します。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:Envelope xmlns:ns2="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns3="http://xyz.com/Service"
xmlns:ns4="http://xyz.com/Other">
<ns2:Body>
<ns3:login>
<ns3:request>
<ipAddress>1.2.3.4</ipAddress>
<locationId>0</locationId>
<password>Foo</password>
<productId>0</productId>
<username>Bar</username>
<vendorSoftwareId>0</vendorSoftwareId>
</ns3:request>
</ns3:login>
</ns2:Body>
</ns2:Envelope>
違いはかなり小さく、実際には名前空間だけです。XML をコピーして SoapUI に貼り付けてから使用すると、有効な要求/応答が生成されます。
Camel のルートと構成は次のとおりです。
private final SoapJaxbDataFormat globalServiceSoap =
new SoapJaxbDataFormat(Service.class.getPackage().getName(),
new ServiceInterfaceStrategy(Service.class, true));
from(RouteConstants.LOGIN_SERVICE_END_POINT_URI)
.routeId("internal::loginGlobalService").marshal(globalServiceSoap)
.to(endpointUri).unmarshal(globalServiceSoap).process(postLoginProcessor);
マーシャリングされる要求オブジェクトは、その Camel ルートに向かうメッセージの本文です。Camel は 404 で失敗させるリクエストに対して何をしていますか?
どんな助けやアイデアも大歓迎です。