This Confluence has been LDAP enabled, if you are an ASF Committer, please use your LDAP Credentials to login. Any problems file an INFRA jira ticket please.

Child pages
  • Embedding CXF inside Spring
Skip to end of metadata
Go to start of metadata

Changes in CXF 2.4.x

The below is applicable for CXF versions 2.3.x and older. Starting in CXF 2.4.0, the extensions are loaded internally by CXF automatically and you do not need to import all the cxf-extension-*.xml file. You only need to import classpath:META-INF/cxf/cxf.xml.

You can embed CXF within an existing Spring application. Since all XML configuration files are Spring xml files, the two approaches should be equivalent.

CXF includes Spring configuration files which configure the various CXF modules. You will want to import these into your application. Here is an example that imports the core CXF components, the SOAP binding, and the servlet transport:

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:jaxws="http://cxf.apache.org/jaxws"
	xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd">

	<import resource="classpath:META-INF/cxf/cxf.xml" />
	<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
	<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
  ...
</beans>

To include all the CXF modules you can use cxf-all or a wildcard expression:

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:jaxws="http://cxf.apache.org/jaxws"
	xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd">

	<import resource="classpath:META-INF/cxf/cxf.xml" />
	<import resource="classpath*:META-INF/cxf/cxf-extension-*.xml" />
  ...
</beans>

The only module cxf-all won't include is the servlet transport. If you want to include the servlet transport you must specify it specifically. This is because it will tell CXF to no longer use the standalone HTTP transport which is specified in the "classpath:META-INF/cxf/cxf-extension-http-jetty.xml" xml file, and you may not always want to do this.

This mailing list thread provides more information on CXF Spring files that may need to be imported in your web.xml.

 

  • No labels