Modified: websites/production/cxf/content/docs/aegis-databinding-20x.html ============================================================================== --- websites/production/cxf/content/docs/aegis-databinding-20x.html (original) +++ websites/production/cxf/content/docs/aegis-databinding-20x.html Tue Sep 12 19:09:41 2017 @@ -32,8 +32,9 @@ <link type="text/css" rel="stylesheet" href="/resources/highlighter/styles/shThemeCXF.css"> <script src='/resources/highlighter/scripts/shCore.js'></script> -<script src='/resources/highlighter/scripts/shBrushJava.js'></script> +<script src='/resources/highlighter/scripts/shBrushBash.js'></script> <script src='/resources/highlighter/scripts/shBrushXml.js'></script> +<script src='/resources/highlighter/scripts/shBrushJava.js'></script> <script> SyntaxHighlighter.defaults['toolbar'] = false; SyntaxHighlighter.all(); @@ -141,7 +142,7 @@ Apache CXF -- Aegis Databinding (2.0.x) <p>Most people who use Aegis use the 'Simple' front end. </p> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"> +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;"> <simple:server id="pojoservice" serviceClass="demo.hw.server.HelloWorld" address="/hello_world"> <simple:serviceBean> <bean class="demo.hw.server.HelloWorldImpl" /> @@ -165,7 +166,7 @@ Apache CXF -- Aegis Databinding (2.0.x) <p>You can also use Aegis with JAX-WS. Here's a Spring configuration example for that.</p> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"> +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;"> <bean id="aegisBean" class="org.apache.cxf.aegis.databinding.AegisDatabinding" scope="prototype"/> <bean id="jaxws-and-aegis-service-factory" class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean" @@ -204,7 +205,7 @@ Apache CXF -- Aegis Databinding (2.0.x) <p>Here's a Java configuration using the Simple front end. </p> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;"> +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;"> import org.apache.cxf.aegis.databinding.AegisDatabinding; import org.apache.cxf.frontend.ServerFactoryBean; @@ -220,7 +221,7 @@ sf.create(); parameters names from Java reflection. As always, Java interfaces don't carry parameter names, and this results in names like 'arg0', 'arg1', etc, which don't match the service.</p> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;"> +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;"> import org.apache.cxf.aegis.databinding.AegisDatabinding; import org.apache.cxf.frontend.ClientProxyFactoryBean; @@ -240,7 +241,7 @@ If you need to interoperate with XFire, an additional service configuration class to your service configuration: XFireCompatibilityServiceConfiguration (in 2.0.x, AegisServiceConfiguration). <br clear="none"> The spring example above shows the necessary configuration in a comment. For the client side in Java, you need to add the service configuration to the service factory as follows:</p> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;"> +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;"> import org.apache.cxf.aegis.databinding.AegisServiceConfiguration; // for 2.0.x sf.getServiceFactory().getServiceConfigurations().add(0, new AegisServiceConfiguration()); @@ -258,7 +259,7 @@ sf.getServiceFactory().getServiceConfigu <p>Fore example, the java class:</p> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;"> +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;"> public class Employee { private String name; @@ -274,7 +275,7 @@ public class Employee </div></div> <p>In XML this translates to:</p> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"> +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;"> <Employee xmlns="http://xfire.codehaus.org"> <name>Santa Claus</name> <title>Chief Present Officer (CPO)</title> @@ -283,7 +284,7 @@ public class Employee </div></div> <p>In XML Schema this would become a complex type:</p> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"> +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;"> <xsd:complexType name="Employee"> <xsd:sequence> <xsd:element name="name" type="xsd:string" minOccurs="0" maxOccurs="1/> @@ -309,7 +310,7 @@ public class Employee <p>If you have many properties, and you want most, or all of them, to have a minOccurs other than 0 or a nillable other than <strong>false</strong>, you can change the defaults for Aegis from Java code (amongst other places).<br clear="none"> Here is an example: it extracts the binding provider from the service factory, and changes the configuration parameters.</p> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;"> +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;"> ServerFactoryBean sf = new ServerFactoryBean(); sf.setServiceClass(serviceClass); sf.setAddress("http://myhost/service");
Modified: websites/production/cxf/content/docs/aegis-mapping-files.html ============================================================================== --- websites/production/cxf/content/docs/aegis-mapping-files.html (original) +++ websites/production/cxf/content/docs/aegis-mapping-files.html Tue Sep 12 19:09:41 2017 @@ -32,8 +32,9 @@ <link type="text/css" rel="stylesheet" href="/resources/highlighter/styles/shThemeCXF.css"> <script src='/resources/highlighter/scripts/shCore.js'></script> -<script src='/resources/highlighter/scripts/shBrushJava.js'></script> +<script src='/resources/highlighter/scripts/shBrushBash.js'></script> <script src='/resources/highlighter/scripts/shBrushXml.js'></script> +<script src='/resources/highlighter/scripts/shBrushJava.js'></script> <script> SyntaxHighlighter.defaults['toolbar'] = false; SyntaxHighlighter.all(); @@ -123,7 +124,7 @@ Apache CXF -- Aegis Mapping Files <p>Mapping files must exist in the same package as your bean or service class on the class path. In the above example the mapping file would be named "/org/codehaus/xfire/Employee.aegis.xml", with the following format:</p> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"> +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;"> <mappings> <mapping uri="" name=""> <method name="methodName"> @@ -144,7 +145,7 @@ Apache CXF -- Aegis Mapping Files <p>Lets pretend that in the above example you would like the elements names to be capatilized and in the namespace "urn:north-pole:operations". You could achieve this through a mapping file like so:</p> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"> +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;"> <mappings xmlns:np="urn:north-pole:operations"> <mapping name="np:Employee"> <property name="name" mappedName="Name"/> @@ -157,7 +158,7 @@ Apache CXF -- Aegis Mapping Files <p>This will result in a mapping like so:</p> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"> +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;"> <np:Employee xmlns:np="urn:north-pole:operations"> <np:Name>Santa Claus</np:Name> <np:Title>Chief Present Officer (CPO)</np:Title> @@ -169,7 +170,7 @@ Apache CXF -- Aegis Mapping Files <p>If you don't want to serialize a certain property it is easy to ignore it:</p> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"> +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;"> <mappings> <mapping> <property name="propertyName" ignore="true"/> @@ -182,7 +183,7 @@ Apache CXF -- Aegis Mapping Files <p>The default Aegis mapping is to assume that, since any Java object can be <strong>null</strong>, that the corresponding schema elements should have minOccurs of 0 and nillable of true. There are properties on the mappings for to control this.</p> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;"> +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;"> <mappings> <mapping> <property name='everpresentProperty' minOccurs='1' nillable='false'/> @@ -196,7 +197,7 @@ Apache CXF -- Aegis Mapping Files <p>In order to make use of the various types that Aegis provides in the "org.apache.cxf.aegis.type.basic" package, follow this example which allows the wsdl to use the "xsd:date" instead of the "xsd:dateTime".</p> <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;"> +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;"> <mappings xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <mapping> <property name="birthDate" Modified: websites/production/cxf/content/docs/annotated-aegis-file-schema.html ============================================================================== --- websites/production/cxf/content/docs/annotated-aegis-file-schema.html (original) +++ websites/production/cxf/content/docs/annotated-aegis-file-schema.html Tue Sep 12 19:09:41 2017 @@ -117,7 +117,7 @@ Apache CXF -- Annotated Aegis File Schem <!-- Content --> <div class="wiki-content"> <div id="ConfluenceContent"><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"> +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;"> <?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Software Foundation (ASF) under one Modified: websites/production/cxf/content/docs/annotations.html ============================================================================== --- websites/production/cxf/content/docs/annotations.html (original) +++ websites/production/cxf/content/docs/annotations.html Tue Sep 12 19:09:41 2017 @@ -32,6 +32,7 @@ <link type="text/css" rel="stylesheet" href="/resources/highlighter/styles/shThemeCXF.css"> <script src='/resources/highlighter/scripts/shCore.js'></script> +<script src='/resources/highlighter/scripts/shBrushBash.js'></script> <script src='/resources/highlighter/scripts/shBrushJava.js'></script> <script> SyntaxHighlighter.defaults['toolbar'] = false; @@ -117,7 +118,7 @@ Apache CXF -- Annotations <!-- Content --> <div class="wiki-content"> <div id="ConfluenceContent"><p>CXF provides several custom annotations that can be used to configure and customize the CXF runtime.</p><h3 id="Annotations-org.apache.cxf.feature.Features">org.apache.cxf.feature.Features</h3><p>The @Features annotation is used to add <a shape="rect" href="features.html">Features</a>. See the <a shape="rect" href="featureslist.html">FeaturesList</a> for the list of Features we provide "out of the box", but you can easily create your own. In many cases, however, those features have Annotations themselves which can be used and provide greater control over configuration.</p><h3 id="Annotations-org.apache.cxf.interceptor.InInterceptors,org.apache.cxf.interceptor.OutInterceptors,org.apache.cxf.interceptor.OutFaultInterceptors,org.apache.cxf.interceptor.InFaultInterceptors">org.apache.cxf.interceptor.InInterceptors, <br clear="none" class="atl-forced-newline"> org.apache.cxf.interceptor.OutInterceptors, <br clear="none" class="atl-forced-newline"> org.apach e.cxf.interceptor.OutFaultInterceptors, <br clear="none" class="atl-forced-newline"> org.apache.cxf.interceptor.InFaultInterceptors</h3><p>Add interceptors to the various chains used to process messages. See <a shape="rect" href="interceptors.html">Interceptors</a> for more detail.</p><p><span class="confluence-anchor-link" id="Annotations-WSDLDocumentation"></span></p><h3 id="Annotations-org.apache.cxf.annotations.WSDLDocumentationorg.apache.cxf.annotations.WSDLDocumentationCollection(since2.3)">org.apache.cxf.annotations.WSDLDocumentation <br clear="none" class="atl-forced-newline"> org.apache.cxf.annotations.WSDLDocumentationCollection (since 2.3)</h3><p>For "java first" scenarios where the WSDL is derived from the Java interfaces/code, these annotations allow adding wsd:documentation elements to various locations in the generated wsdl.</p><p>For example:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">@WebService +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;">@WebService @WSDLDocumentationCollection( { @WSDLDocumentation("My portType documentation"), @@ -135,7 +136,7 @@ public interface MyService { } </pre> </div></div><p><span class="confluence-anchor-link" id="Annotations-SchemaValidation"></span></p><h3 id="Annotations-org.apache.cxf.annotations.SchemaValidation(since2.3)">org.apache.cxf.annotations.SchemaValidation (since 2.3)</h3><p>Turns on SchemaValidation for messages. By default, for performance reasons, CXF does not validate message against the schema. By turning on validation, problems with messages not matching the schema are easier to determine.   These annotations can be applied globally to the SEI, but also can be applied at method level in both the SEI and Implementation.</p><p> </p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd">IN</td><td colspan="1" rowspan="1" class="confluenceTd">Apply schema validation to INcoming messages on client and server</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">REQUEST</td><td colspan="1" rowspan="1" class="confluenceTd"><strong>(Since 2.7. 14, 3.0.3, 3.1</strong>) Apply schema validation to Request messages.  This annotation will cause validation to be applied to OUTgoing Client messages, and INcoming Server messages.</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">OUT</td><td colspan="1" rowspan="1" class="confluenceTd">Apply schema validation to OUTgoing messages on Client and Server</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">RESPONSE</td><td colspan="1" rowspan="1" class="confluenceTd"><strong>(Since 2.7.14, 3.0.3, 3.1)</strong> Apply schema validation to Response messages.  This annotation will cause validation to be applied to INcoming Client messages, and OUTgoing Server messages.</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">BOTH</td><td colspan="1" rowspan="1" class="confluenceTd">Apply schema validation to both INcoming and OUTgoing messages on Client and Server</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">NONE</td><td colspan="1" row span="1" class="confluenceTd">All schema validation is disabled.</td></tr></tbody></table></div><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">@WebService +<pre class="brush: java; gutter: false; theme: Confluence" style="font-size:12px;">@WebService @SchemaValidation(type = SchemaValidationType.BOTH) public interface MyService { Foo validateBoth(Bar data); @@ -156,7 +157,7 @@ public interface MyService { Foo validateResponse(Bar data); }</pre> </div></div><p> </p><p><span class="confluence-anchor-link" id="Annotations-DataBinding"></span></p><h3 id="Annotations-org.apache.cxf.annotations.DataBinding(since2.2.4)">org.apache.cxf.annotations.DataBinding (since 2.2.4)</h3><p>Sets the DataBinding class that is associated with the service. By default, CXF assumes you are using the JAXB data binding. However, CXF supports different databindings such as XMLBeans, Aegis, SDO, and possibly more. This annotation can be used in place of configuration to select the databinding class.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">@DataBinding(org.apache.cxf.sdo.SDODataBinding.class) +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;">@DataBinding(org.apache.cxf.sdo.SDODataBinding.class) public interface MyService { public commonj.sdo.DataObject echoStruct( commonj.sdo.DataObject struct @@ -164,7 +165,7 @@ public interface MyService { } </pre> </div></div><p><span class="confluence-anchor-link" id="Annotations-Logging"></span></p><h3 id="Annotations-org.apache.cxf.annotations.Logging(since2.3)">org.apache.cxf.annotations.Logging (since 2.3)</h3><p>Turns on logging for the endpoint. Can be used to control the size limits of what gets logged as well as the location. It supports the following attributes:</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>limit</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Sets the size limit after which the message is truncated in the logs. Default is 64K</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>inLocation</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Sets the location to log incoming messages. Can be <stderr>, <stdout>, <logger>, or a file: URL. Default is <logger></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>outLocatio n</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Sets the location to log outgoing messages. Can be <stderr>, <stdout>, <logger>, or a file: URL. Default is <logger></p></td></tr></tbody></table></div><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">@Logging(limit=16000, inLocation="<stdout>") +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;">@Logging(limit=16000, inLocation="<stdout>") public interface MyService { String echoString(String s); @@ -172,7 +173,7 @@ public interface MyService { } </pre> </div></div><p><span class="confluence-anchor-link" id="Annotations-GZIP"></span></p><h3 id="Annotations-org.apache.cxf.annotations.GZIP(since2.3)">org.apache.cxf.annotations.GZIP (since 2.3)</h3><p>Enables GZIP compression of on-the-wire data. Supported attributes:</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>threshold</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>the threshold under which messages are not gzipped</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>force</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>force GZIP compression instead of negotiating via the Accept-Encoding header</p></td></tr></tbody></table></div><p>GZIP is a negotiated enhancement. An initial request from a client will not be gzipped, but an Accept header will be added and if the server supports it, the response will be gzipped and any subsequent requests will be.</p><p><span class= "confluence-anchor-link" id="Annotations-FastInfoset"></span></p><h3 id="Annotations-org.apache.cxf.annotations.FastInfoset(since2.3)">org.apache.cxf.annotations.FastInfoset (since 2.3)</h3><p>Enables FastInfoset of on-the-wire data. Supported attributes:</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>force</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>forces the use of fastinfoset instead of negotiating. Default is false</p></td></tr></tbody></table></div><p>FastInfoset is a negotiated enhancement. An initial request from a client will not be in fastinfoset, but an Accept header will be added and if the server supports it, the response will be in fastinfoset and any subsequent requests will be.</p><p><span class="confluence-anchor-link" id="Annotations-EndpointProperty"></span></p><h3 id="Annotations-org.apache.cxf.annotations.EndpointPropertyorg.apache.cxf.annotations.EndpointProperties(since2. 3)">org.apache.cxf.annotations.EndpointProperty <br clear="none" class="atl-forced-newline"> org.apache.cxf.annotations.EndpointProperties (since 2.3)</h3><p>Adds a property to an endpoint. Many things such as WS-Security related things and such can be configured via endpoint properties. Traditionally, these would be set via the <jaxws:properties> element on the <jaxws:endpoint> element in the spring config, but these annotations allow these properties to be configured into the code.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">@WebService +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;">@WebService @EndpointProperties( { @EndpointProperty(key = "my.property", value="some value"), @@ -183,7 +184,7 @@ public interface MyService { } </pre> </div></div><p><span class="confluence-anchor-link" id="Annotations-Policy"></span></p><h3 id="Annotations-org.apache.cxf.annotations.Policyorg.apache.cxf.annotations.Policies(since2.3)">org.apache.cxf.annotations.Policy <br clear="none" class="atl-forced-newline"> org.apache.cxf.annotations.Policies (since 2.3)</h3><p>Used to attach WS-Policy fragments to a service or operation. The Policy supports the attributes:</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>uri</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>REQUIRED</strong> the location of the file containing the Policy definition</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>includeInWSDL</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Whether to include the policy in the generated WSDL when generating a wsdl. Default is true</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>place ment</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Specify where to place the policy</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>faultClass</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>if placement is a FAULT, this specifies which fault the policy would apply to</p></td></tr></tbody></table></div><div class="confluence-information-macro confluence-information-macro-note"><span class="aui-icon aui-icon-small aui-iconfont-warning confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>When using a custom Spring configuration, you need to import META-INF/cxf/cxf-extension-policy.xml</p></div></div><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">@Policies({ +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;">@Policies({ @Policy(uri = "annotationpolicies/TestInterfacePolicy.xml"), @Policy(uri = "annotationpolicies/TestImplPolicy.xml", placement = Policy.Placement.SERVICE_PORT), @@ -212,7 +213,7 @@ public static interface TestInterface { </pre> </div></div><p><span class="confluence-anchor-link" id="Annotations-Policy"></span></p><h3 id="Annotations-org.apache.cxf.annotations.UseAsyncMethod(since2.6.0)">org.apache.cxf.annotations.UseAsyncMethod (since 2.6.0)</h3><p>Used on the JAX-WS service implementation object to mark a method as preferring the 'async' version of the method instead of the synchronous version. With JAX-WS, services default to the synchronous methods that require the returning value to be returned from the method. By marking a method with the @UseAsyncMethod annotation, if the transport supports it, CXF will call the async version that takes an AsynHandler object and the service can call that handler when the response is ready. If the transport does not support the CXF continuations, the synchronous method will be called as normal.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;"> @UseAsyncMethod +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;"> @UseAsyncMethod public String greetMeSometime(String me) { LOG.info("Executing operation greetMeSometime synchronously"); System.out.println("Executing operation greetMeSometime synchronously\n"); Modified: websites/production/cxf/content/docs/application-server-specific-configuration-guide.html ============================================================================== --- websites/production/cxf/content/docs/application-server-specific-configuration-guide.html (original) +++ websites/production/cxf/content/docs/application-server-specific-configuration-guide.html Tue Sep 12 19:09:41 2017 @@ -32,8 +32,9 @@ <link type="text/css" rel="stylesheet" href="/resources/highlighter/styles/shThemeCXF.css"> <script src='/resources/highlighter/scripts/shCore.js'></script> -<script src='/resources/highlighter/scripts/shBrushJava.js'></script> +<script src='/resources/highlighter/scripts/shBrushBash.js'></script> <script src='/resources/highlighter/scripts/shBrushXml.js'></script> +<script src='/resources/highlighter/scripts/shBrushJava.js'></script> <script> SyntaxHighlighter.defaults['toolbar'] = false; SyntaxHighlighter.all(); @@ -118,11 +119,11 @@ Apache CXF -- Application Server Specifi <!-- Content --> <div class="wiki-content"> <div id="ConfluenceContent"><p>This document provides app server-specific configuration information for running Apache CXF.</p><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1467902807657 {padding: 0px;} -div.rbtoc1467902807657 ul {list-style: disc;margin-left: 0px;padding-left: 20px;} -div.rbtoc1467902807657 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1505242914039 {padding: 0px;} +div.rbtoc1505242914039 ul {list-style: disc;margin-left: 0px;padding-left: 20px;} +div.rbtoc1505242914039 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1467902807657"> +/*]]>*/</style></p><div class="toc-macro rbtoc1505242914039"> <ul class="toc-indentation"><li><a shape="rect" href="#ApplicationServerSpecificConfigurationGuide-JBossApplicationServer">JBoss Application Server</a></li><li><a shape="rect" href="#ApplicationServerSpecificConfigurationGuide-SpringBoot">SpringBoot</a></li><li><a shape="rect" href="#ApplicationServerSpecificConfigurationGuide-WebLogic">WebLogic</a> <ul class="toc-indentation"><li><a shape="rect" href="#ApplicationServerSpecificConfigurationGuide-Putjarsinendorsedfolder">Put jars in endorsed folder</a></li><li><a shape="rect" href="#ApplicationServerSpecificConfigurationGuide-Packwarinanear,deploytheearwithweblogic-application.xml">Pack war in an ear, deploy the ear with weblogic-application.xml</a></li></ul> </li><li><a shape="rect" href="#ApplicationServerSpecificConfigurationGuide-Websphere">Websphere</a> @@ -139,7 +140,7 @@ div.rbtoc1467902807657 li {margin-left: </li></ul> </li><li><a shape="rect" href="#ApplicationServerSpecificConfigurationGuide-IntegrationwithApplicationServerFAQ">Integration with Application Server FAQ</a></li><li><a shape="rect" href="#ApplicationServerSpecificConfigurationGuide-Resources">Resources</a></li></ul> </div><h2 id="ApplicationServerSpecificConfigurationGuide-JBossApplicationServer">JBoss Application Server</h2><p>JBoss Application Server (JBoss AS) comes with its own webservices stack (JBossWS) in order for providing full JavaEE support.<br clear="none"> Starting from JBoss AS 6 M4, the default webservices stack is internally based on Apache CXF; as a consequence users might experiment classloading issues with classes from both the CXF libraries and its dependencies if included in deployments and not properly isolated. Please refer to the relevant JBoss AS documentation for details on how to turn on classloading isolation on the application server version in use.</p><p>In particular, when willing to run Apache CXF based applications on top of JBoss AS 7 series, users have basically two options:</p><ul><li><p>use JBoss AS as if it was a servlet container with no WS functionalities: this basically implies disabling the webservices subsystem for the user deployment, hence preventing the AS webservices stack from processing the ws endpoint deployment and letting the CXF libs included in the archive deal with any WS invocations when CXFServlet is hit; the webservices subsystem is turned off by adding a jboss-deployment-structure.xml as follows to the ws endpoint deployment:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"><jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2"> +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;"><jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2"> <deployment> <exclude-subsystems> <subsystem name="webservices" /> @@ -148,7 +149,7 @@ div.rbtoc1467902807657 li {margin-left: </jboss-deployment-structure> </pre> </div></div><p>this approach offers the fastest route to deploying CXF apps on JBoss AS; the drawback is that no special ws integration with JBoss AS internals is available</p></li></ul><ul><li>rely on JBossWS integration and the Apache CXF libraries included in the application server (<a shape="rect" class="external-link" href="https://docs.jboss.org/author/display/AS71/Webservices+reference+guide" rel="nofollow">documentation</a>): this implies removing any Apache CXF libs from the ws deployment as well as any other dependencies which is already included in JBoss AS (including any Java EE API jar); if included, the optional web.xml descriptor is to be rewritten according to JBossWS convention (see <a shape="rect" class="external-link" href="https://docs.jboss.org/author/display/AS71/JAX-WS+User+Guide" rel="nofollow">documentation</a>); the Spring support is optional in JBoss AS and Spring based endpoint declaration is not the default/preferred configuration approach for ws endpoin ts, hence users willing to declare endpoints using Spring needs to create a org.springframework.spring module and put their endpoint declarations in a jbossws-cxf.xml descriptor; if the user application makes use of any lib besides tha JavaEE api, proper module <a shape="rect" class="external-link" href="https://docs.jboss.org/author/display/AS71/Class+Loading+in+AS7" rel="nofollow">dependencies</a> are to be declared either using the jboss-deployment-structure.xml descriptor or the archive MANIFEST.MF (few directions on ws modules available <a shape="rect" class="external-link" href="https://docs.jboss.org/author/display/AS71/JBoss+Modules+and+WS+applications" rel="nofollow">here</a>)</li></ul><p>The second approach allows leveraging the full JavaEE 6 stack (including e.g. JSR-109) as well as specific ws integration with JBoss AS internals.</p><h2 id="ApplicationServerSpecificConfigurationGuide-SpringBoot">SpringBoot</h2><p>Please see CXF <a shape="rect" href="springboot.html">Spri ngBoot</a> documentation.</p><p>JAX-WS: see <a shape="rect" class="external-link" href="https://github.com/apache/cxf/tree/master/distribution/src/main/release/samples/jaxws_spring_boot" rel="nofollow">JAX-WS Spring Boot</a> demo.</p><p>JAX-RS:  see <a shape="rect" class="external-link" href="https://github.com/apache/cxf/tree/master/distribution/src/main/release/samples/jax_rs/spring_boot" rel="nofollow">JAX-RS Spring Boot</a> and <a shape="rect" class="external-link" href="https://github.com/apache/cxf/tree/master/distribution/src/main/release/samples/jax_rs/spring_boot_scan" rel="nofollow">JAX-RS Spring Boot Scan</a> demos.</p><h2 id="ApplicationServerSpecificConfigurationGuide-WebLogic">WebLogic</h2><p>There are two ways to deploy a CXF WAR archive in WebLogic. (<strong>Note: This has been validated on WebLogic9.2.</strong>)</p><h4 id="ApplicationServerSpecificConfigurationGuide-Putjarsinendorsedfolder">Put jars in endorsed folder</h4><ul><li>P ut the geronimo-ws-metadata_2.0_spec-1.1.1.jar in the $Weblogic_Home/jdk_../jre/lib/endorsed folder.</li><li>Deploy the CXF war in weblogic.<br clear="none"> (This way is not recommended, since it might break the application server itself. The method below is preferred, as it impacts a single module only.)</li></ul><h4 id="ApplicationServerSpecificConfigurationGuide-Packwarinanear,deploytheearwithweblogic-application.xml">Pack war in an ear, deploy the ear with weblogic-application.xml</h4><ul><li><p>Create a standard J2EE application.xml file in the META-INF folder. (Take $CXF_HOME/samples/java_first_spring_support for example)</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"><?xml version="1.0" encoding="UTF-8"?> +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;"><?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE application PUBLIC "-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN" "http://java.sun.com/dtd/application_1_3.dtd"> @@ -163,7 +164,7 @@ div.rbtoc1467902807657 li {margin-left: </application> </pre> </div></div></li></ul><ul><li><p>Create a weblogic-application.xml (Weblogic specific) in the META-INF folder.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"><?xml version="1.0" encoding="UTF-8"?> +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;"><?xml version="1.0" encoding="UTF-8"?> <weblogic-application xmlns="http://www.bea.com/ns/weblogic/90"> <application-param> <param-name>webapp.encoding.default</param-name> @@ -175,7 +176,7 @@ div.rbtoc1467902807657 li {margin-left: </weblogic-application> </pre> </div></div></li></ul><p>The prefer-application-packages element you see above sets up WebLogic's <a shape="rect" class="external-link" href="http://e-docs.bea.com/wls/docs100/programming/classloading.html#wp1097187" rel="nofollow">Filtering Classloader</a>. Each class whose package matches one of the package-name elements listed will be searched for first within the EAR before relying on the WebLogic system classloader's version. If a package for a particular class is not listed here, WebLogic will try to load its own (possibly older) version first, so if you are getting deployment errors due to any particular class you might wish to add its package here.</p><p>Also note you can, and may need to, specify other options in the weblogic-application.xml file such as XML processing factories as shown <a shape="rect" class="external-link" href="http://cxf.547215.n5.nabble.com/Getting-error-while-deploying-on-weblogic-9-2-but-able-to-do-in-tomcat-td554060.html#a554061" rel="nofollow">here </a>. See the WebLogic <a shape="rect" class="external-link" href="http://download.oracle.com/docs/cd/E12840_01/wls/docs103/programming/app_xml.html#wp1064995" rel="nofollow">guide</a> for more information.</p><ul><li>Run "jar cvf ..." command to create the ear and then deploy it. Alternatively, this <a shape="rect" class="external-link" href="http://www.jroller.com/gmazza/entry/deploying_webservices_on_weblogic" rel="nofollow">blog entry</a> provides a Mavenized method of building the EAR.</li></ul><h2 id="ApplicationServerSpecificConfigurationGuide-Websphere">Websphere</h2><h3 id="ApplicationServerSpecificConfigurationGuide-ForWebSphereVersions<6.1.0.29">For WebSphere Versions < 6.1.0.29</h3><p>Adding jars to the 'endorsed' folder appears to be the main solution:</p><h4 id="ApplicationServerSpecificConfigurationGuide-NoWebServicesFeaturePackforWebSphereinstalled">No Web Services Feature Pack for WebSphere installed</h4><h5 id="ApplicationServerSpecificConfigurationGuide-putj arintheendorsedfolder">put jar in the endorsed folder</h5><ul><li>put the wsdl4j-1.6.1.jar in the $WebSphere_HOME/java/jre/lib/endorsed folder.</li><li>In the WebSphere console, find the specific enterprise application, click the "Class loading and update detection".<ul><li>Mark the "Classes loaded with application class loader first" selected.</li><li>Mark the "Class loader for each war file in application" selected.</li></ul></li></ul><p>And then restart the Websphere server. (Because we changed the endorsed folder, we need to restart it to make it take effect).</p><div class="confluence-information-macro confluence-information-macro-tip"><span class="aui-icon aui-icon-small aui-iconfont-approve confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>Please make sure your classpath doesn't have the servlet-2.5 library, since WebSphere6.1 is servlet-2.4 compliant!</p></div></div><h5 id="ApplicationServerSpecificConfigurationGuide-Addyourownclassl oader">Add your own class loader</h5><p>If you put your wsdl4j-1.6.1 jar in $WAS_HOME/java/jre/lib/endorsed, all your applications will depend on your version of wsdl4j. Another solution is to create a new class loader in your server which loads before parent class loader, create a shared library with your version of wsdl4j, and add this shared library to your new class loader. This version of wsdl4j will only be available for your specific server and not affect applications running in other servers.</p><p><strong>Step by step</strong></p><ol><li>In the WAS console navigate to <strong>Environment > Shared Libraries</strong></li><li>Select the scope you wish your library should be visible in</li><li>Click <strong>New</strong> and set values ex: <code>name=MYAPP_SHARED_LIB, classpath=PATH_TO/wsdl4j-1.6.2.jar</code> and <strong>Save</strong></li><li>Navigate to <strong>Application servers > [your server name]</strong> <strong>> Java and Process Management > Class loader > ; New</strong></li><li>Select <strong>Classes loaded with application class loader first</strong> and <strong>Save</strong></li><li>Select your new class loader and click <strong>Shared library references</strong></li><li>Add your shared library (MYAPP_SHARED_LIB) <strong>Save</strong> and restart your server.</li></ol><p>Tested in WAS 6.1 only but should work in earlier versions as well.</p><p>Another user running WS6.1 FP 23 without the web services feature pack came up with this solution that seemed to work for them:</p><blockquote><p>Create a shared library with the following jars:<br clear="none"> jsr173_api-1.0.jar<br clear="none"> jaxp-ri-1.4.2.jar<br clear="none"> saaj-impl-1.3.2.jar<br clear="none"> wsdl4j-1.6.2.jar</p><p>Create a new parent-first classloader and have it reference the shared library you just created. Restart everything and it should work.</p></blockquote><h4 id="ApplicationServerSpecificConfigurationGuide-WebServicesFeaturePackforWebSphereInstalled">Web Ser vices Feature Pack for WebSphere Installed</h4><p>Things are way more complicated if the Web Services Feature Pack for WebSphere is installed. With this feature pack installed, it is impossible to deploy an application using CXF, because the WebSphere Web Services engine starts parsing the JAX-WS annotations of the services and tries to deploy the services.</p><p>Up to fixpack 27 (6.1.0.27) there was no possibility to disable the WebSphere Web Services engine.</p><h3 id="ApplicationServerSpecificConfigurationGuide-ForWebSphere6.1.0.29+,V7andV8">For WebSphere 6.1.0.29+, V7 and V8</h3><p>Follow the PDF download given within this IBM developerWorks article:<a shape="rect" class="external-link" href="http://www.ibm.com/developerworks/websphere/library/techarticles/1001_thaker/1001_thaker.html" rel="nofollow">http://www.ibm.com/developerworks/websphere/library/techarticles/1001_thaker/1001_thaker.html</a></p><p>As described in the PDF, you'll need to change the Classloader order to "Clas ses loaded with local class loader first (parent last)" and to disable the IBM web services engine, either for the JVM as a whole or for the particular module.</p><p>To disable for the whole JVM, set the JVM property</p><p>com.ibm.websphere.webservices.DisableIBMJAXWSEngine=true</p><p>or to disable the engine just for a specific module by adding</p><p>DisableIBMJAXWSEngine: true</p><p>to WAR/META-INF/MANIFEST.MF.</p><p>Another issue that comes up with certain versions of WebSphere is an incompatibility with the SAAJ implementation. It is recommended to use the org.apache.servicemix.bundles.saaj-impl-1.3.18_1.jar saaj impl available from <a shape="rect" class="external-link" href="http://repo1.maven.org/maven2/org/apache/servicemix/bundles/org.apache.servicemix.bundles.saaj-impl/1.3.18_1/" rel="nofollow">http://repo1.maven.org/maven2/org/apache/servicemix/bundles/org.apache.servicemix.bundles.saaj-impl/1.3.18_1/</a> as that contains a recent version of SAAJ along with it's required D OM implementation which will work on the IBM JDK.</p><p>One user has reported that he was able to get CXF working on WebSphere with a minimal set of CXF jars by following the above<br clear="none"> procedures and using the list of jars:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">FastInfoset-1.2.9.jar +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;">FastInfoset-1.2.9.jar aopalliance-1.0.jar commons-logging-1.1.1.jar cxf-2.5.2.jar @@ -203,7 +204,7 @@ wsdl4j-1.6.2.jar xmlschema-core-2.0.1.jar </pre> </div></div><h2 id="ApplicationServerSpecificConfigurationGuide-Glassfish">Glassfish</h2><p>CXF Interceptors will not work in Glassfish without this sun-web.xml file to configure the classloader. By default, Glassfish will use Metro for JAX-WS services so the classloader needs to be configured to allow CXF libraries to provide JAX-WS services. The following sun-web.xml xml source was added to /WEB-INF to resolve this issue:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"><?xml version="1.0" encoding="UTF-8"?> +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;"><?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sun-web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Application Server 9.0 Servlet 2.5//EN' 'http://www.sun.com/software/appserver/dtds/sun-web-app_2_5-0.dtd'> @@ -212,7 +213,7 @@ Application Server 9.0 Servlet 2.5//EN' </sun-web-app> </pre> </div></div><h2 id="ApplicationServerSpecificConfigurationGuide-OC4J">OC4J</h2><div class="confluence-information-macro confluence-information-macro-note"><span class="aui-icon aui-icon-small aui-iconfont-warning confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>This guide requires heavy customization of the OC4J configuration. Bear in mind that some of steps presented below are either undocumented or unsupported. We strongly advice you to perform those steps in a separate container, dedicated exclusively for CXF.</p></div></div><div class="confluence-information-macro confluence-information-macro-note"><span class="aui-icon aui-icon-small aui-iconfont-warning confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>Also see: <a shape="rect" class="external-link" href="http://chadthedeveloper.blogspot.com/2008/06/cxf-vs-oc4j-round-1.html" rel="nofollow">http://chadthedeveloper.blogspot.com/2008/06/cxf-vs-oc 4j-round-1.html</a> for other suggestions on how to configure OC4J.</p></div></div><h3 id="ApplicationServerSpecificConfigurationGuide-Disclaimer">Disclaimer</h3><p>This guide covers only 10.1.3.X.X version of OC4J. Note that OC4J 10.1.2 is not JSE 1.5 certified server. OC4J 11_g_ is <a shape="rect" class="external-link" href="http://java.sun.com/javaee/overview/compatibility.jsp" rel="nofollow">fully JEE 5.0 certified stack</a> and comes with their own JAX-WS implementation.</p><h3 id="ApplicationServerSpecificConfigurationGuide-Background">Background</h3><p>Oracle OC4J comes with highly customized XML stack by Oracle including SAX, StAX, JAXP, JAX-WS, SAAJ, WSDL and few others. All of those frameworks are Oracle proprietary implementations in the OC4J distribution. This gives Oracle really good interoperability between their products but it makes it rather hard to introduce something which needs different implementation of above APIs (like CXF).</p><div class="confluence-informati on-macro confluence-information-macro-tip"><span class="aui-icon aui-icon-small aui-iconfont-approve confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p><span class="confluence-anchor-link" id="ApplicationServerSpecificConfigurationGuide-orajaxws"></span><br clear="none"> OC4J 10.1.3 comes with <a shape="rect" class="external-link" href="http://www.oracle.com/technology/tech/java/oc4j/10131/OracleAS-NF-10131.pdf" rel="nofollow">preliminary implementation of JAX-WS (JSR-181)</a> but this implementation is somewhat limited only to top-down scenario, with very limited customization (lack of JAXB 2.0 etc.).</p></div></div><h4 id="ApplicationServerSpecificConfigurationGuide-Configurationoverview">Configuration overview</h4><p>A few components need to be customized in OC4J to allow CFX integration:</p><ul><li><a shape="rect" class="external-link" href="http://xerces.apache.org/xerces2-j/">Xerces</a></li><li>JAX-WS 2.0 APIs</li><li><a shape="rect" cl ass="external-link" href="http://sourceforge.net/projects/wsdl4j" rel="nofollow">WSDL4J</a></li></ul><p>Unfortunately, these components have to be configured in different parts of OC4J.</p><h4 id="ApplicationServerSpecificConfigurationGuide-OracleOC4Jclassloading">Oracle OC4J class loading</h4><p>A key part of successfully integrating CXF into OC4J is to understand how class loaders work in OC4J. When starting OC4J there are generally three stages where customization could occur:</p><ol><li>Virtual Machine boot</li><li>OC4J boot</li><li>CXF (application) boot</li></ol><p>Customizing in the last step is <a shape="rect" class="external-link" href="http://download-uk.oracle.com/docs/cd/B25221_03/web.1013/b14433/classload.htm" rel="nofollow">quite easy to achieve</a> - basically OC4J has quite powerful class loader and an easy customization console. Unfortunately there are some components that could not be configured this way. They are configured during OC4J boot. Unfortunately one of t his is OC4J webservices stack (located in <code>$ORACLE_HOME/webservices/lib</code>).</p><h4 id="ApplicationServerSpecificConfigurationGuide-Neededcomponents">Needed components</h4><p>Before start please download <a shape="rect" href="http://cxf.apache.org/download.html">Apache CXF 2.0.6 or better</a> and <a shape="rect" class="external-link" href="http://archive.apache.org/dist/xml/xerces-j/">Xerces 2.8.1</a></p><h4 id="ApplicationServerSpecificConfigurationGuide-Preparingstax-api">Preparing stax-api</h4><p>If you use a version of CXF that includes stax-api.jar that in turn include the QName class, remove <code>javax.xml.namespace.QName</code> from the stax-api shipped with CXF. Oracle apparently has it already in <code>$ORACLE_HOME/j2ee/home/lib/jax-qname-namespace.jar</code>.</p><p><span class="confluence-anchor-link" id="ApplicationServerSpecificConfigurationGuide-xerces"></span></p><h4 id="ApplicationServerSpecificConfigurationGuide-ReplacetheOracleXMLparserwithXerces">Replace the Oracle XML parser with Xerces</h4><p>The basic idea behind how to do this is described in detail <a shape="rect" class="external-link" href="http://www.oracle.com/technology/tech/java/oc4j/1013/how_to/how-to-swapxmlparser/doc/readme.html" rel="nofollow">here</a></p><p>Create OC4J shared library named <code>cxf.foundation</code> and fill it with:</p><ul><li>xercesImpl.jar (from Xerces distribution)</li><li>xml-apis-1.2.02.jar (from CXF-distribution)</li><li>xalan-2.7.0.jar (ditto)</li><li><p>geronimo-ws-metadata_2.0_spec-1.1.1.jar (ditto)</p><div class="confluence-information-macro confluence-information-macro-note"><span class="aui-icon aui-icon-small aui-iconfont-warning confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>When building Your application <strong>DO NOT INCLUDE THOSE COMPONENTS</strong> again.</p></div></div></li></ul><h4 id="ApplicationServerSpecificConfigurationGuide-GetridofOC4JJAX-WSlibraries">Get rid of OC4J JAX-WS libr aries</h4><p>OC4J has <a shape="rect" href="application-server-specific-configuration-guide.html">preliminary support for JAX-WS</a>, unfortunately this means that during OC4J boot it loads <em>outdated</em> JAX-WS APIs and implementation by Oracle. This occurs even before shared libraries comes into action, at a very early stage of OC4J boot. Boot-time OC4J libraries are configured in <code>boot.xml</code> file in <code>$ORACLE_HOME/j2ee/home/oc4j.jar</code> bootstrap jar. To get rid of this:</p><ul><li>unpack <code>oc4j.jar</code> file</li><li>locate <code>META-INF/boot.xml</code> file and edit it</li><li>find section</li></ul><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"><!-- WS jax-rpc --> +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;"><!-- WS jax-rpc --> <code-source path="${oracle.home}/webservices/lib/jaxr-api.jar"/> <code-source path="${oracle.home}/webservices/lib/jaxrpc-api.jar"/> <code-source path="${oracle.home}/webservices/lib/jaxb-api.jar"/> @@ -220,9 +221,9 @@ Application Server 9.0 Servlet 2.5//EN' <code-source path="${oracle.home}/webservices/lib/jws-api.jar" if="java.specification.version == /1\.[5-6]/"/> </pre> </div></div><p>and comment out line which include <code>jws-api.jar</code> entry, like below</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"><!-- <code-source path="${oracle.home}/webservices/lib/jws-api.jar" if="java.specification.version == /1\.[5-6]/"/> --> +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;"><!-- <code-source path="${oracle.home}/webservices/lib/jws-api.jar" if="java.specification.version == /1\.[5-6]/"/> --> </pre> -</div></div><ul><li>repackage <code>oc4j.jar</code> (don't forget about <code>MANIFEST.MF</code> - use <code>jar -m META-INF/MANIFEST.MF</code>)</li></ul><p><span class="confluence-anchor-link" id="ApplicationServerSpecificConfigurationGuide-wsdl4j"></span></p><h4 id="ApplicationServerSpecificConfigurationGuide-swappingOraclewsdl.jarwithwsdl4j.jarandjaxb.jarAPIwithjaxb-api-2.0.jar">swapping Oracle <code>wsdl.jar</code> with <code>wsdl4j.jar</code> and <code>jaxb.jar</code> API with <code>jaxb-api-2.0.jar</code></h4><p>Additionally Oracle provides it's own implementation of WSDL functionality which conflicts with <code>wsdl4j.jar</code>. To get rid of this add <code>-Xbootclasspath/p:"<path to wsdlj>/wsdl4j-1.6.1.jar;<path to jaxb2>/jaxb-api-2.0.jar"</code> option to JVM parametrs (either in command line running OC4J standalone or in OPMN).</p><h4 id="ApplicationServerSpecificConfigurationGuide-Deployingapplications">Deploying applications</h4><p>When deploying please fol low those steps:</p><ul><li>Edit deployment plan</li><li>Edit <code>Configure class loading</code> in the deployment plan like described <a shape="rect" class="external-link" href="http://www.oracle.com/technology/tech/java/oc4j/1013/how_to/how-to-swapxmlparser/doc/readme.html" rel="nofollow">here</a></li><li><strong>Uncheck</strong> <code><strong>oracle.xml</strong></code> library</li><li><strong>Check</strong> <code><strong>cxf.foundation</strong></code> library</li><li><strong>Uncheck</strong> <code><strong>Search Local Classes First</strong></code></li><li><p>do not include <code>xercesImpl</code>, <code>xml-apis</code>, <code>xalan</code> and <code>geronimo-ws-metadata_2.0_spec-1.1.1.jar</code> in <code>war</code> - those will be automatically loaded by by OC4J Shared Libraries class loader.</p><div class="confluence-information-macro confluence-information-macro-tip"><span class="aui-icon aui-icon-small aui-iconfont-approve confluence-information-macro-icon"></span><div class= "confluence-information-macro-body"><p>You can automate above steps by packaging You <code>war</code> into <code>ear</code> archive (even though) if it's only <code>war</code> and providing <code>orion-application.xml</code> proprietary descriptor as described <a shape="rect" class="external-link" href="http://download-west.oracle.com/docs/cd/B32110_01/web.1013/b28952/classload.htm#CIHIHDEG" rel="nofollow">here</a>. You could also provide proprietary <code>orion-web.xml</code> in Your <code>war</code> instrumenting <code>Search Local Classes First</code> attribute described above. This step is described <a shape="rect" class="external-link" href="http://www.oracle.com/technology/tech/java/oc4j/htdocs/how-to-servlet-sysclassloader.html" rel="nofollow">here</a>.</p></div></div></li></ul><h4 id="ApplicationServerSpecificConfigurationGuide-OracleFAQ">Oracle FAQ</h4><h5 id="ApplicationServerSpecificConfigurationGuide-I'mgettingjava.lang.ClassCastException:org.apache.xerces.jaxp.DocumentB uilderFactoryImpl">I'm getting <code>java.lang.ClassCastException: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl</code></h5><p>This primarily happens when:</p><ul><li>xerces is loaded twice - by shared library class loader and application class loader</li><li>or when there is mismatch between <code>xerces</code> and <code>oracle</code> implementation of SAX API</li></ul><p>Please be sure You properly installed and enabled for Your application <code>cxf.foundation</code> shared library as described <a shape="rect" href="application-server-specific-configuration-guide.html">here</a>. If Yes please be sure that You didn't include xercesImpl.jar in Your <code>war</code>. If You still have problems please <a shape="rect" class="external-link" href="http://java.sun.com/javase/6/docs/api/javax/xml/parsers/SAXParserFactory.html#newInstance()" rel="nofollow">see how You can debug JAXP problems</a> - be sure that <code>org.apache.xerces.jaxp.DocumentBuilderFactoryImpl</code> are instantia ted from within <code>JAXP</code> and not <code>oracle.xml.parser.v2.DocumentBuilder</code>.</p><p><span class="confluence-anchor-link" id="ApplicationServerSpecificConfigurationGuide-f2"></span></p><h5 id="ApplicationServerSpecificConfigurationGuide-IcannotgetWSDL(gettingHTTP500accesingmyCXFserviceWSDLwithhttp://myshot/myservice?wsdl)">I cannot get WSDL (getting HTTP 500 accesing my CXF service WSDL with <a shape="rect" class="external-link" href="http://myshot/myservice?wsdl" rel="nofollow">http://myshot/myservice?wsdl</a>)</h5><p>Please be sure that <code>wsdl4j.jar</code> is loaded before <code>wsdl.jar</code> as described <a shape="rect" href="application-server-specific-configuration-guide.html">here</a></p><h5 id="ApplicationServerSpecificConfigurationGuide-I'mgettingjava.lang.NoSuchMethodException:oracle.j2ee.ws.wsdl.extensions.soap.SOAPBodyImpl.getElementType()">I'm getting <code>java.lang.NoSuchMethodException: oracle.j2ee.ws.wsdl.extensions.soap.SOAPBodyImpl.getElementTyp e()</code></h5><p><a shape="rect" href="application-server-specific-configuration-guide.html">See this</a></p><h5 id="ApplicationServerSpecificConfigurationGuide-Icannotgetittoworkstill">I cannot get it to work still</h5><p>Try something simple. Download OC4J standalone and bootstrap it from command line directly: <code>java [options] -jar oc4j.jar</code>. Enable <a shape="rect" class="external-link" href="http://java.sun.com/javase/6/docs/api/javax/xml/parsers/SAXParserFactory.html#newInstance()" rel="nofollow">SAX debugging</a>. Be sure You don't include douplicated jars in Your application like <code>xercesImpl, xalan, xml-apis and geronimo-ws-metadata_2.0_spec-1.1.1.jar</code>. Review steps above once more. It works <img class="emoticon emoticon-wink" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/wink.png" data-emoticon-name="wink" alt="(wink)"> .</p><h2 id="ApplicationServerSpecificConfigurationGuide-In tegrationwithApplicationServerFAQ">Integration with Application Server FAQ</h2><p>1.<br clear="none"> Q: I have this error: javax.xml.ws.WebServiceException: Cannot create SAAJ factory instance.<br clear="none"> A: Please make sure you have the saaj-impl-1.3.jar in the classpath and make sure your app picks up this one instead of weblogic one.</p><h2 id="ApplicationServerSpecificConfigurationGuide-Resources">Resources</h2><p><a shape="rect" class="external-link" href="http://download-uk.oracle.com/docs/cd/B25221_03/web.1013/b14433/classload.htm" rel="nofollow">Utilizing the OC4J Class Loading Framework</a><br clear="none"> <a shape="rect" class="external-link" href="http://xfire.codehaus.org/XFire+on+WebLogic+9.2" rel="nofollow">Deploy XFire in WebLogic</a><br clear="none"> <a shape="rect" class="external-link" href="http://edocs.bea.com/wls/docs92/programming/classloading.html" rel="nofollow">Understanding WebLogic ClassLoader</a><br clear="none"> <a shape="rect" class="external-li nk" href="http://www.jboss.org/wiki/Wiki.jsp?page=ClassLoadingConfiguration" rel="nofollow">JBoss Class Configuration</a><br clear="none"> <a shape="rect" class="external-link" href="http://java.sun.com/javase/6/docs/api/javax/xml/parsers/SAXParserFactory.html#newInstance()" rel="nofollow">Troubleshooting SAX</a></p></div> +</div></div><ul><li>repackage <code>oc4j.jar</code> (don't forget about <code>MANIFEST.MF</code> - use <code>jar -m META-INF/MANIFEST.MF</code>)</li></ul><p><span class="confluence-anchor-link" id="ApplicationServerSpecificConfigurationGuide-wsdl4j"></span></p><h4 id="ApplicationServerSpecificConfigurationGuide-swappingOraclewsdl.jarwithwsdl4j.jarandjaxb.jarAPIwithjaxb-api-2.0.jar">swapping Oracle <code>wsdl.jar</code> with <code>wsdl4j.jar</code> and <code>jaxb.jar</code> API with <code>jaxb-api-2.0.jar</code></h4><p>Additionally Oracle provides it's own implementation of WSDL functionality which conflicts with <code>wsdl4j.jar</code>. To get rid of this add <code>-Xbootclasspath/p:"<path to wsdlj>/wsdl4j-1.6.1.jar;<path to jaxb2>/jaxb-api-2.0.jar"</code> option to JVM parametrs (either in command line running OC4J standalone or in OPMN).</p><h4 id="ApplicationServerSpecificConfigurationGuide-Deployingapplications">Deploying applications</h4><p>When deploying please fol low those steps:</p><ul><li>Edit deployment plan</li><li>Edit <code>Configure class loading</code> in the deployment plan like described <a shape="rect" class="external-link" href="http://www.oracle.com/technology/tech/java/oc4j/1013/how_to/how-to-swapxmlparser/doc/readme.html" rel="nofollow">here</a></li><li><strong>Uncheck</strong> <code><strong>oracle.xml</strong></code> library</li><li><strong>Check</strong> <code><strong>cxf.foundation</strong></code> library</li><li><strong>Uncheck</strong> <code><strong>Search Local Classes First</strong></code></li><li><p>do not include <code>xercesImpl</code>, <code>xml-apis</code>, <code>xalan</code> and <code>geronimo-ws-metadata_2.0_spec-1.1.1.jar</code> in <code>war</code> - those will be automatically loaded by by OC4J Shared Libraries class loader.</p><div class="confluence-information-macro confluence-information-macro-tip"><span class="aui-icon aui-icon-small aui-iconfont-approve confluence-information-macro-icon"></span><div class= "confluence-information-macro-body"><p>You can automate above steps by packaging You <code>war</code> into <code>ear</code> archive (even though) if it's only <code>war</code> and providing <code>orion-application.xml</code> proprietary descriptor as described <a shape="rect" class="external-link" href="http://download-west.oracle.com/docs/cd/B32110_01/web.1013/b28952/classload.htm#CIHIHDEG" rel="nofollow">here</a>. You could also provide proprietary <code>orion-web.xml</code> in Your <code>war</code> instrumenting <code>Search Local Classes First</code> attribute described above. This step is described <a shape="rect" class="external-link" href="http://www.oracle.com/technology/tech/java/oc4j/htdocs/how-to-servlet-sysclassloader.html" rel="nofollow">here</a>.</p></div></div></li></ul><h4 id="ApplicationServerSpecificConfigurationGuide-OracleFAQ">Oracle FAQ</h4><h5 id="ApplicationServerSpecificConfigurationGuide-I'mgettingjava.lang.ClassCastException:org.apache.xerces.jaxp.DocumentB uilderFactoryImpl">I'm getting <code>java.lang.ClassCastException: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl</code></h5><p>This primarily happens when:</p><ul><li>xerces is loaded twice - by shared library class loader and application class loader</li><li>or when there is mismatch between <code>xerces</code> and <code>oracle</code> implementation of SAX API</li></ul><p>Please be sure You properly installed and enabled for Your application <code>cxf.foundation</code> shared library as described <a shape="rect" href="application-server-specific-configuration-guide.html">here</a>. If Yes please be sure that You didn't include xercesImpl.jar in Your <code>war</code>. If You still have problems please <a shape="rect" class="external-link" href="http://java.sun.com/javase/6/docs/api/javax/xml/parsers/SAXParserFactory.html#newInstance()" rel="nofollow">see how You can debug JAXP problems</a> - be sure that <code>org.apache.xerces.jaxp.DocumentBuilderFactoryImpl</code> are instantia ted from within <code>JAXP</code> and not <code>oracle.xml.parser.v2.DocumentBuilder</code>.</p><p><span class="confluence-anchor-link" id="ApplicationServerSpecificConfigurationGuide-f2"></span></p><h5 id="ApplicationServerSpecificConfigurationGuide-IcannotgetWSDL(gettingHTTP500accesingmyCXFserviceWSDLwithhttp://myshot/myservice?wsdl)">I cannot get WSDL (getting HTTP 500 accesing my CXF service WSDL with <a shape="rect" class="external-link" href="http://myshot/myservice?wsdl" rel="nofollow">http://myshot/myservice?wsdl</a>)</h5><p>Please be sure that <code>wsdl4j.jar</code> is loaded before <code>wsdl.jar</code> as described <a shape="rect" href="application-server-specific-configuration-guide.html">here</a></p><h5 id="ApplicationServerSpecificConfigurationGuide-I'mgettingjava.lang.NoSuchMethodException:oracle.j2ee.ws.wsdl.extensions.soap.SOAPBodyImpl.getElementType()">I'm getting <code>java.lang.NoSuchMethodException: oracle.j2ee.ws.wsdl.extensions.soap.SOAPBodyImpl.getElementTyp e()</code></h5><p><a shape="rect" href="application-server-specific-configuration-guide.html">See this</a></p><h5 id="ApplicationServerSpecificConfigurationGuide-Icannotgetittoworkstill">I cannot get it to work still</h5><p>Try something simple. Download OC4J standalone and bootstrap it from command line directly: <code>java [options] -jar oc4j.jar</code>. Enable <a shape="rect" class="external-link" href="http://java.sun.com/javase/6/docs/api/javax/xml/parsers/SAXParserFactory.html#newInstance()" rel="nofollow">SAX debugging</a>. Be sure You don't include douplicated jars in Your application like <code>xercesImpl, xalan, xml-apis and geronimo-ws-metadata_2.0_spec-1.1.1.jar</code>. Review steps above once more. It works <img class="emoticon emoticon-wink" src="https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/wink.png" data-emoticon-name="wink" alt="(wink)"> .</p><h2 id="ApplicationServerSpecificConfigurationGuide-In tegrationwithApplicationServerFAQ">Integration with Application Server FAQ</h2><p>1.<br clear="none"> Q: I have this error: javax.xml.ws.WebServiceException: Cannot create SAAJ factory instance.<br clear="none"> A: Please make sure you have the saaj-impl-1.3.jar in the classpath and make sure your app picks up this one instead of weblogic one.</p><h2 id="ApplicationServerSpecificConfigurationGuide-Resources">Resources</h2><p><a shape="rect" class="external-link" href="http://download-uk.oracle.com/docs/cd/B25221_03/web.1013/b14433/classload.htm" rel="nofollow">Utilizing the OC4J Class Loading Framework</a><br clear="none"> <a shape="rect" class="external-link" href="http://xfire.codehaus.org/XFire+on+WebLogic+9.2" rel="nofollow">Deploy XFire in WebLogic</a><br clear="none"> <a shape="rect" class="external-link" href="http://edocs.bea.com/wls/docs92/programming/classloading.html" rel="nofollow">Understanding WebLogic ClassLoader</a><br clear="none"> <a shape="rect" class="external-li nk" href="http://www.jboss.org/wiki/Wiki.jsp?page=ClassLoadingConfiguration" rel="nofollow">JBoss Class Configuration</a><br clear="none"> <a shape="rect" class="external-link" href="http://java.sun.com/javase/6/docs/api/javax/xml/parsers/SAXParserFactory.html#newInstance()" rel="nofollow">Troubleshooting SAX</a></p></div> </div> <!-- Content --> </td> Modified: websites/production/cxf/content/docs/architectural-decisions.html ============================================================================== --- websites/production/cxf/content/docs/architectural-decisions.html (original) +++ websites/production/cxf/content/docs/architectural-decisions.html Tue Sep 12 19:09:41 2017 @@ -110,11 +110,11 @@ Apache CXF -- Architectural Decisions <div id="ConfluenceContent"><p><strong>work in progresss</strong></p> <style type="text/css">/*<![CDATA[*/ -div.rbtoc1435780149407 {padding: 0px;} -div.rbtoc1435780149407 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1435780149407 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1505242916629 {padding: 0px;} +div.rbtoc1505242916629 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1505242916629 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style><div class="toc-macro rbtoc1435780149407"> +/*]]>*/</style><div class="toc-macro rbtoc1505242916629"> <ul class="toc-indentation"><li><a shape="rect" href="#ArchitecturalDecisions-DecisionProcess">Decision Process</a></li><li><a shape="rect" href="#ArchitecturalDecisions-Howtodocumentarchitecturaldecisions">How to document architectural decisions</a> <ul class="toc-indentation"><li><a shape="rect" href="#ArchitecturalDecisions-Template:Shortonelinesummaryofthedecision">Template: Short one line summary of the decision</a> <ul class="toc-indentation"><li><a shape="rect" href="#ArchitecturalDecisions-Reasonsforthedecision">Reasons for the decision</a></li><li><a shape="rect" href="#ArchitecturalDecisions-Alternatives">Alternatives</a> Modified: websites/production/cxf/content/docs/asynchronous-client-http-transport.html ============================================================================== --- websites/production/cxf/content/docs/asynchronous-client-http-transport.html (original) +++ websites/production/cxf/content/docs/asynchronous-client-http-transport.html Tue Sep 12 19:09:41 2017 @@ -117,14 +117,14 @@ Apache CXF -- Asynchronous Client HTTP T <!-- Content --> <div class="wiki-content"> <div id="ConfluenceContent"><h1 id="AsynchronousClientHTTPTransport-AsynchronousClientHTTPTransport">Asynchronous Client HTTP Transport</h1><p>By default, CXF uses a transport based on the in-JDK HttpURLConnection object to perform HTTP requests. The HttpURLConnection object uses a blocking model for all IO operations which requires a per-thread execution model. From a pure performance standpoint, this model generally performs very well, but it does have problems scaling when many requests need to be executed simultaneously.</p><p>Also, the JAX-WS specification allows for generation of asynchronous methods on generated proxies as well as using asynchronous methods on the Dispatch objects. These methods can take an AsyncHandler object and return a polling Future object so applications do not have to wait for the response. With the HttpURLConnection based transport, CXF was forced to consume a background thread for each outstanding request.</p><p>CXF also has an HTTP client transport that is based on the <a shape="rect" class="external-link" href="http://hc.apache.org/httpcomponents-asyncclient-dev/index.html">Apache HTTP Components HttpAsyncClient</a> library. Its Maven artifactId is <span style="line-height: 1.4285715;">cxf-rt-transports-http-hc.</span><span style="line-height: 1.4285715;"> The HttpAsyncClient library uses a non-blocking IO model. This allows many more requests to be outstanding without consuming extra background threads. It also allows greater control over things like Keep-Alive handling which is very difficult or impossible with the HttpURLConnection based transport. However, the non-blocking model does not perform quite as well as the blocking model for pure synchronous request/response transactions.</span></p><p>By default, if the cxf-rt-transports-http-hc module is found on the classpath, CXF will use the HttpAsyncClient based implementation for any Async calls, but will continue to use the HttpURLConnection based transport for synchronous calls. This allows a good balance of performance for the common synchronous cases with scalability for the asynchronous cases. However, using a contextual property of "use.async.http.conduit" and set to true/false, you can control whether the async or blocking version is used. If "true", the HttpAsyncClient will be used even for synchronous calls, if "false", asynchronous calls will rely on the traditional method of using HTTPURLConnection along with a work queue to mimic the asynchronocity.  And if TLSClientParameters sets an SSLSocketFactory,  as SocketFactory class and SocketFactory#createSocket methods in particular are inherently blocking and sockets instantiated in such a way cannot be used for asynchronous, so this lead to use the HttpURLConnection based transport.</p><p>Another reason to use the asynchronous transport is to use HTTP methods that HttpURLConnection does not support. For example, the github.com REST API specifies the use of PATCH for some cases, but HttpURLConnection rejects PATCH.</p><h3 id="AsynchronousClientHTTPTransport-UsingtheHTTPComponentsTransportfromJavaCode">Using the HTTP Components Transport from Java Code</h3><p>To force global use of the HTTP Components transport, you can set a bus-level property:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;"> Bus bus = BusFactory.getDefaultBus(); +<pre class="brush: java; gutter: false; theme: Confluence" style="font-size:12px;"> Bus bus = BusFactory.getDefaultBus(); // insist on the async connector to use PATCH. bus.setProperty(AsyncHTTPConduit.USE_ASYNC, Boolean.TRUE);</pre> </div></div><pre><span style="font-size: 16.0px;line-height: 1.5625;font-family: Arial , sans-serif;">Setting Credentials</span></pre><p>The "normal" CXF/JAX-WS method of setting user credentials via the BindingProvider.USERNAME_PROPERTY/PASSWORD_PROPERTY will work with the Async transport as well. However, the HttpAsyncClient library does have some additional capabilities around NTLM that can be leveraged. In order to use that, you need to:</p><ul><li>Turn on the AutoRedirect and turn off the Chunking for the Conduit. This will allow CXF to cache the response in a manner that will allow the transport to keep resending the request during the authentication negotiation.</li></ul><ul><li><p>Force the use of the Async transport even for synchronous calls</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">bp.getRequestContext().put("use.async.http.conduit", Boolean.TRUE); +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;">bp.getRequestContext().put("use.async.http.conduit", Boolean.TRUE); </pre> </div></div></li></ul><ul><li><p>Set the property "org.apache.http.auth.Credentials" to an instance of the Credentials. For example:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">Credentials creds = new NTCredentials("username", "pswd", null, "domain"); +<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;">Credentials creds = new NTCredentials("username", "pswd", null, "domain"); bp.getRequestContext().put(Credentials.class.getName(), creds); </pre> </div></div></li></ul><h3 id="AsynchronousClientHTTPTransport-Configuration">Configuration</h3><p>The Asynchronous HTTP Transport has several options that can set using Bus properties or via the OSGi configuration services to control various aspects of the underlying Apache HTTP Components HttpAsyncClient objects.</p><p>Settings related to the underlying TCP socket (see <a shape="rect" class="external-link" href="http://docs.oracle.com/javase/7/docs/api/java/net/Socket.html" rel="nofollow">java.net.Socket</a> for a definition of these values):</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.TCP_NODELAY (Default true)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.SO_KEEPALIVE</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.SO_LINGER</p></td></tr><tr><td colspan=" 1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.SO_TIMEOUT</p></td></tr></tbody></table></div><p>Settings related to Keep-Alive connection management:</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.CONNECTION_TTL</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Maximum time a connection to live(from creation to expiry)<span> </span>. Default is 60000.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.MAX_CONNECTIONS</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><span>Maximum number of connections opened in total. Default is 5000.</span></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.MAX_PER_HOST_CONNECTIONS</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><span>Maximum number of connections opened per host. Default is 1000.</span></p></td></tr></tbody></table></div><p>Settings related to Apache HttpAsyncClient threads and selectors:</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.ioThreadCount</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Number of threads HttpAsyncClient uses to process IO events. Default is "-1" which means one thread per CPU core.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.interestOpQueued</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>true/false for whether the interest ops are queues or process directly.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.selectInterval</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Default 1000 ms. How often the selector thread wakes up if there are no events to process additional things like queue expirations.</p></td></tr></tbody></table></div><p>Setting to control which conduit is used</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.usePolicy</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>ALWAYS, ASYNC_ONLY, NEVER.</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Similar in meaning to the "use.async.http.conduit" context property described above. Whether to use the HttpAsyncClient: ALWAYS for both synchronous and asynchronous calls, ASYNC_ONLY (default) for asynchronous calls only, NEVER will use HTTPURLConnection for both types of calls.</p></td></tr></tbody></table></div></div>