This directory includes the CXF jar, the CXF manifest jar, the required
dependencies, and many optional dependencies.

The 'manifest jar' is a jar containing only a MANIFEST.MF with a classpath
that calls in all the other jar.

!!Please note the following list is outdated and needs an update!!
Use the mvn dependency:list command to identify dependencies in the meantime.

The following jars are required for all CXF usage:
- cxf-core.jar
- geronimo-javamail.jar (Or the Sun equivalent) [7]
  (MAY be able to remove javamail if you don't use any MIME/MTOM/SAAJ type things)
- jaxb-api.jar  [7]
- jaxb-core.jar  [7]
- jaxb-impl.jar (this is a [7] for normal runtime, but is required for 
                 tooling and the dynamic clients)
- xmlschema-core.jar
- woodstox-core.jar
- stax2-api.jar
- slf4j-*.jar
- jcl-over-slf4j.jar

Note: woodstox and stax2-api can be removed if you set the 
"org.apache.cxf.stax.allowInsecureParser” system property to true.  This
is NOT recommended as it opens up various DOS attacks.

The following jars are required for XML catalog support:
- xml-resolver.jar 

For Java2WSDL and WSDL2Java:
- The above jars
- jaxb-xjc.jar
- velocity.jar
- commons-collections.jar
- commons-lang.jar
- cxf-rt-wsdl.jar
- cxf-rt-tools*.jar
- cxf-xjc*.jar (optional, these are xjc extensions for providing enhanced
        JAXB code generation)

For JAX-WS support:
- neethi.jar
- wsdl4j.jar
- asm.jar (semi-optional, helps with performance of wrapper types and is 
        required when adding JAXB annotations onto the SEI methods and 
	parameters.)
- cxf-rt-ws-addr.jar
- cxf-rt-ws-policy.jar
- cxf-rt-frontend-simple.jar
- cxf-rt-frontend-jaxws.jar
- cxf-rt-bindings-xml.jar
- cxf-rt-bindings-soap.jar
- cxf-rt-databinding-jaxb.jar
- cxf-rt-wsdl.jar
- cxf-rt-transports-http.jar (or other transport jar)

For XML Configuration support:
- aopalliance.jar
- spring-beans.jar
- spring-context.jar
- spring-core.jar

For hosting web services within WARs while using Spring-based CXFServlet:
- spring-web.jar

For standalone HTTP support use Jetty:
- geronimo-servlet.jar
- jetty-*.jar
- sl4j.jar & sl4j-jdk14.jar (optional - but improves logging)
- cxf-rt-transports-http-jetty.jar

For Aegis support:
- cxf-rt-databinding-aegis.jar

For WS-Security support:
- wss4j-*.jar
- xmlsec.jar
- ehcache-core.jar
- jasypt.jar
- cxf-rt-security.jar
- cxf-rt-ws-security.jar
- bcprov-jdk15on.jar (optional)

For SAML support in WS-Security
- joda-time.jar
- cryptacular.jar
- java-support.jar
- opensaml*.jar
- commons-code.jar
- cxf-rt-security-saml.jar

For JAX-RS support:
- javax.ws.rs-api.jar
- jettison.jar (Needed for JSON services only)
- oauth*.jar (Needed for OAuth support)
- cxf-rt-frontend-jaxrs.jar
- cxf-rt-rs-*.jar as needed


For JMS transport
- geronimo-jms.jar (Or the Sun equivalent)
- geronimo-jta.jar (Or the Sun equivalent)
- cxf-rt-transports-jms.jar

For the UDP transport
- mina-core.jar
- cxf-rt-transports-udp.jar

For the Async HTTP client transport
- commons-codec.jar
- httpasyncclient.jar
- httpcore.jar
- httpclient.jar
- httpcore-nio.jar
- cxf-rt-transports-http-hc.jar

For CORBA support:
- antlr.jar
- cxf-rt-bindings-corba.jar

For JavaScript functionality:
- js.jar
- cxf-rt-javascript
- cxf-rt-frontend-js

For schema validation with the Aegis data binding.
 - msv-core.jar
 - xsdlib.jar
 - isorelax.jar
 - relaxngDatatype.jar

For the WS-Notification Service:
 - cxf-services-wsn-api.jar
 - cxf-services-wsn-core.jar  
 - activemq*.jar
 - hawtbuf.jar
 - geronimo-j2ee-management_1.1_spec.jar

For the CXF Security Token Service:
 - cxf-services-sts-core.jar

For the WS-Discovery Service
 - cxf-ws-discovery-api.jar
 - cxf-ws-discovery-service.jar




