blob: 364cd9c6ba17f066ae53027e35027d761b759979 [file] [log] [blame]
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>CXF :: Apache Camel</title> <link rel="canonical" href="https://camel.apache.org/components/4.10.x/cxf-component.html"> <meta name="description" content="Expose SOAP WebServices using Apache CXF or connect to external WebServices using CXF WS client."> <meta name="generator" content="Antora 3.1.7"> <link rel="stylesheet" href="../../_/css/site-2955eb42a8.css"> <meta name="application-name" content="Apache Camel"> <meta property="og:title" content="CXF"> <meta property="og:site_name" content="Apache Camel"> <meta property="og:url" content="https://camel.apache.org"> <meta property="og:description" content="Camel is an open source integration framework that empowers you to quickly and easily integrate various systems consuming or producing data."> <meta property="og:type" content="website"> <meta property="og:image" content="https://camel.apache.org/_/img/logo-d-a567cee6fa.svg"> <link rel="manifest" href="../../site.webmanifest"> <link rel="apple-touch-icon-precomposed" sizes="57x57" href="../../apple-touch-icon-57x57.png"> <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../../apple-touch-icon-114x114.png"> <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../../apple-touch-icon-72x72.png"> <link rel="apple-touch-icon-precomposed" sizes="144x144" href="../../apple-touch-icon-144x144.png"> <link rel="apple-touch-icon-precomposed" sizes="60x60" href="../../apple-touch-icon-60x60.png"> <link rel="apple-touch-icon-precomposed" sizes="120x120" href="../../apple-touch-icon-120x120.png"> <link rel="apple-touch-icon-precomposed" sizes="76x76" href="../../apple-touch-icon-76x76.png"> <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../../apple-touch-icon-152x152.png"> <link rel="icon" type="image/png" href="../../favicon-196x196.png" sizes="196x196"> <link rel="icon" type="image/png" href="../../favicon-96x96.png" sizes="96x96"> <link rel="icon" type="image/png" href="../../favicon-32x32.png" sizes="32x32"> <link rel="icon" type="image/png" href="../../favicon-16x16.png" sizes="16x16"> <link rel="icon" type="image/png" href="../../favicon-128.png" sizes="128x128"> </head> <body class="article"> <header class="header"> <nav class="navbar" aria-label="Main menu"> <div class="navbar-brand"> <a class="nav-logo" href="../.."></a> <div id="topbar-nav" class="navbar-menu"> <div class="navbar-end"> <a class="navbar-item-section navbar-item navbar-topics" href="../../blog/"> <img alt="Blog" src="/_/img/blog-4c7fa4cb60.svg"> Blog </a> <a class="navbar-item-section navbar-item navbar-topics" href="../../docs/"> <img alt="Documentation" src="/_/img/documentation-abb1b7f8b1.svg"> Documentation </a> <a class="navbar-item-section navbar-item navbar-topics" href="../../community/"> <img alt="Community" src="/_/img/community-2ec8a3dc8b.svg"> Community </a> <a class="navbar-item-section navbar-item navbar-topics" href="../../download/"> <img alt="Download" src="/_/img/download-63cdd75074.svg"> Download </a> <a class="navbar-item-section navbar-item navbar-topics" href="../../security/"> <img alt="Security" src="/_/img/security-06abe157b3.svg"> Security </a> </div> </div> <div class="navbar-fill"></div> <div class="break-row"></div> <div class="navbar-search results-hidden"> <input id="search" class="search" placeholder="Search" autocomplete="off"> <img src="../../_/img/cancel-1ed239489b.svg" alt="Clear" id="search-cancel"> <div id="search_results"></div> </div> <div class="navbar-tools"> <a rel="noopener noreferrer nofollow" href="https://github.com/apache/camel/" title="Collaborate on GitHub"><svg focusable="false" class="brand-icon"><use xlink:href="../../_/img/brand-logos-f2e689f4d4.svg#github"/></svg></a> <a rel="noopener noreferrer nofollow" href="https://camel.zulipchat.com" title="Chat on Zulip"><svg focusable="false" class="brand-icon"><use xlink:href="../../_/img/brand-logos-f2e689f4d4.svg#zulip"/></svg></a> <a rel="noopener noreferrer nofollow" href="https://twitter.com/ApacheCamel" title="Follow Apache Camel on Twitter"><svg focusable="false" class="brand-icon"><use xlink:href="../../_/img/brand-logos-f2e689f4d4.svg#twitter"/></svg></a> <a rel="noopener noreferrer nofollow" href="https://www.linkedin.com/groups/2447439/" title="Apache Camel group on Linkedin"><svg focusable="false" class="brand-icon"><use xlink:href="../../_/img/brand-logos-f2e689f4d4.svg#linkedin"/></svg></a> </div> <button class="navbar-burger" data-target="topbar-nav" type="button" aria-label="Menu"> <span></span> <span></span> <span></span> </button> </div> </nav> </header> <a id="top"></a> <div class="body"> <div class="nav-container" data-component="components" data-version="next"> <aside class="nav" aria-label="Side menu"> <div class="panels"> <div class="nav-panel-menu is-active"> <input class="search" placeholder="Quick lookup"> <nav class="nav-menu" data-panel="menu" aria-label="Topics"> <h3 class="title"><a href="index.html">Camel Components</a></h3> <ul class="nav-list"> <li class="nav-item" data-depth="0"> <ul class="nav-list"> <li class="nav-item" data-depth="1"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="index.html">Components</a> <ul class="nav-list"> <li class="nav-item" data-depth="2"> <a class="nav-link" href="activemq-component.html">ActiveMQ 5.x</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="activemq6-component.html">ActiveMQ 6.x</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="ai-summary.html">AI</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="chatscript-component.html">ChatScript</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="djl-component.html">Deep Java Library</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kserve-component.html">KServe</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="langchain4j-chat-component.html">LangChain4j Chat</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="langchain4j-embeddings-component.html">LangChain4j Embeddings</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="langchain4j-tools-component.html">LangChain4j Tools</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="langchain4j-web-search-component.html">LangChain4j Web Search</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="milvus-component.html">Milvus</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="neo4j-component.html">Neo4j</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="pinecone-component.html">Pinecone</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="qdrant-component.html">Qdrant</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="tensorflow-serving-component.html">TensorFlow Serving</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="torchserve-component.html">TorchServe</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="weaviate-component.html">weaviate</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="amqp-component.html">AMQP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="arangodb-component.html">ArangoDb</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="as2-component.html">AS2</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="asterisk-component.html">Asterisk</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="atmosphere-websocket-component.html">Atmosphere Websocket</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="atom-component.html">Atom</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="avro-component.html">Avro RPC</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="aws-summary.html">AWS</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-athena-component.html">AWS Athena</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws-bedrock-component.html">AWS Bedrock</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws-bedrock-agent-component.html">AWS Bedrock Agent</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws-bedrock-agent-runtime-component.html">AWS Bedrock Agent Runtime</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws-cloudtrail-component.html">AWS Cloudtrail</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-cw-component.html">AWS CloudWatch</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws-config-component.html">AWS Config Service</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-ddb-component.html">AWS DynamoDB</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-ddbstream-component.html">AWS DynamoDB Streams</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-ec2-component.html">AWS Elastic Compute Cloud (EC2)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-ecs-component.html">AWS Elastic Container Service (ECS)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-eks-component.html">AWS Elastic Kubernetes Service (EKS)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-eventbridge-component.html">AWS Eventbridge</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-iam-component.html">AWS Identity and Access Management (IAM)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-kms-component.html">AWS Key Management Service (KMS)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-kinesis-component.html">AWS Kinesis</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-kinesis-firehose-component.html">AWS Kinesis Firehose</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-lambda-component.html">AWS Lambda</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-msk-component.html">AWS Managed Streaming for Apache Kafka (MSK)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-mq-component.html">AWS MQ</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-redshift-data-component.html">AWS RedshiftData</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-s3-component.html">AWS S3 Storage Service</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws-secrets-manager-component.html">AWS Secrets Manager</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-sts-component.html">AWS Security Token Service (STS)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-ses-component.html">AWS Simple Email Service (SES)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-sns-component.html">AWS Simple Notification System (SNS)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-sqs-component.html">AWS Simple Queue Service (SQS)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-step-functions-component.html">AWS StepFunctions</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-timestream-component.html">AWS Timestream</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-translate-component.html">AWS Translate</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="pqc-component.html">PQC Algorithms</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="azure-summary.html">Azure</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="azure-cosmosdb-component.html">Azure CosmosDB</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="azure-eventhubs-component.html">Azure Event Hubs</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="azure-files-component.html">Azure Files</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="azure-key-vault-component.html">Azure Key Vault</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="azure-servicebus-component.html">Azure ServiceBus</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="azure-storage-blob-component.html">Azure Storage Blob Service</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="azure-storage-datalake-component.html">Azure Storage Data Lake Service</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="azure-storage-queue-component.html">Azure Storage Queue Service</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="bean-component.html">Bean</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="bean-validator-component.html">Bean Validator</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="bonita-component.html">Bonita</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="box-component.html">Box</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="braintree-component.html">Braintree</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="browse-component.html">Browse</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="caffeine-cache-component.html">Caffeine Cache</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="caffeine-loadcache-component.html">Caffeine LoadCache</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="cql-component.html">Cassandra CQL</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="chunk-component.html">Chunk</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="class-component.html">Class</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="clickup-component.html">ClickUp</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="cm-sms-component.html">CM SMS Gateway</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="coap-component.html">CoAP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="cometd-component.html">CometD</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="consul-component.html">Consul</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="controlbus-component.html">Control Bus</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="couchbase-component.html">Couchbase</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="couchdb-component.html">CouchDB</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="cron-component.html">Cron</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="crypto-component.html">Crypto (JCE)</a> </li> <li class="nav-item is-current-page" data-depth="2"> <a class="nav-link" href="cxf-component.html">CXF</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="cxfrs-component.html">CXF-RS</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dapr-component.html">Dapr</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformat-component.html">Data Format</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataset-component.html">Dataset</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataset-test-component.html">DataSet Test</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="debezium-summary.html">Debezium</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="debezium-db2-component.html">Debezium DB2 Connector</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="debezium-mongodb-component.html">Debezium MongoDB Connector</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="debezium-mysql-component.html">Debezium MySQL Connector</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="debezium-oracle-component.html">Debezium Oracle Connector</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="debezium-postgres-component.html">Debezium PostgresSQL Connector</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="debezium-sqlserver-component.html">Debezium SQL Server Connector</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dfdl-component.html">DFDL</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dhis2-component.html">DHIS2</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="digitalocean-component.html">DigitalOcean</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="direct-component.html">Direct</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="disruptor-component.html">Disruptor</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="disruptor-vm-component.html">Disruptor VM</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dns-component.html">DNS</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="docker-component.html">Docker</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="drill-component.html">Drill</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dropbox-component.html">Dropbox</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dynamic-router-component.html">Dynamic Router</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dynamic-router-control-component.html">Dynamic Router Control</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="ehcache-component.html">Ehcache</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="elasticsearch-component.html">Elasticsearch</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="elasticsearch-rest-client-component.html">Elasticsearch Low level Rest Client</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="exec-component.html">Exec</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="fhir-component.html">FHIR</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="file-component.html">File</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="file-watch-component.html">File Watch</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="flatpack-component.html">Flatpack</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="flink-component.html">Flink</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="flowable-component.html">Flowable</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="fop-component.html">FOP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="freemarker-component.html">Freemarker</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="ftp-component.html">FTP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="ftps-component.html">FTPS</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="geocoder-component.html">Geocoder</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="git-component.html">Git</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="github-component.html">GitHub</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="google-summary.html">Google</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="google-bigquery-component.html">Google BigQuery</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="google-bigquery-sql-component.html">Google BigQuery Standard SQL</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="google-calendar-component.html">Google Calendar</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="google-calendar-stream-component.html">Google Calendar Stream</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="google-functions-component.html">Google Cloud Functions</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="google-drive-component.html">Google Drive</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="google-mail-component.html">Google Mail</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="google-mail-stream-component.html">Google Mail Stream</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="google-pubsub-component.html">Google Pubsub</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="google-pubsub-lite-component.html">Google PubSub Lite</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="google-secret-manager-component.html">Google Secret Manager</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="google-sheets-component.html">Google Sheets</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="google-sheets-stream-component.html">Google Sheets Stream</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="google-storage-component.html">Google Storage</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="grape-component.html">Grape</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="graphql-component.html">GraphQL</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="grpc-component.html">gRPC</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="guava-eventbus-component.html">Guava EventBus</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="hashicorp-vault-component.html">Hashicorp Vault</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="hazelcast-summary.html">Hazelcast</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hazelcast-atomicvalue-component.html">Hazelcast Atomic Number</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hazelcast-instance-component.html">Hazelcast Instance</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hazelcast-list-component.html">Hazelcast List</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hazelcast-map-component.html">Hazelcast Map</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hazelcast-multimap-component.html">Hazelcast Multimap</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hazelcast-queue-component.html">Hazelcast Queue</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hazelcast-replicatedmap-component.html">Hazelcast Replicated Map</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hazelcast-ringbuffer-component.html">Hazelcast Ringbuffer</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hazelcast-seda-component.html">Hazelcast SEDA</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hazelcast-set-component.html">Hazelcast Set</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hazelcast-topic-component.html">Hazelcast Topic</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="http-component.html">HTTP</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="hwcloud-summary.html">Huawei Cloud</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hwcloud-frs-component.html">Huawei Cloud Face Recognition Service (FRS)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hwcloud-imagerecognition-component.html">Huawei Cloud Image Recognition</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hwcloud-dms-component.html">Huawei Distributed Message Service (DMS)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hwcloud-functiongraph-component.html">Huawei FunctionGraph</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hwcloud-iam-component.html">Huawei Identity and Access Management (IAM)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hwcloud-obs-component.html">Huawei Object Storage Service (OBS)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hwcloud-smn-component.html">Huawei Simple Message Notification (SMN)</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="ibm-secrets-manager-component.html">IBM Secrets Manager</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="iec60870-client-component.html">IEC 60870 Client</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="iec60870-server-component.html">IEC 60870 Server</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="ignite-summary.html">Ignite</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="ignite-cache-component.html">Ignite Cache</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="ignite-compute-component.html">Ignite Compute</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="ignite-events-component.html">Ignite Events</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="ignite-idgen-component.html">Ignite ID Generator</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="ignite-messaging-component.html">Ignite Messaging</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="ignite-queue-component.html">Ignite Queues</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="ignite-set-component.html">Ignite Sets</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="infinispan-component.html">Infinispan</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="infinispan-embedded-component.html">Infinispan Embedded</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="influxdb-component.html">InfluxDB</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="influxdb2-component.html">InfluxDB2</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="irc-component.html">IRC</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="ironmq-component.html">IronMQ</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jcache-component.html">JCache</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jcr-component.html">JCR</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jdbc-component.html">JDBC</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jetty-component.html">Jetty</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jgroups-component.html">JGroups</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jgroups-raft-component.html">JGroups raft</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jira-component.html">Jira</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jms-component.html">JMS</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jmx-component.html">JMX</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jolt-component.html">JOLT</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jooq-component.html">JOOQ</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jpa-component.html">JPA</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jslt-component.html">JSLT</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="json-validator-component.html">JSON Schema Validator</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jsonata-component.html">JSONata</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="json-patch-component.html">JsonPatch</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jt400-component.html">JT400</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jte-component.html">JTE</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="kafka-component.html">Kafka</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="kamelet-component.html">Kamelet</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="knative-component.html">Knative</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="knative-http-component.html">Knative Http</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="kubernetes-summary.html">Kubernetes</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-config-maps-component.html">Kubernetes ConfigMap</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-cronjob-component.html">Kubernetes Cronjob</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-custom-resources-component.html">Kubernetes Custom Resources</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-deployments-component.html">Kubernetes Deployments</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-events-component.html">Kubernetes Event</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-hpa-component.html">Kubernetes HPA</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-job-component.html">Kubernetes Job</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-namespaces-component.html">Kubernetes Namespaces</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-nodes-component.html">Kubernetes Nodes</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-persistent-volumes-component.html">Kubernetes Persistent Volume</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-persistent-volumes-claims-component.html">Kubernetes Persistent Volume Claim</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-pods-component.html">Kubernetes Pods</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-replication-controllers-component.html">Kubernetes Replication Controller</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-resources-quota-component.html">Kubernetes Resources Quota</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-secrets-component.html">Kubernetes Secrets</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-service-accounts-component.html">Kubernetes Service Account</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-services-component.html">Kubernetes Services</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="openshift-build-configs-component.html">OpenShift Build Config</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="openshift-builds-component.html">OpenShift Builds</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="openshift-deploymentconfigs-component.html">OpenShift Deployment Configs</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="kudu-component.html">Kudu</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="language-component.html">Language</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="ldap-component.html">LDAP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="ldif-component.html">LDIF</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="log-component.html">Log Data</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="lucene-component.html">Lucene</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="lumberjack-component.html">Lumberjack</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="mail-component.html">Mail</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="mapstruct-component.html">MapStruct</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="master-component.html">Master</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="metrics-component.html">Metrics</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="micrometer-component.html">Micrometer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="mina-component.html">Mina</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="minio-component.html">Minio</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="mllp-component.html">MLLP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="mock-component.html">Mock</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="mongodb-component.html">MongoDB</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="mongodb-gridfs-component.html">MongoDB GridFS</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="mustache-component.html">Mustache</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="mvel-component.html">MVEL</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="mybatis-component.html">MyBatis</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="mybatis-bean-component.html">MyBatis Bean</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="nats-component.html">Nats</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="netty-component.html">Netty</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="netty-http-component.html">Netty HTTP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="nitrite-component.html">Nitrite</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="oaipmh-component.html">OAI-PMH</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="oauth-component.html">OAuth</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="olingo2-component.html">Olingo2</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="olingo4-component.html">Olingo4</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="opensearch-component.html">OpenSearch</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="openstack-summary.html">OpenStack</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="openstack-cinder-component.html">OpenStack Cinder</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="openstack-glance-component.html">OpenStack Glance</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="openstack-keystone-component.html">OpenStack Keystone</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="openstack-neutron-component.html">OpenStack Neutron</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="openstack-nova-component.html">OpenStack Nova</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="openstack-swift-component.html">OpenStack Swift</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="optaplanner-component.html">OptaPlanner</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="paho-component.html">Paho</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="paho-mqtt5-component.html">Paho MQTT 5</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="pdf-component.html">PDF</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="platform-http-component.html">Platform HTTP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="plc4x-component.html">PLC4X</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="pgevent-component.html">PostgresSQL Event</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="pg-replication-slot-component.html">PostgresSQL Replication Slot</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="lpr-component.html">Printer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="properties-component.html">Properties</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="pubnub-component.html">PubNub</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="pulsar-component.html">Pulsar</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="quartz-component.html">Quartz</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="quickfix-component.html">QuickFix</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="reactive-streams-component.html">Reactive Streams</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="ref-component.html">Ref</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="rest-component.html">REST</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="rest-api-component.html">REST API</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="rest-openapi-component.html">REST OpenApi</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="robotframework-component.html">Robot Framework</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="rocketmq-component.html">RocketMQ</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="rss-component.html">RSS</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="saga-component.html">Saga</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="salesforce-component.html">Salesforce</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="sap-netweaver-component.html">SAP NetWeaver</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="scheduler-component.html">Scheduler</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="schematron-component.html">Schematron</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="scp-component.html">SCP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="seda-component.html">SEDA</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="service-component.html">Service</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="servicenow-component.html">ServiceNow</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="servlet-component.html">Servlet</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="sftp-component.html">SFTP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="sjms-component.html">Simple JMS</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="sjms2-component.html">Simple JMS2</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="slack-component.html">Slack</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="smb-component.html">SMB</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="smooks-component.html">Smooks</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="smpp-component.html">SMPP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="snmp-component.html">SNMP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="solr-component.html">Solr</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="splunk-component.html">Splunk</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="splunk-hec-component.html">Splunk HEC</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="spring-summary.html">Spring</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="spring-batch-component.html">Spring Batch</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="spring-event-component.html">Spring Event</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="spring-jdbc-component.html">Spring JDBC</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="spring-ldap-component.html">Spring LDAP</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="spring-rabbitmq-component.html">Spring RabbitMQ</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="spring-redis-component.html">Spring Redis</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="spring-ws-component.html">Spring WebService</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="sql-component.html">SQL</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="sql-stored-component.html">SQL Stored Procedure</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="ssh-component.html">SSH</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="stax-component.html">StAX</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="stitch-component.html">Stitch</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="stomp-component.html">Stomp</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="stream-component.html">Stream</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="string-template-component.html">String Template</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="stub-component.html">Stub</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="tahu-summary.html">Tahu</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="tahu-edge-component.html">Tahu Edge Node / Device</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="tahu-host-component.html">Tahu Host Application</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="telegram-component.html">Telegram</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="thrift-component.html">Thrift</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="thymeleaf-component.html">Thymeleaf</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="tika-component.html">Tika</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="timer-component.html">Timer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="twilio-component.html">Twilio</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="twitter-directmessage-component.html">Twitter Direct Message</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="twitter-search-component.html">Twitter Search</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="twitter-timeline-component.html">Twitter Timeline</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="undertow-component.html">Undertow</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="validator-component.html">Validator</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="velocity-component.html">Velocity</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="vertx-component.html">Vert.x</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="vertx-http-component.html">Vert.x HTTP Client</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="vertx-websocket-component.html">Vert.x WebSocket</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="wasm-component.html">Wasm</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="weather-component.html">Weather</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="web3j-component.html">Web3j Ethereum Blockchain</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="webhook-component.html">Webhook</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="whatsapp-component.html">WhatsApp</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="wordpress-component.html">WordPress</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="workday-component.html">Workday</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="xchange-component.html">XChange</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="xj-component.html">XJ</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="xmlsecurity-sign-component.html">XML Security Sign</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="xmlsecurity-verify-component.html">XML Security Verify</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="xmpp-component.html">XMPP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="xquery-component.html">XQuery</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="xslt-component.html">XSLT</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="xslt-saxon-component.html">XSLT Saxon</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="zeebe-component.html">Zeebe</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="zendesk-component.html">Zendesk</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="zookeeper-component.html">ZooKeeper</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="zookeeper-master-component.html">ZooKeeper Master</a> </li> </ul> </li> </ul> </li> <li class="nav-item" data-depth="0"> <ul class="nav-list"> <li class="nav-item" data-depth="1"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="dataformats/index.html">Data Formats</a> <ul class="nav-list"> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/asn1-dataformat.html">ASN.1 File</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/avro-dataformat.html">Avro</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/avroJackson-dataformat.html">Avro Jackson</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/barcode-dataformat.html">Barcode</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/base64-dataformat.html">Base64</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/beanio-dataformat.html">BeanIO</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/bindy-dataformat.html">Bindy</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/cbor-dataformat.html">CBOR</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/crypto-dataformat.html">Crypto (Java Cryptographic Extension)</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/csv-dataformat.html">CSV</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/dfdl-dataformat.html">DFDL</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/fhirJson-dataformat.html">FHIR JSon</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/fhirXml-dataformat.html">FHIR XML</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/flatpack-dataformat.html">Flatpack</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/fory-dataformat.html">Fory</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/grok-dataformat.html">Grok</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/gzipDeflater-dataformat.html">GZip Deflater</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/hl7-dataformat.html">HL7</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/ical-dataformat.html">iCal</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/iso8583-dataformat.html">ISO-8583</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/jacksonXml-dataformat.html">Jackson XML</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/jaxb-dataformat.html">JAXB</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/fastjson-dataformat.html">JSON Fastjson</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/gson-dataformat.html">JSON Gson</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/jackson-dataformat.html">JSON Jackson</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/jsonb-dataformat.html">JSON JSON-B</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/jsonApi-dataformat.html">JSonApi</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/lzf-dataformat.html">LZF Deflate Compression</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/mimeMultipart-dataformat.html">MIME Multipart</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/parquetAvro-dataformat.html">Parquet File</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/pgp-dataformat.html">PGP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/protobuf-dataformat.html">Protobuf</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/protobufJackson-dataformat.html">Protobuf Jackson</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/rss-dataformat.html">RSS</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/smooks-dataformat.html">Smooks</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/soap-dataformat.html">SOAP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/swiftMt-dataformat.html">SWIFT MT</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/swiftMx-dataformat.html">SWIFT MX</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/syslog-dataformat.html">Syslog</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/tarFile-dataformat.html">Tar File</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/thrift-dataformat.html">Thrift</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/univocityCsv-dataformat.html">uniVocity CSV</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/univocityFixed-dataformat.html">uniVocity Fixed Length</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/univocityTsv-dataformat.html">uniVocity TSV</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/xmlSecurity-dataformat.html">XML Security</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/snakeYaml-dataformat.html">YAML SnakeYAML</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/zipDeflater-dataformat.html">Zip Deflater</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/zipFile-dataformat.html">Zip File</a> </li> </ul> </li> </ul> </li> <li class="nav-item" data-depth="0"> <ul class="nav-list"> <li class="nav-item" data-depth="1"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="languages/index.html">Languages</a> <ul class="nav-list"> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/bean-language.html">Bean Method</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/constant-language.html">Constant</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/csimple-language.html">CSimple</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/datasonnet-language.html">DataSonnet</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/exchangeProperty-language.html">ExchangeProperty</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/file-language.html">File</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/groovy-language.html">Groovy</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/header-language.html">Header</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/hl7terser-language.html">HL7 Terser</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/java-language.html">Java</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/js-language.html">JavaScript</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/joor-language.html">jOOR</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/jq-language.html">JQ</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/jsonpath-language.html">JSONPath</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/mvel-language.html">MVEL</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/ognl-language.html">OGNL</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/python-language.html">Python</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/ref-language.html">Ref</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/simple-language.html">Simple</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/spel-language.html">SpEL</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/tokenize-language.html">Tokenize</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/variable-language.html">Variable</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/wasm-language.html">Wasm</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/xtokenize-language.html">XML Tokenize</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/xpath-language.html">XPath</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/xquery-language.html">XQuery</a> </li> </ul> </li> </ul> </li> <li class="nav-item" data-depth="0"> <ul class="nav-list"> <li class="nav-item" data-depth="1"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="others/index.html">Miscellaneous Components</a> <ul class="nav-list"> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="others/langchain4j-tokenizer.html">LangChain4j Tokenizer</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/attachments.html">Attachments</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/aws-xray.html">AWS XRay</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/azure-schema-registry.html">Azure Schema Registry</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/cli-connector.html">CLI Connector</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/cloudevents.html">Cloudevents</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/csimple-joor.html">CSimple jOOR</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/cxf-transport.html">CXF Transport</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/debug.html">Debug</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/dsl.html">DSL</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="others/dsl-modeline.html">DSL Modeline</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="others/java-joor-dsl.html">Java DSL (runtime compiled)</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="others/java-xml-jaxb-dsl.html">Jaxb XML Dsl</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="others/kamelet-main.html">Kamelet Main</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="others/java-xml-io-dsl.html">XML Io Dsl</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="others/yaml-dsl.html">YAML DSL</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/elytron.html">Elytron</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/headersmap.html">Headersmap</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/jandex.html">Jandex</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/jasypt.html">Jasypt</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/jfr.html">JFR</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/jta.html">JTA</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/leveldb.html">LevelDB</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/lra.html">LRA</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/mail-microsoft-oauth.html">Mail Microsoft Oauth</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/main.html">Main</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/observation.html">Micrometer Observability</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/micrometer-prometheus.html">Micrometer Prometheus</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/microprofile-config.html">Microprofile Config</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/microprofile-fault-tolerance.html">Microprofile Fault Tolerance</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/microprofile-health.html">Microprofile Health</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/observability-services.html">Observability Services</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/openapi-java.html">Openapi Java</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/openapi-validator.html">Openapi Validator</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/opentelemetry.html">OpenTelemetry</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/opentelemetry2.html">Opentelemetry2</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/platform-http-jolokia.html">Platform HTTP Jolokia</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/platform-http-main.html">Platform Http Main</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/platform-http-vertx.html">Platform Http Vertx</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/reactive-executor-tomcat.html">Reactive Executor Tomcat</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/reactive-executor-vertx.html">Reactive Executor Vert.x</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/reactor.html">Reactor</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/redis.html">Redis</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/resilience4j.html">Resilience4j</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/resourceresolver-github.html">Resourceresolver Github</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/rxjava.html">RxJava</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/shiro.html">Shiro</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="others/spring-cloud-config.html">Spring Cloud Config</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/spring-main.html">Spring Main</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/spring-security.html">Spring Security</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/spring-xml.html">Spring XML</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/springdoc.html">Springdoc</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/telemetry.html">Telemetry</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/telemetry-dev.html">Telemetry Dev</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/test-junit5.html">Test JUnit5</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/test-main-junit5.html">Test Main JUnit5</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/test-spring-junit5.html">Test Spring JUnit5</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/threadpoolfactory-vertx.html">ThreadPoolFactory Vert.x</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/tracing.html">Tracing</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/undertow-spring-security.html">Undertow Spring Security</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/wal.html">Write Ahead Log Strategy for Resume API</a> </li> </ul> </li> </ul> </li> </ul> </li> <li class="nav-item" data-depth="0"> <ul class="nav-list"> <li class="nav-item" data-depth="1"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="eips/enterprise-integration-patterns.html">Enterprise Integration Patterns</a> <ul class="nav-list"> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/aggregate-eip.html">Aggregate</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/batchConfig-eip.html">BatchConfig</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/bean-eip.html">Bean</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/change-data-capture.html">Change Data Capture</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/channel-adapter.html">Channel Adapter</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/choice-eip.html">Choice</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/circuitBreaker-eip.html">Circuit Breaker</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/claimCheck-eip.html">Claim Check</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/competing-consumers.html">Competing Consumers</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/composed-message-processor.html">Composed Message Processor</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/content-enricher.html">Content Enricher</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/content-filter-eip.html">Content Filter</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/convertBodyTo-eip.html">Convert Body To</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/convertHeaderTo-eip.html">Convert Header To</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/convertVariableTo-eip.html">Convert Variable To</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/correlation-identifier.html">Correlation Identifier</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/customLoadBalancer-eip.html">Custom Load Balancer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/dead-letter-channel.html">Dead Letter Channel</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/delay-eip.html">Delay</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/durable-subscriber.html">Durable Subscriber</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/dynamicRouter-eip.html">Dynamic Router</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/enrich-eip.html">Enrich</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/eventDrivenConsumer-eip.html">Event Driven Consumer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/event-message.html">Event Message</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/failoverLoadBalancer-eip.html">Failover Load Balancer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/faultToleranceConfiguration-eip.html">Fault Tolerance Configuration</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/fault-tolerance-eip.html">Fault Tolerance EIP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/filter-eip.html">Filter</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/from-eip.html">From</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/guaranteed-delivery.html">Guaranteed Delivery</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/idempotentConsumer-eip.html">Idempotent Consumer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/intercept.html">Intercept</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/kamelet-eip.html">Kamelet</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/loadBalance-eip.html">Load Balance</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/log-eip.html">Logger</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/loop-eip.html">Loop</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/marshal-eip.html">Marshal</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/message.html">Message</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/message-broker.html">Message Broker</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/message-bus.html">Message Bus</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/message-channel.html">Message Channel</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/message-dispatcher.html">Message Dispatcher</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/message-endpoint.html">Message Endpoint</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/message-expiration.html">Message Expiration</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/message-history.html">Message History</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/message-router.html">Message Router</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/message-translator.html">Message Translator</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/messaging-bridge.html">Messaging Bridge</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/messaging-gateway.html">Messaging Gateway</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/messaging-mapper.html">Messaging Mapper</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/multicast-eip.html">Multicast</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/normalizer.html">Normalizer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/onFallback-eip.html">On Fallback</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/pipeline-eip.html">Pipeline</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/point-to-point-channel.html">Point to Point Channel</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/poll-eip.html">Poll</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/pollEnrich-eip.html">Poll Enrich</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/polling-consumer.html">Polling Consumer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/process-eip.html">Process</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/process-manager.html">Process Manager</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/publish-subscribe-channel.html">Publish Subscribe Channel</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/randomLoadBalancer-eip.html">Random Load Balancer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/recipientList-eip.html">Recipient List</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/removeHeader-eip.html">Remove Header</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/removeHeaders-eip.html">Remove Headers</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/removeProperties-eip.html">Remove Properties</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/removeProperty-eip.html">Remove Property</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/removeVariable-eip.html">Remove Variable</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/requestReply-eip.html">Request Reply</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/resequence-eip.html">Resequence</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/resilience4jConfiguration-eip.html">Resilience4j Configuration</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/resilience4j-eip.html">Resilience4j EIP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/resume-strategies.html">Resume Strategies</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/return-address.html">Return Address</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/rollback-eip.html">Rollback</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/roundRobinLoadBalancer-eip.html">Round Robin Load Balancer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/routingSlip-eip.html">Routing Slip</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/saga-eip.html">Saga</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/sample-eip.html">Sample</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/scatter-gather.html">Scatter-Gather</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/script-eip.html">Script</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/selective-consumer.html">Selective Consumer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/service-activator.html">Service Activator</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/serviceCall-eip.html">Service Call</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/setBody-eip.html">Set Body</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/setHeader-eip.html">Set Header</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/setHeaders-eip.html">Set Headers</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/setProperty-eip.html">Set Property</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/setVariable-eip.html">Set Variable</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/setVariables-eip.html">Set Variables</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/sort-eip.html">Sort</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/split-eip.html">Split</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/step-eip.html">Step</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/stickyLoadBalancer-eip.html">Sticky Load Balancer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/stop-eip.html">Stop</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/streamConfig-eip.html">StreamConfig</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/threads-eip.html">Threads</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/throttle-eip.html">Throttle</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/to-eip.html">To</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/toD-eip.html">To D</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/topicLoadBalancer-eip.html">Topic Load Balancer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/transactional-client.html">Transactional Client</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/transform-eip.html">Transform</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/unmarshal-eip.html">Unmarshal</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/validate-eip.html">Validate</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/weightedLoadBalancer-eip.html">Weighted Load Balancer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/wireTap-eip.html">Wire Tap</a> </li> </ul> </li> </ul> </li> </ul> </nav> </div> <div class="nav-panel-explore" data-panel="explore"> <div class="context"> <span class="title">Camel Components</span> <span class="version">Next (Pre-release)</span> </div> <ul class="components"> <li class="component"> <span class="title"> <a href="../../manual/index.html">User manual</a> </span></li> <li class="component is-current"><span class="title">Camel Components</span> <ul class="versions"> <li class="version is-current"> <a href="index.html">Next (Pre-release)</a> </li> <li class="version"> <a href="../4.10.x/index.html">4.10.x (LTS)</a> </li> <li class="version"> <a href="../4.8.x/index.html">4.8.x (LTS)</a> </li> <li class="version"> <a href="../3.22.x/index.html">3.22.x (LTS)</a> </li> </ul></li> <li class="component"> <span class="title"> <a href="../../camel-core/index.html">Camel Core</a> </span></li> <li class="component"><span class="title">Camel K</span> <ul class="versions"> <li class="version"> <a href="../../camel-k/next/index.html">Next (Pre-release)</a> </li> <li class="version"> <a href="../../camel-k/2.7.x/index.html">2.7.x (LTS)</a> </li> <li class="version"> <a href="../../camel-k/2.5.x/index.html">2.5.x (LTS)</a> </li> </ul></li> <li class="component"><span class="title">Camel Kafka Connector</span> <ul class="versions"> <li class="version"> <a href="../../camel-kafka-connector/next/index.html">Next (Pre-release)</a> </li> <li class="version"> <a href="../../camel-kafka-connector/4.10.x/index.html">4.10.x</a> </li> </ul></li> <li class="component"><span class="title">Kamelet Catalog</span> <ul class="versions"> <li class="version"> <a href="../../camel-kamelets/next/index.html">Next (Pre-release)</a> </li> <li class="version"> <a href="../../camel-kamelets/4.10.x/index.html">4.10.x (LTS)</a> </li> <li class="version"> <a href="../../camel-kamelets/4.8.x/index.html">4.8.x (LTS)</a> </li> </ul></li> <li class="component"><span class="title">Camel Karaf</span> <ul class="versions"> <li class="version"> <a href="../../camel-karaf/4.9.x/index.html">4.9.x</a> </li> <li class="version"> <a href="../../camel-karaf/4.8.x/index.html">4.8.x</a> </li> <li class="version"> <a href="../../camel-karaf/3.22.x/index.html">3.22.x (LTS)</a> </li> </ul></li> <li class="component"><span class="title">Camel Quarkus</span> <ul class="versions"> <li class="version"> <a href="../../camel-quarkus/next/index.html">Next (Pre-release)</a> </li> <li class="version"> <a href="../../camel-quarkus/3.20.x/index.html">3.20.x</a> </li> <li class="version"> <a href="../../camel-quarkus/3.15.x/index.html">3.15.x</a> </li> </ul></li> <li class="component"><span class="title">Camel Spring Boot</span> <ul class="versions"> <li class="version"> <a href="../../camel-spring-boot/next/index.html">Next (Pre-release)</a> </li> <li class="version"> <a href="../../camel-spring-boot/4.10.x/index.html">4.10.x (LTS)</a> </li> <li class="version"> <a href="../../camel-spring-boot/4.8.x/index.html">4.8.x (LTS)</a> </li> <li class="version"> <a href="../../camel-spring-boot/3.22.x/index.html">3.22.x (LTS)</a> </li> </ul></li> </ul> </div> </div> </aside> </div> <main class="article"> <nav class="toolbar" aria-label="Toolbar"> <button class="nav-toggle" type="button" aria-label="Toggle submenu"></button> <nav class="breadcrumbs" aria-label="breadcrumbs"> <ul> <li><a href="index.html">Camel Components</a></li> <li><a href="index.html">Components</a></li> <li><a href="cxf-component.html">CXF</a></li> </ul> </nav> <div class="page-versions"> <button class="version-menu-toggle" type="button" title="Show other versions of page">Next (Pre-release)</button> <div class="version-menu"> <a class="version is-current" href="cxf-component.html">Next (Pre-release)</a> <a class="version" href="../4.10.x/cxf-component.html">4.10.x (LTS)</a> <a class="version" href="../4.8.x/cxf-component.html">4.8.x (LTS)</a> <a class="version" href="../3.22.x/cxf-component.html">3.22.x (LTS)</a> </div> </div> <div class="edit-this-page"><a href="https://github.com/apache/camel/edit/main/docs/components/modules/ROOT/pages/cxf-component.adoc">Edit this Page</a></div> </nav> <div class="content"> <article class="doc"> <h1 class="page">CXF</h1> <div id="preamble"> <div class="sectionbody"> <div class="paragraph"> <p><strong>Since Camel 1.0</strong></p> </div> <div class="paragraph"> <p><strong>Both producer and consumer are supported</strong></p> </div> <div class="paragraph"> <p>The CXF component provides integration with <a href="http://cxf.apache.org">Apache CXF</a> for connecting to <a href="http://cxf.apache.org/docs/jax-ws.html">JAX-WS</a> services hosted in CXF.</p> </div> <div class="admonitionblock tip"> <div class="table-wrapper"><table> <tr> <td class="icon"> <i class="fa icon-tip" title="Tip"></i> </td> <td class="content"> <div class="paragraph"> <p>When using CXF in streaming mode - check the DataFormat options below, then also read about <a href="../../manual/stream-caching.html" class="xref page">stream caching</a>.</p> </div> </td> </tr> </table></div> </div> <div class="paragraph"> <p>Maven users must add the following dependency to their <code>pom.xml</code> for this component:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;dependency&gt;
&lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
&lt;artifactId&gt;camel-cxf-soap&lt;/artifactId&gt;
&lt;version&gt;x.x.x&lt;/version&gt;
&lt;!-- use the same version as your Camel core version --&gt;
&lt;/dependency&gt;</code></pre> </div> </div> </div> </div> <div class="sect1"> <h2 id="_uri_format"><a class="anchor" href="#_uri_format"></a>URI format</h2> <div class="sectionbody"> <div class="paragraph"> <p>There are two URI formats for this endpoint: <strong>cxfEndpoint</strong> and <strong>someAddress</strong>.</p> </div> <div class="listingblock"> <div class="content"> <pre>cxf:bean:cxfEndpoint[?options]</pre> </div> </div> <div class="paragraph"> <p>Where <strong>cxfEndpoint</strong> represents a bean ID that references a bean in the Spring bean registry. With this URI format, most of the endpoint details are specified in the bean definition.</p> </div> <div class="listingblock"> <div class="content"> <pre>cxf://someAddress[?options]</pre> </div> </div> <div class="paragraph"> <p>Where <code>someAddress</code> specifies the CXF endpoint&#8217;s address. With this URI format, most of the endpoint details are specified using options.</p> </div> <div class="paragraph"> <p>For either style above, you can append options to the URI as follows:</p> </div> <div class="listingblock"> <div class="content"> <pre>cxf:bean:cxfEndpoint?wsdlURL=wsdl/hello_world.wsdl&amp;dataFormat=PAYLOAD</pre> </div> </div> </div> </div> <div class="sect1"> <h2 id="_configuring_options"><a class="anchor" href="#_configuring_options"></a>Configuring Options</h2> <div class="sectionbody"> <div class="paragraph"> <p>Camel components are configured on two separate levels:</p> </div> <div class="ulist"> <ul> <li> <p>component level</p> </li> <li> <p>endpoint level</p> </li> </ul> </div> <div class="sect2"> <h3 id="_configuring_component_options"><a class="anchor" href="#_configuring_component_options"></a>Configuring Component Options</h3> <div class="paragraph"> <p>At the component level, you set general and shared configurations that are, then, inherited by the endpoints. It is the highest configuration level.</p> </div> <div class="paragraph"> <p>For example, a component may have security settings, credentials for authentication, urls for network connection and so forth.</p> </div> <div class="paragraph"> <p>Some components only have a few options, and others may have many. Because components typically have pre-configured defaults that are commonly used, then you may often only need to configure a few options on a component; or none at all.</p> </div> <div class="paragraph"> <p>You can configure components using:</p> </div> <div class="ulist"> <ul> <li> <p>the <a href="../../manual/component-dsl.html" class="xref page">Component DSL</a>.</p> </li> <li> <p>in a configuration file (<code>application.properties</code>, <code>*.yaml</code> files, etc).</p> </li> <li> <p>directly in the Java code.</p> </li> </ul> </div> </div> <div class="sect2"> <h3 id="_configuring_endpoint_options"><a class="anchor" href="#_configuring_endpoint_options"></a>Configuring Endpoint Options</h3> <div class="paragraph"> <p>You usually spend more time setting up endpoints because they have many options. These options help you customize what you want the endpoint to do. The options are also categorized into whether the endpoint is used as a consumer (<em>from</em>), as a producer (<em>to</em>), or both.</p> </div> <div class="paragraph"> <p>Configuring endpoints is most often done directly in the endpoint URI as <em>path</em> and <em>query</em> parameters. You can also use the <a href="../../manual/Endpoint-dsl.html" class="xref page">Endpoint DSL</a> and <a href="../../manual/dataformat-dsl.html" class="xref page">DataFormat DSL</a> as a <em>type safe</em> way of configuring endpoints and data formats in Java.</p> </div> <div class="paragraph"> <p>A good practice when configuring options is to use <a href="../../manual/using-propertyplaceholder.html" class="xref page">Property Placeholders</a>.</p> </div> <div class="paragraph"> <p>Property placeholders provide a few benefits:</p> </div> <div class="ulist"> <ul> <li> <p>They help prevent using hardcoded urls, port numbers, sensitive information, and other settings.</p> </li> <li> <p>They allow externalizing the configuration from the code.</p> </li> <li> <p>They help the code to become more flexible and reusable.</p> </li> </ul> </div> <div class="paragraph"> <p>The following two sections list all the options, firstly for the component followed by the endpoint.</p> </div> </div> </div> </div> <div class="sect1"> <h2 id="_component_options"><a class="anchor" href="#_component_options"></a>Component Options</h2> <div class="sectionbody"> <div class="paragraph"> <p>The CXF component supports 7 options, which are listed below.</p> </div> <div class="table-wrapper"><table class="tableblock frame-all grid-all stretch"> <colgroup> <col> <col> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Name</th> <th class="tableblock halign-left valign-top">Description</th> <th class="tableblock halign-center valign-top">Default</th> <th class="tableblock halign-left valign-top">Type</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_bridgeErrorHandler"></a> <a href="#_component_option_bridgeErrorHandler" class="anchor"></a><strong>bridgeErrorHandler</strong> (consumer)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions (if possible) occurred while the Camel consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. Important: This is only possible if the 3rd party component allows Camel to be alerted if an exception was thrown. Some components handle this internally only, and therefore bridgeErrorHandler is not possible. In other situations we may improve the Camel component to hook into the 3rd party component and make this possible for future releases. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_lazyStartProducer"></a> <a href="#_component_option_lazyStartProducer" class="anchor"></a><strong>lazyStartProducer</strong> (producer)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel&#8217;s routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_synchronous"></a> <a href="#_component_option_synchronous" class="anchor"></a><strong>synchronous</strong> (producer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Sets whether synchronous processing should be strictly used.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_allowStreaming"></a> <a href="#_component_option_allowStreaming" class="anchor"></a><strong>allowStreaming</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>This option controls whether the CXF component, when running in PAYLOAD mode, will DOM parse the incoming messages into DOM Elements or keep the payload as a javax.xml.transform.Source object that would allow streaming in some cases.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_autowiredEnabled"></a> <a href="#_component_option_autowiredEnabled" class="anchor"></a><strong>autowiredEnabled</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_headerFilterStrategy"></a> <a href="#_component_option_headerFilterStrategy" class="anchor"></a><strong>headerFilterStrategy</strong> (filter)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">HeaderFilterStrategy</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_useGlobalSslContextParameters"></a> <a href="#_component_option_useGlobalSslContextParameters" class="anchor"></a><strong>useGlobalSslContextParameters</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Enable usage of global SSL context parameters.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> </tbody> </table></div> </div> </div> <div class="sect1"> <h2 id="_endpoint_options"><a class="anchor" href="#_endpoint_options"></a>Endpoint Options</h2> <div class="sectionbody"> <div class="paragraph"> <p>The CXF endpoint is configured using URI syntax:</p> </div> <div class="listingblock"> <div class="content"> <pre>cxf:beanId:address</pre> </div> </div> <div class="paragraph"> <p>With the following <em>path</em> and <em>query</em> parameters:</p> </div> <div class="sect2"> <h3 id="_path_parameters_2_parameters"><a class="anchor" href="#_path_parameters_2_parameters"></a>Path Parameters (2 parameters)</h3> <div class="table-wrapper"><table class="tableblock frame-all grid-all stretch"> <colgroup> <col> <col> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Name</th> <th class="tableblock halign-left valign-top">Description</th> <th class="tableblock halign-center valign-top">Default</th> <th class="tableblock halign-left valign-top">Type</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_path_option_beanId"></a> <a href="#_endpoint_path_option_beanId" class="anchor"></a><strong>beanId</strong> (common)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To lookup an existing configured CxfEndpoint. Must used bean: as prefix.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_path_option_address"></a> <a href="#_endpoint_path_option_address" class="anchor"></a><strong>address</strong> (service)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The service publish address.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> </tbody> </table></div> </div> <div class="sect2"> <h3 id="_query_parameters"><a class="anchor" href="#_query_parameters"></a>Query Parameters (36 parameters)</h3> <div class="table-wrapper"><table class="tableblock frame-all grid-all stretch"> <colgroup> <col> <col> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Name</th> <th class="tableblock halign-left valign-top">Description</th> <th class="tableblock halign-center valign-top">Default</th> <th class="tableblock halign-left valign-top">Type</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_dataFormat"></a> <a href="#_endpoint_query_option_dataFormat" class="anchor"></a><strong>dataFormat</strong> (common)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The data type messages supported by the CXF endpoint.</p> </div> <div class="paragraph"> <p>Enum values:</p> </div> <div class="ulist"> <ul> <li> <p>PAYLOAD</p> </li> <li> <p>RAW</p> </li> <li> <p>MESSAGE</p> </li> <li> <p>CXF_MESSAGE</p> </li> <li> <p>POJO</p> </li> </ul> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">POJO</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">DataFormat</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_wrappedStyle"></a> <a href="#_endpoint_query_option_wrappedStyle" class="anchor"></a><strong>wrappedStyle</strong> (common)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The WSDL style that describes how parameters are represented in the SOAP body. If the value is false, CXF will chose the document-literal unwrapped style, If the value is true, CXF will chose the document-literal wrapped style.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_bridgeErrorHandler"></a> <a href="#_endpoint_query_option_bridgeErrorHandler" class="anchor"></a><strong>bridgeErrorHandler</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions (if possible) occurred while the Camel consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. Important: This is only possible if the 3rd party component allows Camel to be alerted if an exception was thrown. Some components handle this internally only, and therefore bridgeErrorHandler is not possible. In other situations we may improve the Camel component to hook into the 3rd party component and make this possible for future releases. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_exceptionHandler"></a> <a href="#_endpoint_query_option_exceptionHandler" class="anchor"></a><strong>exceptionHandler</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">ExceptionHandler</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_exchangePattern"></a> <a href="#_endpoint_query_option_exchangePattern" class="anchor"></a><strong>exchangePattern</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Sets the exchange pattern when the consumer creates an exchange.</p> </div> <div class="paragraph"> <p>Enum values:</p> </div> <div class="ulist"> <ul> <li> <p>InOnly</p> </li> <li> <p>InOut</p> </li> </ul> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">ExchangePattern</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_cookieHandler"></a> <a href="#_endpoint_query_option_cookieHandler" class="anchor"></a><strong>cookieHandler</strong> (producer)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Configure a cookie handler to maintain a HTTP session.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">CookieHandler</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_defaultOperationName"></a> <a href="#_endpoint_query_option_defaultOperationName" class="anchor"></a><strong>defaultOperationName</strong> (producer)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>This option will set the default operationName that will be used by the CxfProducer which invokes the remote service.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_defaultOperationNamespace"></a> <a href="#_endpoint_query_option_defaultOperationNamespace" class="anchor"></a><strong>defaultOperationNamespace</strong> (producer)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>This option will set the default operationNamespace that will be used by the CxfProducer which invokes the remote service.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_hostnameVerifier"></a> <a href="#_endpoint_query_option_hostnameVerifier" class="anchor"></a><strong>hostnameVerifier</strong> (producer)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The hostname verifier to be used. Use the # notation to reference a HostnameVerifier from the registry.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">HostnameVerifier</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_sslContextParameters"></a> <a href="#_endpoint_query_option_sslContextParameters" class="anchor"></a><strong>sslContextParameters</strong> (producer)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The Camel SSL setting reference. Use the # notation to reference the SSL Context.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">SSLContextParameters</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_wrapped"></a> <a href="#_endpoint_query_option_wrapped" class="anchor"></a><strong>wrapped</strong> (producer)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Which kind of operation that CXF endpoint producer will invoke.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_lazyStartProducer"></a> <a href="#_endpoint_query_option_lazyStartProducer" class="anchor"></a><strong>lazyStartProducer</strong> (producer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel&#8217;s routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_synchronous"></a> <a href="#_endpoint_query_option_synchronous" class="anchor"></a><strong>synchronous</strong> (producer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Sets whether synchronous processing should be strictly used.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_allowStreaming"></a> <a href="#_endpoint_query_option_allowStreaming" class="anchor"></a><strong>allowStreaming</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>This option controls whether the CXF component, when running in PAYLOAD mode, will DOM parse the incoming messages into DOM Elements or keep the payload as a javax.xml.transform.Source object that would allow streaming in some cases.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_bus"></a> <a href="#_endpoint_query_option_bus" class="anchor"></a><strong>bus</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To use a custom configured CXF Bus.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Bus</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_continuationTimeout"></a> <a href="#_endpoint_query_option_continuationTimeout" class="anchor"></a><strong>continuationTimeout</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>This option is used to set the CXF continuation timeout which could be used in CxfConsumer by default when the CXF server is using Jetty or Servlet transport.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">30000</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">long</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_cxfBinding"></a> <a href="#_endpoint_query_option_cxfBinding" class="anchor"></a><strong>cxfBinding</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To use a custom CxfBinding to control the binding between Camel Message and CXF Message.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">CxfBinding</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_cxfConfigurer"></a> <a href="#_endpoint_query_option_cxfConfigurer" class="anchor"></a><strong>cxfConfigurer</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>This option could apply the implementation of org.apache.camel.component.cxf.CxfEndpointConfigurer which supports to configure the CXF endpoint in programmatic way. User can configure the CXF server and client by implementing configure{ServerClient} method of CxfEndpointConfigurer.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">CxfConfigurer</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_defaultBus"></a> <a href="#_endpoint_query_option_defaultBus" class="anchor"></a><strong>defaultBus</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Will set the default bus when CXF endpoint create a bus by itself.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_headerFilterStrategy"></a> <a href="#_endpoint_query_option_headerFilterStrategy" class="anchor"></a><strong>headerFilterStrategy</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To use a custom HeaderFilterStrategy to filter header to and from Camel message.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">HeaderFilterStrategy</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_mergeProtocolHeaders"></a> <a href="#_endpoint_query_option_mergeProtocolHeaders" class="anchor"></a><strong>mergeProtocolHeaders</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Whether to merge protocol headers. If enabled then propagating headers between Camel and CXF becomes more consistent and similar. For more details see CAMEL-6393.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_mtomEnabled"></a> <a href="#_endpoint_query_option_mtomEnabled" class="anchor"></a><strong>mtomEnabled</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To enable MTOM (attachments). This requires to use POJO or PAYLOAD data format mode.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_properties"></a> <a href="#_endpoint_query_option_properties" class="anchor"></a><strong>properties</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To set additional CXF options using the key/value pairs from the Map. For example to turn on stacktraces in SOAP faults, properties.faultStackTraceEnabled=true. This is a multi-value option with prefix: properties.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Map</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_schemaValidationEnabled"></a> <a href="#_endpoint_query_option_schemaValidationEnabled" class="anchor"></a><strong>schemaValidationEnabled</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Enable schema validation for request and response. Disabled by default for performance reason.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_skipPayloadMessagePartCheck"></a> <a href="#_endpoint_query_option_skipPayloadMessagePartCheck" class="anchor"></a><strong>skipPayloadMessagePartCheck</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Sets whether SOAP message validation should be disabled.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_loggingFeatureEnabled"></a> <a href="#_endpoint_query_option_loggingFeatureEnabled" class="anchor"></a><strong>loggingFeatureEnabled</strong> (logging)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>This option enables CXF Logging Feature which writes inbound and outbound SOAP messages to log.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_loggingSizeLimit"></a> <a href="#_endpoint_query_option_loggingSizeLimit" class="anchor"></a><strong>loggingSizeLimit</strong> (logging)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To limit the total size of number of bytes the logger will output when logging feature has been enabled and -1 for no limit.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">49152</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_skipFaultLogging"></a> <a href="#_endpoint_query_option_skipFaultLogging" class="anchor"></a><strong>skipFaultLogging</strong> (logging)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>This option controls whether the PhaseInterceptorChain skips logging the Fault that it catches.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_password"></a> <a href="#_endpoint_query_option_password" class="anchor"></a><strong>password</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>This option is used to set the basic authentication information of password for the CXF client.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_username"></a> <a href="#_endpoint_query_option_username" class="anchor"></a><strong>username</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>This option is used to set the basic authentication information of username for the CXF client.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_bindingId"></a> <a href="#_endpoint_query_option_bindingId" class="anchor"></a><strong>bindingId</strong> (service)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The bindingId for the service model to use.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_portName"></a> <a href="#_endpoint_query_option_portName" class="anchor"></a><strong>portName</strong> (service)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The endpoint name this service is implementing, it maps to the wsdl:portname. In the format of ns:PORT_NAME where ns is a namespace prefix valid at this scope.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_publishedEndpointUrl"></a> <a href="#_endpoint_query_option_publishedEndpointUrl" class="anchor"></a><strong>publishedEndpointUrl</strong> (service)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>This option can override the endpointUrl that published from the WSDL which can be accessed with service address url plus wsd.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_serviceClass"></a> <a href="#_endpoint_query_option_serviceClass" class="anchor"></a><strong>serviceClass</strong> (service)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The class name of the SEI (Service Endpoint Interface) class which could have JSR181 annotation or not.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Class</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_serviceName"></a> <a href="#_endpoint_query_option_serviceName" class="anchor"></a><strong>serviceName</strong> (service)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The service name this service is implementing, it maps to the wsdl:servicename.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_wsdlURL"></a> <a href="#_endpoint_query_option_wsdlURL" class="anchor"></a><strong>wsdlURL</strong> (service)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The location of the WSDL. Can be on the classpath, file system, or be hosted remotely.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> </tbody> </table></div> </div> </div> </div> <div class="sect1"> <h2 id="_message_headers"><a class="anchor" href="#_message_headers"></a>Message Headers</h2> <div class="sectionbody"> <div class="paragraph"> <p>The CXF component supports 6 message header(s), which is/are listed below:</p> </div> <div class="table-wrapper"><table class="tableblock frame-all grid-all stretch"> <colgroup> <col> <col> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Name</th> <th class="tableblock halign-left valign-top">Description</th> <th class="tableblock halign-center valign-top">Default</th> <th class="tableblock halign-left valign-top">Type</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_operationName"></a> <a href="#_endpoint_header_operationName" class="anchor"></a><strong>operationName</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-cxf-soap/latest/org/apache/camel/component/cxf/common/message/CxfConstants.html#OPERATION_NAME"><code>OPERATION_NAME</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The name of the operation.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_operationNamespace"></a> <a href="#_endpoint_header_operationNamespace" class="anchor"></a><strong>operationNamespace</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-cxf-soap/latest/org/apache/camel/component/cxf/common/message/CxfConstants.html#OPERATION_NAMESPACE"><code>OPERATION_NAMESPACE</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The operation namespace.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_CamelDestinationOverrideUrl"></a> <a href="#_endpoint_header_CamelDestinationOverrideUrl" class="anchor"></a><strong>CamelDestinationOverrideUrl</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-cxf-soap/latest/org/apache/camel/component/cxf/common/message/CxfConstants.html#DESTINATION_OVERRIDE_URL"><code>DESTINATION_OVERRIDE_URL</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The destination override url.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_ResponseContext"></a> <a href="#_endpoint_header_ResponseContext" class="anchor"></a><strong>ResponseContext</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-cxf-soap/latest/org/apache/camel/component/cxf/common/message/CxfConstants.html#RESPONSE_CONTEXT"><code>RESPONSE_CONTEXT</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The response context.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Map</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_CamelAuthentication"></a> <a href="#_endpoint_header_CamelAuthentication" class="anchor"></a><strong>CamelAuthentication</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-cxf-soap/latest/org/apache/camel/component/cxf/common/message/CxfConstants.html#AUTHENTICATION"><code>AUTHENTICATION</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The authentication.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Subject</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_RequestContext"></a> <a href="#_endpoint_header_RequestContext" class="anchor"></a><strong>RequestContext</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-cxf-soap/latest/org/apache/camel/component/cxf/common/message/CxfConstants.html#REQUEST_CONTEXT"><code>REQUEST_CONTEXT</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The request context.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Object</p></td> </tr> </tbody> </table></div> <div class="paragraph"> <p>The <code>serviceName</code> and <code>portName</code> are <a href="http://en.wikipedia.org/wiki/QName">QNames</a>, so if you provide them be sure to prefix them with their <em>{namespace}</em> as shown in the examples above.</p> </div> <div class="sect2"> <h3 id="_descriptions_of_the_data_formats"><a class="anchor" href="#_descriptions_of_the_data_formats"></a>Descriptions of the data formats</h3> <div class="paragraph"> <p>In Apache Camel, the Camel CXF component is the key to integrating routes with Web services. You can use the Camel CXF component to create a CXF endpoint, which can be used in either of the following ways:</p> </div> <div class="ulist"> <ul> <li> <p><strong>Consumer</strong> — (at the start of a route) represents a Web service instance, which integrates with the route. The type of payload injected into the route depends on the value of the endpoint&#8217;s dataFormat option.</p> </li> <li> <p><strong>Producer</strong> — (at other points in the route) represents a WS client proxy, which converts the current exchange object into an operation invocation on a remote Web service. The format of the current exchange must match the endpoint&#8217;s dataFormat setting.</p> </li> </ul> </div> <div class="table-wrapper"><table class="tableblock frame-all grid-all stretch"> <colgroup> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">DataFormat</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>POJO</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">POJOs (Plain old Java objects) are the Java parameters to the method being invoked on the target server. Both Protocol and Logical JAX-WS handlers are supported.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>PAYLOAD</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>PAYLOAD</code> is the message payload (the contents of the <code>soap:body</code>) after message configuration in the CXF endpoint is applied. Only Protocol JAX-WS handler is supported. Logical JAX-WS handler is not supported.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>RAW</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>RAW</code> mode provides the raw message stream received from the transport layer. It is not possible to touch or change the stream, some of the CXF interceptors will be removed if you are using this kind of DataFormat, so you can&#8217;t see any soap headers after the Camel CXF consumer. JAX-WS handler is not supported. Note that <code>RAW</code> mode is equivalent to deprecated <code>MESSAGE</code> mode.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CXF_MESSAGE</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CXF_MESSAGE</code> allows for invoking the full capabilities of CXF interceptors by converting the message from the transport layer into a raw SOAP message</p></td> </tr> </tbody> </table></div> <div class="paragraph"> <p>You can determine the data format mode of an exchange by retrieving the exchange property, <code>CamelCXFDataFormat</code>. The exchange key constant is defined in <code>org.apache.camel.component.cxf.common.message.CxfConstants.DATA_FORMAT_PROPERTY</code>.</p> </div> </div> </div> </div> <div class="sect1"> <h2 id="_usage"><a class="anchor" href="#_usage"></a>Usage</h2> <div class="sectionbody"> <div class="sect2"> <h3 id="_raw_mode"><a class="anchor" href="#_raw_mode"></a>RAW Mode</h3> <div class="paragraph"> <p>Attachments are not supported as it does not process the message at all.</p> </div> </div> <div class="sect2"> <h3 id="_cxf_message_mode"><a class="anchor" href="#_cxf_message_mode"></a>CXF_MESSAGE Mode</h3> <div class="paragraph"> <p>MTOM is supported, and Attachments can be retrieved by Camel Message APIs mentioned above. Note that when receiving a multipart (i.e., MTOM) message, the default <code>SOAPMessag`e to `String</code> converter will provide the complete multipart payload on the body. If you require just the SOAP XML as a String, you can set the message body with <code>message.getSOAPPart()</code>, and the Camel converter can do the rest of the work for you.</p> </div> </div> <div class="sect2"> <h3 id="_streaming_support_in_payload_mode"><a class="anchor" href="#_streaming_support_in_payload_mode"></a>Streaming Support in PAYLOAD mode</h3> <div class="paragraph"> <p>The Camel CXF component now supports streaming of incoming messages when using PAYLOAD mode. Previously, the incoming messages would have been completely DOM parsed. For large messages, this is time-consuming and uses a significant amount of memory. The incoming messages can remain as a <code>javax.xml.transform.Source</code> while being routed and, if nothing modifies the payload, can then be directly streamed out to the target destination. For common "simple proxy" use cases (example: <code>from("cxf:&#8230;&#8203;").to("cxf:&#8230;&#8203;")</code>), this can provide very significant performance increases as well as significantly lowered memory requirements.</p> </div> <div class="paragraph"> <p>However, there are cases where streaming may not be appropriate or desired. Due to the streaming nature, invalid incoming XML may not be caught until later in the processing chain. Also, certain actions may require the message to be DOM parsed anyway (like WS-Security or message tracing and such) in which case, the advantages of the streaming are limited. At this point, there are two ways to control the streaming:</p> </div> <div class="ulist"> <ul> <li> <p>Endpoint property: you can add <code>allowStreaming=false</code> as an endpoint property to turn the streaming on/off.</p> </li> <li> <p>Component property: the <code>CxfComponent</code> object also has an <code>allowStreaming</code> property that can set the default for endpoints created from that component.</p> </li> </ul> </div> <div class="paragraph"> <p>Global system property: you can add a system property of <code>org.apache.camel.component.cxf.streaming</code> to <code>false</code> to turn it off. That sets the global default, but setting the endpoint property above will override this value for that endpoint.</p> </div> </div> <div class="sect2"> <h3 id="_using_the_generic_cxf_dispatch_mode"><a class="anchor" href="#_using_the_generic_cxf_dispatch_mode"></a>Using the generic CXF Dispatch mode</h3> <div class="paragraph"> <p>The Camel CXF component supports the generic <a href="https://cxf.apache.org/docs/jax-ws-dispatch-api.html">CXF dispatch mode</a> that can transport messages of arbitrary structures (i.e., not bound to a specific XML schema). To use this mode, you omit specifying the <code>wsdlURL</code> and <code>serviceClass</code> attributes of the CXF endpoint.</p> </div> <div id="_tabs_1" class="openblock tabs is-sync is-loading"> <div class="content"> <div class="ulist tablist"> <ul> <li id="_tabs_1_java_quarkus" class="tab"> <p>Java (Quarkus)</p> </li> <li id="_tabs_1_xml_spring" class="tab"> <p>XML (Spring)</p> </li> </ul> </div> <div id="_tabs_1_java_quarkus--panel" class="tabpanel" aria-labelledby="_tabs_1_java_quarkus"> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">import org.apache.camel.component.cxf.common.DataFormat;
import org.apache.camel.component.cxf.jaxws.CxfEndpoint;
import jakarta.enterprise.context.SessionScoped;
import jakarta.enterprise.inject.Produces;
import jakarta.inject.Named;
...
@Produces
@SessionScoped
@Named
CxfEndpoint dispatchEndpoint() {
final CxfEndpoint result = new CxfEndpoint();
result.setDataFormat(DataFormat.PAYLOAD);
result.setAddress("/SoapAnyPort");
return result;
}</code></pre> </div> </div> </div> <div id="_tabs_1_xml_spring--panel" class="tabpanel" aria-labelledby="_tabs_1_xml_spring"> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;cxf:cxfEndpoint id="dispatchEndpoint" address="http://localhost:9000/SoapContext/SoapAnyPort"&gt;
&lt;cxf:properties&gt;
&lt;entry key="dataFormat" value="PAYLOAD"/&gt;
&lt;/cxf:properties&gt;
&lt;/cxf:cxfEndpoint&gt;</code></pre> </div> </div> </div> </div> </div> <div class="paragraph"> <p>It is noted that the default CXF dispatch client does not send a specific <code>SOAPAction</code> header. Therefore, when the target service requires a specific <code>SOAPAction</code> value, it is supplied in the Camel header using the key <code>SOAPAction</code> (case-insensitive).</p> </div> <div class="sect3"> <h4 id="cxf-loggingout-interceptor-in-message-mode"><a class="anchor" href="#cxf-loggingout-interceptor-in-message-mode"></a>How to enable CXF&#8217;s LoggingOutInterceptor in RAW mode</h4> <div class="paragraph"> <p>CXF&#8217;s <code>LoggingOutInterceptor</code> outputs outbound message that goes on the wire to logging system (Java Util Logging). Since the <code>LoggingOutInterceptor</code> is in <code>PRE_STREAM</code> phase (but <code>PRE_STREAM</code> phase is removed in <code>RAW</code> mode), you have to configure <code>LoggingOutInterceptor</code> to be run during the <code>WRITE</code> phase. The following is an example.</p> </div> <div id="_tabs_2" class="openblock tabs is-sync is-loading"> <div class="content"> <div class="ulist tablist"> <ul> <li id="_tabs_2_java_quarkus" class="tab"> <p>Java (Quarkus)</p> </li> <li id="_tabs_2_xml_spring" class="tab"> <p>XML (Spring)</p> </li> </ul> </div> <div id="_tabs_2_java_quarkus--panel" class="tabpanel" aria-labelledby="_tabs_2_java_quarkus"> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">import java.util.List;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.cxf.common.DataFormat;
import org.apache.camel.component.cxf.jaxws.CxfEndpoint;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.phase.Phase;
import jakarta.enterprise.context.SessionScoped;
import jakarta.enterprise.inject.Produces;
import jakarta.inject.Named;
...
@Produces
@SessionScoped
@Named
CxfEndpoint soapMtomEnabledServerPayloadModeEndpoint() {
final CxfEndpoint result = new CxfEndpoint();
result.setServiceClass(HelloService.class);
result.setDataFormat(DataFormat.RAW);
result.setOutFaultInterceptors(List.of(new LoggingOutInterceptor(Phase.WRITE)));;
result.setAddress("/helloworld");
return result;
}</code></pre> </div> </div> </div> <div id="_tabs_2_xml_spring--panel" class="tabpanel" aria-labelledby="_tabs_2_xml_spring"> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;bean id="loggingOutInterceptor" class="org.apache.cxf.interceptor.LoggingOutInterceptor"&gt;
&lt;!-- it really should have been user-prestream, but CXF does have such a phase! --&gt;
&lt;constructor-arg value="write"/&gt;
&lt;/bean&gt;
&lt;cxf:cxfEndpoint id="serviceEndpoint" address="http://localhost:${CXFTestSupport.port2}/LoggingInterceptorInMessageModeTest/helloworld"
serviceClass="org.apache.camel.component.cxf.HelloService"&gt;
&lt;cxf:outInterceptors&gt;
&lt;ref bean="loggingOutInterceptor"/&gt;
&lt;/cxf:outInterceptors&gt;
&lt;cxf:properties&gt;
&lt;entry key="dataFormat" value="RAW"/&gt;
&lt;/cxf:properties&gt;
&lt;/cxf:cxfEndpoint&gt;</code></pre> </div> </div> </div> </div> </div> </div> </div> <div class="sect2"> <h3 id="_description_of_cxfheaderfilterstrategy_options"><a class="anchor" href="#_description_of_cxfheaderfilterstrategy_options"></a>Description of CxfHeaderFilterStrategy options</h3> <div class="paragraph"> <p>There are <em>in-band</em> and <em>out-of-band</em> on-the-wire headers from the perspective of a JAXWS WSDL-first developer.</p> </div> <div class="paragraph"> <p>The <em>in-band</em> headers are headers that are explicitly defined as part of the WSDL binding contract for an endpoint such as SOAP headers.</p> </div> <div class="paragraph"> <p>The <em>out-of-band</em> headers are headers that are serialized over the wire, but are not explicitly part of the WSDL binding contract.</p> </div> <div class="paragraph"> <p>Headers relaying/filtering is bi-directional.</p> </div> <div class="paragraph"> <p>When a route has a CXF endpoint and the developer needs to have on-the-wire headers, such as SOAP headers, be relayed along the route to be consumed say by another JAXWS endpoint, a <code>CxfHeaderFilterStrategy</code> instance should be set on the CXF endpoint, then <code>relayHeaders</code> property of the <code>CxfHeaderFilterStrategy</code> instance should be set to <code>true</code>, which is the default value. Plus, the <code>CxfHeaderFilterStrategy</code> instance also holds a list of <code>MessageHeaderFilter</code> interface, which decides if a specific header will be relayed or not.</p> </div> <div class="paragraph"> <p>Take a look at the tests that show how you&#8217;d be able to relay/drop headers here:</p> </div> <div class="paragraph"> <p><a href="https://github.com/apache/camel/blob/main/components/camel-cxf/camel-cxf-spring-soap/src/test/java/org/apache/camel/component/cxf/soap/headers/CxfMessageHeadersRelayTest.java">CxfMessageHeadersRelayTest</a></p> </div> <div class="ulist"> <ul> <li> <p>The <code>relayHeaders=true</code> expresses an intent to relay the headers. The actual decision on whether a given header is relayed is delegated to a pluggable instance that implements the <code>MessageHeaderFilter</code> interface. A concrete implementation of <code>MessageHeaderFilter</code> will be consulted to decide if a header needs to be relayed or not. There is already an implementation of <code>SoapMessageHeaderFilter</code> which binds itself to well-known SOAP name spaces. If there is a header on the wire whose name space is unknown to the runtime, the header will be simply relayed.</p> </li> <li> <p><code>POJO</code> and <code>PAYLOAD</code> modes are supported. In <code>POJO</code> mode, only out-of-band message headers are available for filtering as the in-band headers have been processed and removed from the header list by CXF. The in-band headers are incorporated into the <code>MessageContentList</code> in POJO mode. The Camel CXF component does make any attempt to remove the in-band headers from the <code>MessageContentList</code>. If filtering of in-band headers is required, please use <code>PAYLOAD</code> mode or plug in a (pretty straightforward) CXF interceptor/JAXWS Handler to the CXF endpoint. Here is an example of configuring the <code>CxfHeaderFilterStrategy</code>.</p> </li> </ul> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;bean id="dropAllMessageHeadersStrategy" class="org.apache.camel.component.cxf.transport.header.CxfHeaderFilterStrategy"&gt;
&lt;!-- Set relayHeaders to false to drop all SOAP headers --&gt;
&lt;property name="relayHeaders" value="false"/&gt;
&lt;/bean&gt;</code></pre> </div> </div> <div class="paragraph"> <p>Then, your endpoint can reference the <code>CxfHeaderFilterStrategy</code>:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;route&gt;
&lt;from uri="cxf:bean:routerNoRelayEndpoint?headerFilterStrategy=#dropAllMessageHeadersStrategy"/&gt;
&lt;to uri="cxf:bean:serviceNoRelayEndpoint?headerFilterStrategy=#dropAllMessageHeadersStrategy"/&gt;
&lt;/route&gt;</code></pre> </div> </div> <div class="ulist"> <ul> <li> <p>You can plug in your own <code>MessageHeaderFilter</code> implementations overriding or adding additional ones to the list of relays. To override a preloaded relay instance, make sure that your <code>MessageHeaderFilter</code> implementation services the same name spaces as the one you are looking to override.</p> </li> </ul> </div> <div class="paragraph"> <p>Here is an example of configuring user defined Message Header Filters:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;bean id="customMessageFilterStrategy" class="org.apache.camel.component.cxf.transport.header.CxfHeaderFilterStrategy"&gt;
&lt;property name="messageHeaderFilters"&gt;
&lt;list&gt;
&lt;!-- SoapMessageHeaderFilter is the built-in filter. It can be removed by omitting it. --&gt;
&lt;bean class="org.apache.camel.component.cxf.common.header.SoapMessageHeaderFilter"/&gt;
&lt;!-- Add custom filter here --&gt;
&lt;bean class="org.apache.camel.component.cxf.soap.headers.CustomHeaderFilter"/&gt;
&lt;/list&gt;
&lt;/property&gt;
&lt;/bean&gt;</code></pre> </div> </div> <div class="ulist"> <ul> <li> <p>In addition to <code>relayHeaders</code>, the following properties can be configured in <code>CxfHeaderFilterStrategy</code>.</p> </li> </ul> </div> <div class="table-wrapper"><table class="tableblock frame-all grid-all stretch"> <colgroup> <col> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Name</th> <th class="tableblock halign-left valign-top">Required</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>relayHeaders</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">No</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">All message headers will be processed by Message Header Filters <em>Type</em>: <code>boolean</code> <em>Default</em>: <code>true</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>relayAllMessageHeaders</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">No</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">All message headers will be propagated (without processing by Message Header Filters) <em>Type</em>: <code>boolean</code> <em>Default</em>: <code>false</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>allowFilterNamespaceClash</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">No</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">If two filters overlap in activation namespace, the property controls how it should be handled. If the value is <code>true</code>, last one wins. If the value is <code>false</code>, it will throw an exception <em>Type</em>: <code>boolean</code> <em>Default</em>: <code>false</code></p></td> </tr> </tbody> </table></div> </div> <div class="sect2"> <h3 id="_how_to_make_the_camel_cxf_component_use_log4j_instead_of_java_util_logging"><a class="anchor" href="#_how_to_make_the_camel_cxf_component_use_log4j_instead_of_java_util_logging"></a>How to make the Camel CXF component use log4j instead of java.util.logging</h3> <div class="paragraph"> <p>CXF&#8217;s default logger is <code>java.util.logging</code>. If you want to change it to log4j, proceed as follows. Create a file, in the classpath, named <code>META-INF/cxf/org.apache.cxf.logger</code>. This file should contain the fully qualified name of the class, <code>org.apache.cxf.common.logging.Log4jLogger</code>, with no comments, on a single line.</p> </div> </div> <div class="sect2"> <h3 id="_how_to_let_camel_cxf_response_start_with_xml_processing_instruction"><a class="anchor" href="#_how_to_let_camel_cxf_response_start_with_xml_processing_instruction"></a>How to let Camel CXF response start with xml processing instruction</h3> <div class="paragraph"> <p>If you are using some SOAP client such as PHP, you will get this kind of error because CXF doesn&#8217;t add the XML processing instruction <code>&lt;?xml version="1.0" encoding="utf-8"?&gt;</code>:</p> </div> <div class="listingblock"> <div class="content"> <pre>Error:sendSms: SoapFault exception: [Client] looks like we got no XML document in [...]</pre> </div> </div> <div class="paragraph"> <p>To resolve this issue, you need to tell <code>StaxOutInterceptor</code> to write the XML start document for you, as in the <a href="https://github.com/apache/camel/blob/main/components/camel-cxf/camel-cxf-soap/src/test/java/org/apache/camel/component/cxf/jaxws/WriteXmlDeclarationInterceptor.java">WriteXmlDeclarationInterceptor</a> below:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">public class WriteXmlDeclarationInterceptor extends AbstractPhaseInterceptor&lt;SoapMessage&gt; {
public WriteXmlDeclarationInterceptor() {
super(Phase.PRE_STREAM);
addBefore(StaxOutInterceptor.class.getName());
}
public void handleMessage(SoapMessage message) throws Fault {
message.put("org.apache.cxf.stax.force-start-document", Boolean.TRUE);
}
}</code></pre> </div> </div> <div class="paragraph"> <p>As an alternative, you can add a message header for it as demonstrated in <a href="https://github.com/apache/camel/blob/main/components/camel-cxf/camel-cxf-soap/src/test/java/org/apache/camel/component/cxf/jaxws/CxfConsumerTest.java#L62">CxfConsumerTest</a>:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java"> // set up the response context which force start document
Map&lt;String, Object&gt; map = new HashMap&lt;String, Object&gt;();
map.put("org.apache.cxf.stax.force-start-document", Boolean.TRUE);
exchange.getMessage().setHeader(Client.RESPONSE_CONTEXT, map);</code></pre> </div> </div> </div> <div class="sect2"> <h3 id="_configure_the_cxf_endpoints_with_spring"><a class="anchor" href="#_configure_the_cxf_endpoints_with_spring"></a>Configure the CXF endpoints with Spring</h3> <div class="paragraph"> <p>You can configure the CXF endpoint with the Spring configuration file shown below, and you can also embed the endpoint into the <code>camelContext</code> tags. When you are invoking the service endpoint, you can set the <code>operationName</code> and <code>operationNamespace</code> headers to explicitly state which operation you are calling.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cxf="http://camel.apache.org/schema/cxf"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"&gt;
&lt;cxf:cxfEndpoint id="routerEndpoint" address="http://localhost:9003/CamelContext/RouterPort"
serviceClass="org.apache.hello_world_soap_http.GreeterImpl"/&gt;
&lt;cxf:cxfEndpoint id="serviceEndpoint" address="http://localhost:9000/SoapContext/SoapPort"
wsdlURL="testutils/hello_world.wsdl"
serviceClass="org.apache.hello_world_soap_http.Greeter"
endpointName="s:SoapPort"
serviceName="s:SOAPService"
xmlns:s="http://apache.org/hello_world_soap_http" /&gt;
&lt;camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"&gt;
&lt;route&gt;
&lt;from uri="cxf:bean:routerEndpoint" /&gt;
&lt;to uri="cxf:bean:serviceEndpoint" /&gt;
&lt;/route&gt;
&lt;/camelContext&gt;
&lt;/beans&gt;</code></pre> </div> </div> <div class="paragraph"> <p>Be sure to include the JAX-WS <code>schemaLocation</code> attribute specified on the root <code>beans</code> element. This allows CXF to validate the file and is required. Also note the namespace declarations at the end of the <code>&lt;cxf:cxfEndpoint/&gt;</code> tag. These declarations are required because the combined <code>{namespace}localName</code> syntax is presently not supported for this tag&#8217;s attribute values.</p> </div> <div class="paragraph"> <p>The <code>cxf:cxfEndpoint</code> element supports many additional attributes:</p> </div> <div class="table-wrapper"><table class="tableblock frame-all grid-all stretch"> <colgroup> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Name</th> <th class="tableblock halign-left valign-top">Value</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>PortName</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The endpoint name this service is implementing, it maps to the <code>wsdl:port@name</code>. In the format of <code>ns:PORT_NAME</code> where <code>ns</code> is a namespace prefix valid at this scope.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>serviceName</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The service name this service is implementing, it maps to the <code>wsdl:service@name</code>. In the format of <code>ns:SERVICE_NAME</code> where <code>ns</code> is a namespace prefix valid at this scope.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>wsdlURL</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The location of the WSDL. Can be on the classpath, file system, or be hosted remotely.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>bindingId</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The <code>bindingId</code> for the service model to use.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>address</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The service publish address.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>bus</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The bus name that will be used in the JAX-WS endpoint.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>serviceClass</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The class name of the SEI (Service Endpoint Interface) class which could have JSR181 annotation or not.</p></td> </tr> </tbody> </table></div> <div class="paragraph"> <p>It also supports many child elements:</p> </div> <div class="table-wrapper"><table class="tableblock frame-all grid-all stretch"> <colgroup> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Name</th> <th class="tableblock halign-left valign-top">Value</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>cxf:inInterceptors</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The incoming interceptors for this endpoint. A list of <code>&lt;bean&gt;</code> or <code>&lt;ref&gt;</code>.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>cxf:inFaultInterceptors</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The incoming fault interceptors for this endpoint. A list of <code>&lt;bean&gt;</code> or <code>&lt;ref&gt;</code>.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>cxf:outInterceptors</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The outgoing interceptors for this endpoint. A list of <code>&lt;bean&gt;</code> or <code>&lt;ref&gt;</code>.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>cxf:outFaultInterceptors</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The outgoing fault interceptors for this endpoint. A list of <code>&lt;bean&gt;</code> or <code>&lt;ref&gt;</code>.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>cxf:properties</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">A properties map which should be supplied to the JAX-WS endpoint. See below.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>cxf:handlers</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">A JAX-WS handler list which should be supplied to the JAX-WS endpoint. See below.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>cxf:dataBinding</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">You can specify which <code>DataBinding</code> will be used in the endpoint. This can be supplied using the Spring <code>&lt;bean class="MyDataBinding"/&gt;</code> syntax.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>cxf:binding</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">You can specify the <code>BindingFactory</code> for this endpoint to use. This can be supplied using the Spring <code>&lt;bean class="MyBindingFactory"/&gt;</code> syntax.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>cxf:features</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The features that hold the interceptors for this endpoint. A list of beans or refs</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>cxf:schemaLocations</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The schema locations for endpoint to use. A list of schemaLocations</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>cxf:serviceFactory</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The service factory for this endpoint to use. This can be supplied using the Spring <code>&lt;bean class="MyServiceFactory"/&gt;</code> syntax</p></td> </tr> </tbody> </table></div> <div class="paragraph"> <p>You can find more advanced examples that show how to provide interceptors, properties and handlers on the CXF <a href="http://cxf.apache.org/docs/jax-ws-configuration.html">JAX-WS Configuration page</a>.</p> </div> <div class="admonitionblock note"> <div class="table-wrapper"><table> <tr> <td class="icon"> <i class="fa icon-note" title="Note"></i> </td> <td class="content"> <div class="paragraph"> <p>You can use <code>cxf:properties</code> to set the Camel CXF endpoint&#8217;s dataFormat and setDefaultBus properties from spring configuration file.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;cxf:cxfEndpoint id="testEndpoint" address="http://localhost:9000/router"
serviceClass="org.apache.camel.component.cxf.HelloService"
endpointName="s:HelloPort"
serviceName="s:HelloService"
xmlns:s="http://www.example.com/test"&gt;
&lt;cxf:properties&gt;
&lt;entry key="dataFormat" value="RAW"/&gt;
&lt;entry key="setDefaultBus" value="true"/&gt;
&lt;/cxf:properties&gt;
&lt;/cxf:cxfEndpoint&gt;</code></pre> </div> </div> </td> </tr> </table></div> </div> </div> </div> </div> <div class="sect1"> <h2 id="_examples"><a class="anchor" href="#_examples"></a>Examples</h2> <div class="sectionbody"> <div class="sect2"> <h3 id="_how_to_consume_a_message_from_a_camel_cxf_endpoint_in_pojo_data_format"><a class="anchor" href="#_how_to_consume_a_message_from_a_camel_cxf_endpoint_in_pojo_data_format"></a>How to consume a message from a Camel CXF endpoint in POJO data format</h3> <div class="paragraph"> <p>The Camel CXF endpoint consumer POJO data format is based on the <a href="http://cxf.apache.org/docs/invokers.html">CXF invoker</a>, so the message header has a property with the name of <code>CxfConstants.OPERATION_NAME</code> and the message body is a list of the SEI operation parameters.</p> </div> <div class="paragraph"> <p>Having simple java web service interface:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">package org.apache.camel.component.cxf.soap.server;
import jakarta.jws.WebService;
@WebService(targetNamespace = "http://server.soap.cxf.component.camel.apache.org/", name = "TextService", serviceName = "TextService")
public interface TextService {
String upperCase(String text);
String lowerCase(String text);
}</code></pre> </div> </div> <div class="paragraph"> <p>We can then create the simplest CXF service (note we didn&#8217;t specify the <code>POJO</code> mode, as it is the default mode) as follows:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java"> from("cxf:textServiceResponseFromRoute?serviceClass=org.apache.camel.component.cxf.soap.server.TextService&amp;address=/text-route",
.process(exchange -&gt; {
String operation = (String) exchange.getIn().getHeader(CxfConstants.OPERATION_NAME);
String inputArg = ((MessageContentsList) exchange.getIn().getBody()).get(0).toString();
String result = null;
if (operation.equals("upperCase")) {
result = inputArg.toUpperCase();
}
else if (operation.equals("lowerCase")) {
result = inputArg.toLowerCase();
}
exchange.getIn().setBody(result);
});</code></pre> </div> </div> </div> <div class="sect2"> <h3 id="_how_to_prepare_the_message_for_the_camel_cxf_endpoint_in_pojo_data_format"><a class="anchor" href="#_how_to_prepare_the_message_for_the_camel_cxf_endpoint_in_pojo_data_format"></a>How to prepare the message for the Camel CXF endpoint in POJO data format</h3> <div class="paragraph"> <p>The Camel CXF endpoint producer is based on the <a href="https://github.com/apache/cxf/blob/master/core/src/main/java/org/apache/cxf/endpoint/Client.java">CXF client API</a>. First, you need to specify the operation name in the message header, then add the method parameters to a list, and initialize the message with this parameter list. The response message&#8217;s body is a messageContentsList, you can get the result from that list.</p> </div> <div class="paragraph"> <p>If you don&#8217;t specify the operation name in the message header, <code>CxfProducer</code> will try to use the <code>defaultOperationName</code> from <code>CxfEndpoint</code>, if there is no <code>defaultOperationName</code> set on <code>CxfEndpoint</code>, it will pick up the first operationName from the Operation list.</p> </div> <div class="paragraph"> <p>If you want to get the object array from the message body, you can get the body using <code>message.getBody(Object[].class)</code>, as shown in <a href="https://github.com/apache/camel/blob/main/components/camel-cxf/camel-cxf-soap/src/test/java/org/apache/camel/component/cxf/jaxws/CxfProducerRouterTest.java#L117">CxfProducerRouterTest.testInvokingSimpleServerWithParams</a>:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">Exchange senderExchange = new DefaultExchange(context, ExchangePattern.InOut);
final List&lt;String&gt; params = new ArrayList&lt;&gt;();
// Prepare the request message for the camel-cxf procedure
params.add(TEST_MESSAGE);
senderExchange.getIn().setBody(params);
senderExchange.getIn().setHeader(CxfConstants.OPERATION_NAME, ECHO_OPERATION);
Exchange exchange = template.send("direct:EndpointA", senderExchange);
org.apache.camel.Message out = exchange.getMessage();
// The response message's body is a MessageContentsList which first element is the return value of the operation,
// If there are some holder parameters, the holder parameter will be filled in the reset of List.
// The result will be extracted from the MessageContentsList with the String class type
MessageContentsList result = (MessageContentsList) out.getBody();
LOG.info("Received output text: " + result.get(0));
Map&lt;String, Object&gt; responseContext = CastUtils.cast((Map&lt;?, ?&gt;) out.getHeader(Client.RESPONSE_CONTEXT));
assertNotNull(responseContext);
assertEquals("UTF-8", responseContext.get(org.apache.cxf.message.Message.ENCODING),
"We should get the response context here");
assertEquals("echo " + TEST_MESSAGE, result.get(0), "Reply body on Camel is wrong");</code></pre> </div> </div> </div> <div class="sect2"> <h3 id="_how_to_consume_a_message_from_a_camel_cxf_endpoint_in_payload_data_format"><a class="anchor" href="#_how_to_consume_a_message_from_a_camel_cxf_endpoint_in_payload_data_format"></a>How to consume a message from a Camel CXF endpoint in PAYLOAD data format</h3> <div class="paragraph"> <p><code>PAYLOAD</code> means that you process the payload from the SOAP envelope as a native CxfPayload. <code>Message.getBody()</code> will return a <code>org.apache.camel.component.cxf.CxfPayload</code> object, with getters for SOAP message headers and the SOAP body.</p> </div> <div class="paragraph"> <p>See <a href="https://github.com/apache/camel/blob/main/components/camel-cxf/camel-cxf-soap/src/test/java/org/apache/camel/component/cxf/jaxws/CxfConsumerPayloadTest.java#L68">CxfConsumerPayloadTest</a>:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
public void configure() {
from(simpleEndpointURI + "&amp;dataFormat=PAYLOAD").to("log:info").process(new Processor() {
@SuppressWarnings("unchecked")
public void process(final Exchange exchange) throws Exception {
CxfPayload&lt;SoapHeader&gt; requestPayload = exchange.getIn().getBody(CxfPayload.class);
List&lt;Source&gt; inElements = requestPayload.getBodySources();
List&lt;Source&gt; outElements = new ArrayList&lt;&gt;();
// You can use a customer toStringConverter to turn a CxfPayLoad message into String as you want
String request = exchange.getIn().getBody(String.class);
XmlConverter converter = new XmlConverter();
String documentString = ECHO_RESPONSE;
Element in = new XmlConverter().toDOMElement(inElements.get(0));
// Check the element namespace
if (!in.getNamespaceURI().equals(ELEMENT_NAMESPACE)) {
throw new IllegalArgumentException("Wrong element namespace");
}
if (in.getLocalName().equals("echoBoolean")) {
documentString = ECHO_BOOLEAN_RESPONSE;
checkRequest("ECHO_BOOLEAN_REQUEST", request);
} else {
documentString = ECHO_RESPONSE;
checkRequest("ECHO_REQUEST", request);
}
Document outDocument = converter.toDOMDocument(documentString, exchange);
outElements.add(new DOMSource(outDocument.getDocumentElement()));
// set the payload header with null
CxfPayload&lt;SoapHeader&gt; responsePayload = new CxfPayload&lt;&gt;(null, outElements, null);
exchange.getMessage().setBody(responsePayload);
}
});
}
};
}</code></pre> </div> </div> </div> <div class="sect2"> <h3 id="_how_to_get_and_set_soap_headers_in_pojo_mode"><a class="anchor" href="#_how_to_get_and_set_soap_headers_in_pojo_mode"></a>How to get and set SOAP headers in POJO mode</h3> <div class="paragraph"> <p><code>POJO</code> means that the data format is a <em>"list of Java objects"</em> when the Camel CXF endpoint produces or consumes Camel exchanges. Even though Camel exposes the message body as POJOs in this mode, Camel CXF still provides access to read and write SOAP headers. However, since CXF interceptors remove in-band SOAP headers from the header list, after they have been processed, only out-of-band SOAP headers are available to Camel CXF in POJO mode.</p> </div> <div class="paragraph"> <p>The following example illustrates how to get/set SOAP headers. Suppose we have a route that forwards from one Camel CXF endpoint to another. That is, <code>SOAP Client &#8594; Camel &#8594; CXF service</code>. We can attach two processors to obtain/insert SOAP headers at (1) before a request goes out to the CXF service and (2) before the response comes back to the SOAP Client. Processors (1) and (2) in this example are <code>InsertRequestOutHeaderProcessor</code> and <code>InsertResponseOutHeaderProcessor</code>. Our route looks like this:</p> </div> <div id="_tabs_3" class="openblock tabs is-sync is-loading"> <div class="content"> <div class="ulist tablist"> <ul> <li id="_tabs_3_java" class="tab"> <p>Java</p> </li> <li id="_tabs_3_xml" class="tab"> <p>XML</p> </li> </ul> </div> <div id="_tabs_3_java--panel" class="tabpanel" aria-labelledby="_tabs_3_java"> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">from("cxf:bean:routerRelayEndpointWithInsertion")
.process(new InsertRequestOutHeaderProcessor())
.to("cxf:bean:serviceRelayEndpointWithInsertion")
.process(new InsertResponseOutHeaderProcessor());</code></pre> </div> </div> </div> <div id="_tabs_3_xml--panel" class="tabpanel" aria-labelledby="_tabs_3_xml"> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;route&gt;
&lt;from uri="cxf:bean:routerRelayEndpointWithInsertion"/&gt;
&lt;process ref="InsertRequestOutHeaderProcessor" /&gt;
&lt;to uri="cxf:bean:serviceRelayEndpointWithInsertion"/&gt;
&lt;process ref="InsertResponseOutHeaderProcessor" /&gt;
&lt;/route&gt;</code></pre> </div> </div> </div> </div> </div> <div class="paragraph"> <p>SOAP headers are propagated to and from Camel Message headers. The Camel message header name is <code>org.apache.cxf.headers.Header.list</code> which is a constant defined in CXF (<code>org.apache.cxf.headers.Header.HEADER_LIST</code>). The header value is a List of CXF <code>SoapHeader</code> objects (<code>org.apache.cxf.binding.soap.SoapHeader</code>). The following snippet is the <code>InsertResponseOutHeaderProcessor</code> (that inserts a new SOAP header in the response message). The way to access SOAP headers in both <code>InsertResponseOutHeaderProcessor</code> and <code>InsertRequestOutHeaderProcessor</code> are actually the same. The only difference between the two processors is setting the direction of the inserted SOAP header.</p> </div> <div class="paragraph"> <p>You can find the <code>InsertResponseOutHeaderProcessor</code> example in <a href="https://github.com/apache/camel/blob/main/components/camel-cxf/camel-cxf-spring-soap/src/test/java/org/apache/camel/component/cxf/soap/headers/CxfMessageHeadersRelayTest.java#L731">CxfMessageHeadersRelayTest</a>:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">public static class InsertResponseOutHeaderProcessor implements Processor {
public void process(Exchange exchange) throws Exception {
List&lt;SoapHeader&gt; soapHeaders = CastUtils.cast((List&lt;?&gt;)exchange.getIn().getHeader(Header.HEADER_LIST));
// Insert a new header
String xml = "&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;&lt;outofbandHeader "
+ "xmlns=\"http://cxf.apache.org/outofband/Header\" hdrAttribute=\"testHdrAttribute\" "
+ "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" soap:mustUnderstand=\"1\"&gt;"
+ "&lt;name&gt;New_testOobHeader&lt;/name&gt;&lt;value&gt;New_testOobHeaderValue&lt;/value&gt;&lt;/outofbandHeader&gt;";
SoapHeader newHeader = new SoapHeader(soapHeaders.get(0).getName(),
DOMUtils.readXml(new StringReader(xml)).getDocumentElement());
// make sure the direction is OUT since it is a response message.
newHeader.setDirection(Direction.DIRECTION_OUT);
//newHeader.setMustUnderstand(false);
soapHeaders.add(newHeader);
}
}</code></pre> </div> </div> </div> <div class="sect2"> <h3 id="_how_to_get_and_set_soap_headers_in_payload_mode"><a class="anchor" href="#_how_to_get_and_set_soap_headers_in_payload_mode"></a>How to get and set SOAP headers in PAYLOAD mode</h3> <div class="paragraph"> <p>We&#8217;ve already shown how to access the SOAP message as <code>CxfPayload</code> object in PAYLOAD mode in the section <a href="#_how_to_consume_a_message_from_a_camel_cxf_endpoint_in_payload_data_format">How to consume a message from a Camel CXF endpoint in PAYLOAD data format</a>.</p> </div> <div class="paragraph"> <p>Once you obtain a <code>CxfPayload</code> object, you can invoke the <code>CxfPayload.getHeaders()</code> method that returns a List of DOM Elements (SOAP headers).</p> </div> <div class="paragraph"> <p>For example, see <a href="https://github.com/apache/camel/blob/main/components/camel-cxf/camel-cxf-soap/src/test/java/org/apache/camel/component/cxf/jaxws/CxfPayLoadSoapHeaderTest.java#L53">CxfPayLoadSoapHeaderTest</a>:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">from(getRouterEndpointURI()).process(new Processor() {
@SuppressWarnings("unchecked")
public void process(Exchange exchange) throws Exception {
CxfPayload&lt;SoapHeader&gt; payload = exchange.getIn().getBody(CxfPayload.class);
List&lt;Source&gt; elements = payload.getBodySources();
assertNotNull(elements, "We should get the elements here");
assertEquals(1, elements.size(), "Get the wrong elements size");
Element el = new XmlConverter().toDOMElement(elements.get(0));
elements.set(0, new DOMSource(el));
assertEquals("http://camel.apache.org/pizza/types",
el.getNamespaceURI(), "Get the wrong namespace URI");
List&lt;SoapHeader&gt; headers = payload.getHeaders();
assertNotNull(headers, "We should get the headers here");
assertEquals(1, headers.size(), "Get the wrong headers size");
assertEquals("http://camel.apache.org/pizza/types",
((Element) (headers.get(0).getObject())).getNamespaceURI(), "Get the wrong namespace URI");
// alternatively, you can also get the SOAP header via the camel header:
headers = exchange.getIn().getHeader(Header.HEADER_LIST, List.class);
assertNotNull(headers, "We should get the headers here");
assertEquals(1, headers.size(), "Get the wrong headers size");
assertEquals("http://camel.apache.org/pizza/types",
((Element) (headers.get(0).getObject())).getNamespaceURI(), "Get the wrong namespace URI");
}
})
.to(getServiceEndpointURI());</code></pre> </div> </div> <div class="paragraph"> <p>You can also use the same way as described in subchapter "How to get and set SOAP headers in POJO mode" to set or get the SOAP headers. So, you can use the header <code>org.apache.cxf.headers.Header.list</code> to get and set a list of SOAP headers.This does also mean that if you have a route that forwards from one Camel CXF endpoint to another (<code>SOAP Client &#8594; Camel &#8594; CXF service</code>), now also the SOAP headers sent by the SOAP client are forwarded to the CXF service. If you do not want that these headers are forwarded, you have to remove them in the Camel header <code>org.apache.cxf.headers.Header.list</code>.</p> </div> </div> <div class="sect2"> <h3 id="_soap_headers_are_not_available_in_raw_mode"><a class="anchor" href="#_soap_headers_are_not_available_in_raw_mode"></a>SOAP headers are not available in RAW mode</h3> <div class="paragraph"> <p>SOAP headers are not available in RAW mode as SOAP processing is skipped.</p> </div> </div> <div class="sect2"> <h3 id="_how_to_throw_a_soap_fault_from_camel"><a class="anchor" href="#_how_to_throw_a_soap_fault_from_camel"></a>How to throw a SOAP Fault from Camel</h3> <div class="paragraph"> <p>If you are using a Camel CXF endpoint to consume the SOAP request, you may need to throw the SOAP Fault from the camel context.<br> Basically, you can use the <code>throwFault</code> DSL to do that; it works for <code>POJO</code>, <code>PAYLOAD</code> and <code>RAW</code> data format.<br> You can define the soap fault as shown in <a href="https://github.com/apache/camel/blob/main/components/camel-cxf/camel-cxf-soap/src/test/java/org/apache/camel/component/cxf/jaxws/CxfCustomizedExceptionTest.java#L65">CxfCustomizedExceptionTest</a>:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">SOAP_FAULT = new SoapFault(EXCEPTION_MESSAGE, SoapFault.FAULT_CODE_CLIENT);
Element detail = SOAP_FAULT.getOrCreateDetail();
Document doc = detail.getOwnerDocument();
Text tn = doc.createTextNode(DETAIL_TEXT);
detail.appendChild(tn);</code></pre> </div> </div> <div class="paragraph"> <p>Then throw it as you like:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">from(routerEndpointURI).setFaultBody(constant(SOAP_FAULT));</code></pre> </div> </div> <div class="paragraph"> <p>If your CXF endpoint is working in the <code>RAW</code> data format, you could set the SOAP Fault message in the message body and set the response code in the message header as demonstrated by <a href="https://github.com/apache/camel/blob/main/components/camel-cxf/camel-cxf-soap/src/test/java/org/apache/camel/component/cxf/jaxws/CxfMessageStreamExceptionTest.java#L43">CxfMessageStreamExceptionTest</a>:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">from(routerEndpointURI).process(new Processor() {
public void process(Exchange exchange) throws Exception {
Message out = exchange.getMessage();
// Set the message body
out.setBody(this.getClass().getResourceAsStream("SoapFaultMessage.xml"));
// Set the response code here
out.setHeader(org.apache.cxf.message.Message.RESPONSE_CODE, new Integer(500));
}
});</code></pre> </div> </div> <div class="paragraph"> <p>Same for using POJO data format. You can set the SOAPFault on the <em>OUT</em> body.</p> </div> </div> <div class="sect2"> <h3 id="propagate-request-response-context"><a class="anchor" href="#propagate-request-response-context"></a>How to propagate a Camel CXF endpoint&#8217;s request and response context</h3> <div class="paragraph"> <p><a href="https://github.com/apache/cxf/blob/master/core/src/main/java/org/apache/cxf/endpoint/Client.java">CXF client API</a> provides a way to invoke the operation with request and response context. If you are using a Camel CXF endpoint producer to invoke the outside web service, you can set the request context and get response context with the following code:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">CxfExchange exchange = (CxfExchange)template.send(getJaxwsEndpointUri(), new Processor() {
public void process(final Exchange exchange) {
final List&lt;String&gt; params = new ArrayList&lt;String&gt;();
params.add(TEST_MESSAGE);
// Set the request context to the inMessage
Map&lt;String, Object&gt; requestContext = new HashMap&lt;String, Object&gt;();
requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, JAXWS_SERVER_ADDRESS);
exchange.getIn().setBody(params);
exchange.getIn().setHeader(Client.REQUEST_CONTEXT , requestContext);
exchange.getIn().setHeader(CxfConstants.OPERATION_NAME, GREET_ME_OPERATION);
}
});
org.apache.camel.Message out = exchange.getMessage();
// The output is an object array, the first element of the array is the return value
Object\[\] output = out.getBody(Object\[\].class);
LOG.info("Received output text: " + output\[0\]);
// Get the response context form outMessage
Map&lt;String, Object&gt; responseContext = CastUtils.cast((Map)out.getHeader(Client.RESPONSE_CONTEXT));
assertNotNull(responseContext);
assertEquals("Get the wrong wsdl operation name", "{http://apache.org/hello_world_soap_http}greetMe",
responseContext.get("javax.xml.ws.wsdl.operation").toString());</code></pre> </div> </div> </div> <div class="sect2"> <h3 id="_attachment_support"><a class="anchor" href="#_attachment_support"></a>Attachment Support</h3> </div> <div class="sect2"> <h3 id="_pojo_mode"><a class="anchor" href="#_pojo_mode"></a>POJO Mode</h3> <div class="paragraph"> <p>Message Transmission Optimization Mechanism (MTOM) is supported if enabled - check the example in Payload Mode for enabling MTOM. Since attachments are marshalled and unmarshalled into POJOs, the attachments should be retrieved from the Apache Camel message body (as a parameter list), and it isn&#8217;t possible to retrieve attachments by Camel Message API</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">DataHandler handler = Exchange.getIn(AttachmentMessage.class).getAttachment("id");</code></pre> </div> </div> </div> <div class="sect2"> <h3 id="_payload_mode"><a class="anchor" href="#_payload_mode"></a>Payload Mode</h3> <div class="paragraph"> <p>Message Transmission Optimization Mechanism (MTOM) is supported by this Mode. Attachments can be retrieved by Camel Message APIs mentioned above. SOAP with Attachment (SwA) is supported and attachments can be retrieved. SwA is the default (same as setting the CXF endpoint property <code>mtomEnabled</code> to <code>false</code>).</p> </div> <div class="paragraph"> <p>To enable MTOM, set the CXF endpoint property <code>mtomEnabled</code> to <code>true</code>.</p> </div> <div id="_tabs_4" class="openblock tabs is-sync is-loading"> <div class="content"> <div class="ulist tablist"> <ul> <li id="_tabs_4_java_quarkus" class="tab"> <p>Java (Quarkus)</p> </li> <li id="_tabs_4_xml_spring" class="tab"> <p>XML (Spring)</p> </li> </ul> </div> <div id="_tabs_4_java_quarkus--panel" class="tabpanel" aria-labelledby="_tabs_4_java_quarkus"> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.cxf.common.DataFormat;
import org.apache.camel.component.cxf.jaxws.CxfEndpoint;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.enterprise.context.SessionScoped;
import jakarta.enterprise.inject.Produces;
import jakarta.inject.Named;
@ApplicationScoped
public class CxfSoapMtomRoutes extends RouteBuilder {
@Override
public void configure() {
from("cxf:bean:mtomPayloadModeEndpoint")
.process( exchange -&gt; { ... });
}
@Produces
@SessionScoped
@Named
CxfEndpoint mtomPayloadModeEndpoint() {
final CxfEndpoint result = new CxfEndpoint();
result.setServiceClass(MyMtomService.class);
result.setDataFormat(DataFormat.PAYLOAD);
result.setMtomEnabled(true);
result.setAddress("/mtom/hello");
return result;
}
}</code></pre> </div> </div> </div> <div id="_tabs_4_xml_spring--panel" class="tabpanel" aria-labelledby="_tabs_4_xml_spring"> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;cxf:cxfEndpoint id="mtomPayloadModeEndpoint" address="http://localhost:${CXFTestSupport.port1}/CxfMtomRouterPayloadModeTest/mtom"
wsdlURL="mtom.wsdl"
serviceName="ns:MyMtomService"
endpointName="ns:MyMtomPort"
xmlns:ns="http://apache.org/camel/cxf/mtom_feature"&gt;
&lt;cxf:properties&gt;
&lt;!-- enable mtom by setting this property to true --&gt;
&lt;entry key="mtom-enabled" value="true"/&gt;
&lt;!-- set the Camel CXF endpoint data format to PAYLOAD mode --&gt;
&lt;entry key="dataFormat" value="PAYLOAD"/&gt;
&lt;/cxf:properties&gt;
&lt;/cxf:cxfEndpoint&gt;</code></pre> </div> </div> </div> </div> </div> <div class="paragraph"> <p>You can produce a Camel message with attachment to send to a CXF endpoint in Payload mode.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">Exchange exchange = context.createProducerTemplate().send("direct:testEndpoint", new Processor() {
public void process(Exchange exchange) throws Exception {
exchange.setPattern(ExchangePattern.InOut);
List&lt;Source&gt; elements = new ArrayList&lt;Source&gt;();
elements.add(new DOMSource(DOMUtils.readXml(new StringReader(MtomTestHelper.REQ_MESSAGE)).getDocumentElement()));
CxfPayload&lt;SoapHeader&gt; body = new CxfPayload&lt;SoapHeader&gt;(new ArrayList&lt;SoapHeader&gt;(),
elements, null);
exchange.getIn().setBody(body);
exchange.getIn(AttachmentMessage.class).addAttachment(MtomTestHelper.REQ_PHOTO_CID,
new DataHandler(new ByteArrayDataSource(MtomTestHelper.REQ_PHOTO_DATA, "application/octet-stream")));
exchange.getIn(AttachmentMessage.class).addAttachment(MtomTestHelper.REQ_IMAGE_CID,
new DataHandler(new ByteArrayDataSource(MtomTestHelper.requestJpeg, "image/jpeg")));
}
});
// process response
CxfPayload&lt;SoapHeader&gt; out = exchange.getMessage().getBody(CxfPayload.class);
assertEquals(1, out.getBody().size());
Map&lt;String, String&gt; ns = new HashMap&lt;&gt;();
ns.put("ns", MtomTestHelper.SERVICE_TYPES_NS);
ns.put("xop", MtomTestHelper.XOP_NS);
XPathUtils xu = new XPathUtils(ns);
Element oute = new XmlConverter().toDOMElement(out.getBody().get(0));
Element ele = (Element) xu.getValue("//ns:DetailResponse/ns:photo/xop:Include", oute,
XPathConstants.NODE);
String photoId = ele.getAttribute("href").substring(4); // skip "cid:"
ele = (Element) xu.getValue("//ns:DetailResponse/ns:image/xop:Include", oute,
XPathConstants.NODE);
String imageId = ele.getAttribute("href").substring(4); // skip "cid:"
DataHandler dr = exchange.getMessage(AttachmentMessage.class).getAttachment(decodingReference(photoId));
assertEquals("application/octet-stream", dr.getContentType());
assertArrayEquals(MtomTestHelper.RESP_PHOTO_DATA, IOUtils.readBytesFromStream(dr.getInputStream()));
dr = exchange.getMessage(AttachmentMessage.class).getAttachment(decodingReference(imageId));
assertEquals("image/jpeg", dr.getContentType());
BufferedImage image = ImageIO.read(dr.getInputStream());
assertEquals(560, image.getWidth());
assertEquals(300, image.getHeight());</code></pre> </div> </div> <div class="paragraph"> <p>You can also consume a Camel message received from a CXF endpoint in Payload mode. The <a href="https://github.com/apache/camel/blob/main/components/camel-cxf/camel-cxf-spring-soap/src/test/java/org/apache/camel/component/cxf/mtom/CxfMtomConsumerPayloadModeTest.java#L97">CxfMtomConsumerPayloadModeTest</a> illustrates how this works:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">public static class MyProcessor implements Processor {
@Override
@SuppressWarnings("unchecked")
public void process(Exchange exchange) throws Exception {
CxfPayload&lt;SoapHeader&gt; in = exchange.getIn().getBody(CxfPayload.class);
// verify request
assertEquals(1, in.getBody().size());
Map&lt;String, String&gt; ns = new HashMap&lt;&gt;();
ns.put("ns", MtomTestHelper.SERVICE_TYPES_NS);
ns.put("xop", MtomTestHelper.XOP_NS);
XPathUtils xu = new XPathUtils(ns);
Element body = new XmlConverter().toDOMElement(in.getBody().get(0));
Element ele = (Element) xu.getValue("//ns:Detail/ns:photo/xop:Include", body,
XPathConstants.NODE);
String photoId = ele.getAttribute("href").substring(4); // skip "cid:"
assertEquals(MtomTestHelper.REQ_PHOTO_CID, photoId);
ele = (Element) xu.getValue("//ns:Detail/ns:image/xop:Include", body,
XPathConstants.NODE);
String imageId = ele.getAttribute("href").substring(4); // skip "cid:"
assertEquals(MtomTestHelper.REQ_IMAGE_CID, imageId);
DataHandler dr = exchange.getIn(AttachmentMessage.class).getAttachment(photoId);
assertEquals("application/octet-stream", dr.getContentType());
assertArrayEquals(MtomTestHelper.REQ_PHOTO_DATA, IOUtils.readBytesFromStream(dr.getInputStream()));
dr = exchange.getIn(AttachmentMessage.class).getAttachment(imageId);
assertEquals("image/jpeg", dr.getContentType());
assertArrayEquals(MtomTestHelper.requestJpeg, IOUtils.readBytesFromStream(dr.getInputStream()));
// create response
List&lt;Source&gt; elements = new ArrayList&lt;&gt;();
elements.add(new DOMSource(StaxUtils.read(new StringReader(MtomTestHelper.RESP_MESSAGE)).getDocumentElement()));
CxfPayload&lt;SoapHeader&gt; sbody = new CxfPayload&lt;&gt;(
new ArrayList&lt;SoapHeader&gt;(),
elements, null);
exchange.getMessage().setBody(sbody);
exchange.getMessage(AttachmentMessage.class).addAttachment(MtomTestHelper.RESP_PHOTO_CID,
new DataHandler(new ByteArrayDataSource(MtomTestHelper.RESP_PHOTO_DATA, "application/octet-stream")));
exchange.getMessage(AttachmentMessage.class).addAttachment(MtomTestHelper.RESP_IMAGE_CID,
new DataHandler(new ByteArrayDataSource(MtomTestHelper.responseJpeg, "image/jpeg")));
}
}</code></pre> </div> </div> </div> </div> </div> <div class="sect1"> <h2 id="_spring_boot_auto_configuration"><a class="anchor" href="#_spring_boot_auto_configuration"></a>Spring Boot Auto-Configuration</h2> <div class="sectionbody"> <div class="paragraph"> <p>When using cxf with Spring Boot make sure to use the following Maven dependency to have support for auto configuration:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;dependency&gt;
&lt;groupId&gt;org.apache.camel.springboot&lt;/groupId&gt;
&lt;artifactId&gt;camel-cxf-soap-starter&lt;/artifactId&gt;
&lt;version&gt;x.x.x&lt;/version&gt;
&lt;!-- use the same version as your Camel core version --&gt;
&lt;/dependency&gt;</code></pre> </div> </div> <div class="paragraph"> <p>The component supports 8 options, which are listed below.</p> </div> <div class="table-wrapper"><table class="tableblock frame-all grid-all stretch"> <colgroup> <col> <col> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Name</th> <th class="tableblock halign-left valign-top">Description</th> <th class="tableblock halign-center valign-top">Default</th> <th class="tableblock halign-left valign-top">Type</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_cxf_allow-streaming"></a> <a href="#_sb_option_camel_component_cxf_allow-streaming" class="anchor"></a><strong>camel.component.cxf.allow-streaming</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">This option controls whether the CXF component, when running in PAYLOAD mode, will DOM parse the incoming messages into DOM Elements or keep the payload as a javax.xml.transform.Source object that would allow streaming in some cases.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_cxf_autowired-enabled"></a> <a href="#_sb_option_camel_component_cxf_autowired-enabled" class="anchor"></a><strong>camel.component.cxf.autowired-enabled</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_cxf_bridge-error-handler"></a> <a href="#_sb_option_camel_component_cxf_bridge-error-handler" class="anchor"></a><strong>camel.component.cxf.bridge-error-handler</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions (if possible) occurred while the Camel consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. Important: This is only possible if the 3rd party component allows Camel to be alerted if an exception was thrown. Some components handle this internally only, and therefore bridgeErrorHandler is not possible. In other situations we may improve the Camel component to hook into the 3rd party component and make this possible for future releases. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_cxf_enabled"></a> <a href="#_sb_option_camel_component_cxf_enabled" class="anchor"></a><strong>camel.component.cxf.enabled</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Whether to enable auto configuration of the cxf component. This is enabled by default.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_cxf_header-filter-strategy"></a> <a href="#_sb_option_camel_component_cxf_header-filter-strategy" class="anchor"></a><strong>camel.component.cxf.header-filter-strategy</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message. The option is a org.apache.camel.spi.HeaderFilterStrategy type.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">HeaderFilterStrategy</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_cxf_lazy-start-producer"></a> <a href="#_sb_option_camel_component_cxf_lazy-start-producer" class="anchor"></a><strong>camel.component.cxf.lazy-start-producer</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel&#8217;s routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_cxf_synchronous"></a> <a href="#_sb_option_camel_component_cxf_synchronous" class="anchor"></a><strong>camel.component.cxf.synchronous</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Sets whether synchronous processing should be strictly used.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_cxf_use-global-ssl-context-parameters"></a> <a href="#_sb_option_camel_component_cxf_use-global-ssl-context-parameters" class="anchor"></a><strong>camel.component.cxf.use-global-ssl-context-parameters</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Enable usage of global SSL context parameters.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> </tbody> </table></div> </div> </div> </article> <aside class="toc sidebar" aria-label="Table of contents" data-title="Contents" data-levels="2"> <div class="toc-menu"></div> </aside> </div> </main> </div> <div class="footer-tools"> <a href="#top" title="Reach the top of the page">Back to top</a> </div> <footer> <div class="footer"> <figure class="logo"> <img src="../../_/img/logo-d-a567cee6fa.svg" class="logo-small mt-60" alt="Apache Camel Logo" aria-label="white silhouette of a camel in front of a sand dune"> </figure> <input id="footer-toggle-overview" type="checkbox" title="Show/Hide Overview section"> <dl> <dt><label for="footer-toggle-overview">Overview</label><label for="footer-toggle-overview">&#65291;</label></dt> <dd><a href="../../blog/">Blog</a></dd> <dd><a href="../../docs/">Documentation</a></dd> <dd><a href="../../community/support/">Community</a></dd> <dd><a href="../../download/">Download</a></dd> </dl> <input id="footer-toggle-documentation" type="checkbox" title="Show/Hide Documentation section"> <dl> <dt><label for="footer-toggle-documentation">Documentation</label><label for="footer-toggle-documentation">&#65291;</label></dt> <dd><a href="../../manual/">User Manual</a></dd> <dd><a href="../../components/next/index.html">Components</a></dd> <dd><a href="../../camel-k/next/">Camel-K</a></dd> <dd><a href="../../camel-kafka-connector/next/">Camel Kafka Connector</a></dd> <dd><a href="../../camel-quarkus/next/">Camel Quarkus</a></dd> <dd><a href="../../camel-spring-boot/next/">Camel Spring Boot</a></dd> <dd><a href="../../camel-karaf/3.22.x/">Camel Karaf</a></dd> <dd><a href="../../manual/faq/index.html">FAQ</a></dd> </dl> <input id="footer-toggle-community" type="checkbox" title="Show/Hide Community section"> <dl> <dt><label for="footer-toggle-community">Community</label><label for="footer-toggle-community">&#65291;</label></dt> <dd><a href="../../community/support/">Support</a></dd> <dd><a href="../../community/contributing/">Contributing</a></dd> <dd><a href="../../community/mailing-list/">Mailing Lists</a></dd> <dd><a href="../../community/user-stories/">User stories</a></dd> <dd><a href="../../community/articles/">Articles</a></dd> <dd><a href="../../community/books/">Books</a></dd> <dd><a href="../../community/team/">Team</a></dd> </dl> <input id="footer-toggle-about" type="checkbox" title="Show/Hide Acknowledgements section"> <dl> <dt><label for="footer-toggle-about">About</label><label for="footer-toggle-about">&#65291;</label></dt> <dd><a href="../../acknowledgments/">Acknowledgments</a></dd> <dd><a target="_blank" rel="noopener noreferrer nofollow" href="https://www.apache.org/events/current-event.html" title="Apache Events">Apache Events</a></dd> <dd><a target="_blank" rel="noopener noreferrer nofollow" href="https://www.apache.org/licenses/" title="License">License</a></dd> <dd><a target="_blank" rel="noopener noreferrer nofollow" href="https://www.apache.org/security/" title="Security">Security</a></dd> <dd><a target="_blank" rel="noopener noreferrer nofollow" href="https://www.apache.org/foundation/sponsorship.html" title="Sponsorship">Sponsorship</a></dd> <dd><a target="_blank" rel="noopener noreferrer nofollow" href="https://www.apache.org/foundation/thanks.html" title="Thanks">Thanks</a></dd> </dl> <p class="remark"> &copy; 2004-2025 The <a href="https://apache.org">Apache Software Foundation</a>.<br> Apache Camel, Camel, Apache, the Apache feather logo, and the Apache Camel project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners. </p> <div class="resources"> <div class="context"> <a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a> </div> <div class="context"> <a target="_blank" rel="noopener noreferrer nofollow" href="https://www.apache.org/foundation/policies/conduct">Code of Conduct</a> </div> <div class="context"> <a href="../../sitemap/">Sitemap</a> </div> </div> <div class="footer-icons"> <a rel="noopener noreferrer nofollow" href="https://github.com/apache/camel/" title="Collaborate on GitHub"><svg class="brand-icon" focusable="false"><use xlink:href="../../_/img/brand-logos-f2e689f4d4.svg#github"/></svg></a> <a rel="noopener noreferrer nofollow" href="https://camel.zulipchat.com" title="Chat on Zulip"><svg class="brand-icon" focusable="false"><use xlink:href="../../_/img/brand-logos-f2e689f4d4.svg#zulip"/></svg></a> <a rel="noopener noreferrer nofollow" href="https://twitter.com/ApacheCamel" title="Follow Apache Camel on Twitter"><svg class="brand-icon" focusable="false"><use xlink:href="../../_/img/brand-logos-f2e689f4d4.svg#twitter"/></svg></a> <a rel="noopener noreferrer nofollow" href="https://www.linkedin.com/groups/2447439/" title="Apache Camel group on Linkedin"><svg class="brand-icon" focusable="false"><use xlink:href="../../_/img/brand-logos-f2e689f4d4.svg#linkedin"/></svg></a> </div> </div> </footer> <script src="../../_/js/vendor/algoliasearch-bad45193e2.js"></script> <script src="../../_/js/site-c215fb6972.js"></script> <script async src="../../_/js/vendor/highlight-621a10fe1b.js"></script> <script async src="../../_/js/vendor/svg4everybody-a0c573f2b9.js"></script> <script async src="../../_/js/vendor/tabs-5aea11bcf5.js" data-sync-storage-key="preferred-tab"></script> <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "Organization", "name": "Apache Camel", "url": "https://camel.apache.org", "sameAs": [ "https://twitter.com/ApacheCamel" ], "logo": "../../_/img/logo-d-a567cee6fa.svg", "description": "Apache Camel ™ is a versatile open-source integration framework based on known Enterprise Integration Patterns. Camel empowers you to define routing and mediation rules in a variety of domain-specific languages, including a Java-based Fluent API, Spring or Blueprint XML Configuration files, and a Scala DSL." } </script> <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "BreadcrumbList", "itemListElement": [{ "@type": "ListItem", "position": 1, "name": "Apache Camel", "item": "https://camel.apache.org/" }, { "@type": "ListItem", "position": 2, "name": "Camel Components", "item": "https://camel.apache.org/components/4.10.x/index.html" }, { "@type": "ListItem", "position": 3, "name": "Next (Pre-release)", "item": "https://camel.apache.org/components/next/index.html" }, { "@type": "ListItem", "position": 4, "name": "Components", "item": "https://camel.apache.org/components/next/index.html" }, { "@type": "ListItem", "position": 5, "name": "CXF", "item": "https://camel.apache.org/components/next/cxf-component.html" }] } </script> </body> </html>