cxf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dk...@apache.org
Subject svn commit: r1018111 [6/33] - in /websites/production/cxf/content: ./ cache/ docs/
Date Wed, 13 Sep 2017 15:05:57 GMT
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 Wed Sep 13 15:05:52 2017
@@ -32,9 +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/shBrushXml.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();
@@ -119,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.rbtoc1505311208404 {padding: 0px;}
-div.rbtoc1505311208404 ul {list-style: disc;margin-left: 0px;padding-left: 20px;}
-div.rbtoc1505311208404 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1505314843242 {padding: 0px;}
+div.rbtoc1505314843242 ul {list-style: disc;margin-left: 0px;padding-left: 20px;}
+div.rbtoc1505314843242 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1505311208404">
+/*]]>*/</style></p><div class="toc-macro rbtoc1505314843242">
 <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>
@@ -140,7 +140,7 @@ div.rbtoc1505311208404 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: bash; gutter: false; theme: Confluence" style="font-size:12px;">&lt;jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2"&gt;
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">&lt;jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2"&gt;
     &lt;deployment&gt;
         &lt;exclude-subsystems&gt;
             &lt;subsystem name="webservices" /&gt;
@@ -149,7 +149,7 @@ div.rbtoc1505311208404 li {margin-left:
 &lt;/jboss-deployment-structure&gt;
 </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&#160;<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>&#160;demo.</p><p>JAX-RS: &#160;see&#160;<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>&#160;and&#160;<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>&#160;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: bash; gutter: false; theme: Confluence" style="font-size:12px;">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
 &lt;!DOCTYPE application PUBLIC
 		"-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN"
 		"http://java.sun.com/dtd/application_1_3.dtd"&gt;
@@ -164,7 +164,7 @@ div.rbtoc1505311208404 li {margin-left:
 &lt;/application&gt;
 </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: bash; gutter: false; theme: Confluence" style="font-size:12px;">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
 &lt;weblogic-application xmlns="http://www.bea.com/ns/weblogic/90"&gt;
 	&lt;application-param&gt;
 		&lt;param-name&gt;webapp.encoding.default&lt;/param-name&gt;
@@ -176,7 +176,7 @@ div.rbtoc1505311208404 li {margin-left:
 &lt;/weblogic-application&gt;
 </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&lt;6.1.0.29">For WebSphere Versions &lt; 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 &gt; 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 &gt; [your server name]</strong> <strong>&gt; Java and Process Management &gt; Class loader &gt
 ; 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: bash; gutter: false; theme: Confluence" style="font-size:12px;">FastInfoset-1.2.9.jar
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">FastInfoset-1.2.9.jar
 aopalliance-1.0.jar
 commons-logging-1.1.1.jar
 cxf-2.5.2.jar
@@ -204,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: bash; gutter: false; theme: Confluence" style="font-size:12px;">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
 &lt;!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'&gt;
@@ -213,7 +213,7 @@ Application Server 9.0 Servlet 2.5//EN'
 &lt;/sun-web-app&gt;
 </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: bash; gutter: false; theme: Confluence" style="font-size:12px;">&lt;!-- WS jax-rpc --&gt;
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">&lt;!-- WS jax-rpc --&gt;
         &lt;code-source path="${oracle.home}/webservices/lib/jaxr-api.jar"/&gt;
         &lt;code-source path="${oracle.home}/webservices/lib/jaxrpc-api.jar"/&gt;
         &lt;code-source path="${oracle.home}/webservices/lib/jaxb-api.jar"/&gt;
@@ -221,7 +221,7 @@ Application Server 9.0 Servlet 2.5//EN'
         &lt;code-source path="${oracle.home}/webservices/lib/jws-api.jar" if="java.specification.version == /1\.[5-6]/"/&gt;
 </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: bash; gutter: false; theme: Confluence" style="font-size:12px;">&lt;!-- &lt;code-source path="${oracle.home}/webservices/lib/jws-api.jar" if="java.specification.version == /1\.[5-6]/"/&gt; --&gt;
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">&lt;!-- &lt;code-source path="${oracle.home}/webservices/lib/jws-api.jar" if="java.specification.version == /1\.[5-6]/"/&gt; --&gt;
 </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:"&lt;path to wsdlj&gt;/wsdl4j-1.6.1.jar;&lt;path to jaxb2&gt;/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>

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 Wed Sep 13 15:05:52 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.rbtoc1505311214236 {padding: 0px;}
-div.rbtoc1505311214236 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1505311214236 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1505314845706 {padding: 0px;}
+div.rbtoc1505314845706 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1505314845706 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1505311214236">
+/*]]>*/</style><div class="toc-macro rbtoc1505314845706">
 <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 Wed Sep 13 15:05:52 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&#160;<span style="line-height: 1.4285715;">cxf-rt-transports-http-hc.</span><span style="line-height: 1.4285715;">&#160;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.&#160; And if TLSClientParameters sets an SSLSocketFactory,&#160; 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: Confluence" style="font-size:12px;"> Bus bus = BusFactory.getDefaultBus();
+<pre class="brush: java; gutter: false; theme: Default" 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: bash; gutter: false; theme: Confluence" style="font-size:12px;">bp.getRequestContext().put("use.async.http.conduit", Boolean.TRUE);
+<pre class="brush: java; gutter: false; theme: Default" 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: bash; gutter: false; theme: Confluence" style="font-size:12px;">Credentials creds = new NTCredentials("username", "pswd", null, "domain");
+<pre class="brush: java; gutter: false; theme: Default" 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>&#160;</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>

Modified: websites/production/cxf/content/docs/atom-logging.html
==============================================================================
--- websites/production/cxf/content/docs/atom-logging.html (original)
+++ websites/production/cxf/content/docs/atom-logging.html Wed Sep 13 15:05:52 2017
@@ -32,9 +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/shBrushXml.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();
@@ -119,13 +119,13 @@ Apache CXF -- ATOM Logging
            <!-- Content -->
            <div class="wiki-content">
 <div id="ConfluenceContent"><p><strong>This feature is available since CXF 2.3.0, as part of the cxf-rt-management-web component</strong></p><p>CXF supports collecting log events, converting them to <a shape="rect" class="external-link" href="http://tools.ietf.org/html/rfc4287" rel="nofollow">ATOM Syndication Format</a> and either pushing them to the Atom-aware consumers or making them available for polling. Logging is based on a custom <code>java.util.logging</code> (JUL) handler that can be registered with loggers extending today's publishing protocols.</p><p><strong>CXF JAXRS and JAXWS endpoints</strong> can avail of this feature.</p><h2 id="ATOMLogging-PushStyle">Push Style</h2><p>Push-style handler enqueues log records as they are published from loggers. After the queue size exceeds configurable "batch size", processing of collection of these records (in size of batch size) is triggered. Batch of log events is transformed by converter to ATOM element and then it is pushed out b
 y deliverer to client. Both converter and deliverer are configurable units that allow to change transformation and transportation strategies. Next to predefined own custom implementations can be used when necessary &#8211; see examples. Batches are processed sequentially to allow client side to recreate stream of events.</p><p><strong>Limitations:</strong> Reliability is not supported out of the box, however there is predefined retrying delivery strategy. Persistence is also not supported, any enqueued and undelivered log events are lost on shutdown. Definitions of delivery endpoints is static, subscription of callback URIs is not yet supported.</p><h3 id="ATOMLogging-Springconfiguration">Spring configuration</h3><p>In simplest case pushing ATOM Feeds can be declared this way:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;">   &lt;bean class="org.apache.cxf.management.web.logging.atom.AtomPushBean" init-method="init"&gt;
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">   &lt;bean class="org.apache.cxf.management.web.logging.atom.AtomPushBean" init-method="init"&gt;
        &lt;property name="url" value="http://somewhere.com/foo/bar"/&gt;
        &lt;property name="level" value="ALL" /&gt;
    &lt;/bean&gt;
 </pre>
 </div></div><p>Spring bean creates ATOM push handler and registers it with root logger for all log levels. This setup leads to logging everything CXF, Spring and others included. Since batch size is not specified default value of one is used - each event is packed up as single feed pushed out to specified URL. Default conversion strategy and default WebClient-based deliver are used.</p><p>More complex example shows how to specify non-root logger and define batch size:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;">   &lt;bean class="org.apache.cxf.management.web.logging.atom.AtomPushBean" init-method="init"&gt;
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">   &lt;bean class="org.apache.cxf.management.web.logging.atom.AtomPushBean" init-method="init"&gt;
        &lt;property name="url" value="http://somewhere.com/foo/bar"/&gt;
        &lt;property name="logger" value="org.apache.cxf.jaxrs" /&gt;
        &lt;property name="level" value="INFO" /&gt;
@@ -133,7 +133,7 @@ Apache CXF -- ATOM Logging
    &lt;/bean&gt;
 </pre>
 </div></div><p>To push to client events generated by different loggers on different levels, "loggers" property must be used instead of pair "logger" and "level":</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;">   &lt;bean class="org.apache.cxf.jaxrs.management.web.atom.AtomPushBean" init-method="init"&gt;
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">   &lt;bean class="org.apache.cxf.jaxrs.management.web.atom.AtomPushBean" init-method="init"&gt;
        &lt;property name="url" value="http://somewhere.com/foo/bar"/&gt;
        &lt;property name="loggers" value="
            org.apache.cxf:DEBUG,
@@ -143,7 +143,7 @@ Apache CXF -- ATOM Logging
    &lt;/bean&gt;
 </pre>
 </div></div><p>In example above, second logger does not have specified level, in such case default level of "INFO" is used.</p><p>In all above cases, when first delivery fails engine of ATOM push handler is shutdown and no events will be processed and pushed until configuration reload. To avoid this frequent case, retrial can be enabled:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;">   &lt;bean class="org.apache.cxf.management.web.logging.atom.AtomPushBean" init-method="init"&gt;
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">   &lt;bean class="org.apache.cxf.management.web.logging.atom.AtomPushBean" init-method="init"&gt;
        &lt;property name="url" value="http://somewhere.com/foo/bar"/&gt;
        &lt;property name="logger" value="org.apache.cxf.jaxrs" /&gt;
        &lt;property name="level" value="INFO" /&gt;
@@ -153,7 +153,7 @@ Apache CXF -- ATOM Logging
    &lt;/bean&gt;
 </pre>
 </div></div><p>In this case for 5 minutes ("retryTimeout") after delivery failure there will be 1 minute pause ("retryPauseTime") repeated every time with same value ("retryPause" as "linear"). Instead of same pause time, "exponential" value of "retryPause" can be used - each next time pause time doubles. When timeout value is set to 0 retrying is infinite. In case of invalid or missing values defaults are used: for pause time 30 seconds and for timeout 0 (infinite). Instead of same pause time, "exponential" value of "retryPauseType" can be used - each next time pause time doubles. When timeout value is set to 0 retrying is infinite. In case of invalid or missing values defaults are used: for pause time 30 seconds and for timeout 0 (infinite).</p><p>Ultimate control is given by "converter" and "deliverer" properties. Either beans of predefined or custom classes can be used (see "Programming syle" chapter for more details). Example below shows custom class using different transport p
 rotocol than default:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;">   &lt;bean id="soapDeliverer" ...
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">   &lt;bean id="soapDeliverer" ...
    ...
    &lt;bean class="org.apache.cxf.management.web.logging.atom.AtomPushBean" init-method="init"&gt;
        &lt;property name="deliverer"&gt;
@@ -163,7 +163,7 @@ Apache CXF -- ATOM Logging
    &lt;/bean&gt;
 </pre>
 </div></div><p>Note that specifying custom deliverer cause ignoring "url" and "retryXxx" because underneath configuration replaces employed tandem of RetryingDeliverer and WebClientDeliverer with provided one.</p><p>When ATOM feeds must be delivered to more than one endpoint and additionally each endpoint is fed by different loggers simply use multiple ATOM push beans in Spring config:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;">   &lt;bean id="atom1" class="org.apache.cxf.management.web.logging.atom.AtomPushBean" init-method="init"&gt;
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">   &lt;bean id="atom1" class="org.apache.cxf.management.web.logging.atom.AtomPushBean" init-method="init"&gt;
        &lt;property name="url" value="http://someplace.com/foo/bar"/&gt;
        ...
    &lt;/bean&gt;
@@ -174,7 +174,7 @@ Apache CXF -- ATOM Logging
    ....
 </pre>
 </div></div><h3 id="ATOMLogging-Propertiesfile">Properties file</h3><p>When CXF is used either without Spring or logging is configured with properties file, support for this type of configuration becomes handy. ATOM push handler supports "simple configuration" with properties file; simple means aligned to expressiveness of JUL configuration that is limited to cases, where each type of handler can be used only once and registered with root logger.</p><p>Set of properties is very similar to Spring configuration with following exceptions:</p><ul><li>Properties specify classes of custom deliverers and converters, instead of instances.</li><li>Custom deliverer must have public constructor with the only String parameters; created instance will have passed URL of client.</li><li>Multiple client endpoints is not supported out of the box (cannot instantiate multiple handlers as in Spring)</li></ul><p>Example:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent p
 anelContent pdl">
-<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;"> handlers = org.apache.cxf.management.web.logging.atom.AtomPushHandler, java.util.logging.ConsoleHandler
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;"> handlers = org.apache.cxf.management.web.logging.atom.AtomPushHandler, java.util.logging.ConsoleHandler
  .level = INFO
  ...
  org.apache.cxf.jaxrs.ext.management.web.AtomPushHandler.url = http://localhost:9080
@@ -187,7 +187,7 @@ Apache CXF -- ATOM Logging
  ...
 </pre>
 </div></div><h3 id="ATOMLogging-Programmingstyle">Programming style</h3><p>In most complex cases direct programming using <code><a shape="rect" href="http://cxf.apache.org/javadoc/latest/org/apache/cxf/management/web/logging/atom/package-summary.html">org.apache.cxf.jaxrs.ext.logging.atom</a></code> package may be necessary. In this case AtomPushHandler class is main artifact and Deliverer and Converter interfaces and their implementations are necessary components.</p><p>Following example:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;">    Deliverer d = new WebClientDeliverer("http://somewhere.com/foo/bar");
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">    Deliverer d = new WebClientDeliverer("http://somewhere.com/foo/bar");
     d = new RetryingDeliverer(d, 300, 60, true);
     Converter c = new SingleEntryContentConverter();
     AtomPushHandler h = new AtomPushHandler(1, c, d);    
@@ -196,7 +196,7 @@ Apache CXF -- ATOM Logging
     l.addHandler(h);
 </pre>
 </div></div><p>is equivalent to Spring configuration:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;">   &lt;bean class="org.apache.cxf.management.web.logging.atom.AtomPushBean" init-method="init"&gt;
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">   &lt;bean class="org.apache.cxf.management.web.logging.atom.AtomPushBean" init-method="init"&gt;
        &lt;property name="url" value="http://somewhere.com/foo/bar"/&gt;
        &lt;property name="logger" value="org.apache.cxf.jaxrs" /&gt;
        &lt;property name="level" value="INFO" /&gt;
@@ -206,7 +206,7 @@ Apache CXF -- ATOM Logging
    &lt;/bean&gt;
 </pre>
 </div></div><h2 id="ATOMLogging-PollStyle">Poll Style</h2><p><a shape="rect" class="external-link" href="http://svn.apache.org/repos/asf/cxf/trunk/rt/management-web/src/main/java/org/apache/cxf/management/web/logging/atom/AtomPullServer.java">AtomPullServer</a> acts as an Atom feed endpoint and makes all log events it has accumulated or read from some external storage available for polling.</p><p>Log events are made available in pages, that is a feed instance will list up to a configurable maximum number of entries and will also include atom links of types 'prev', 'next', 'first' and 'last', thus making it possible to browse through all the log records.</p><h3 id="ATOMLogging-Springconfiguration.1">Spring configuration</h3><p>When configuring AtomPullServer endpoints, one can set the 'loggers' property the same way as it is done for AtomPushBeans, for example :</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;">   &lt;bean class="org.apache.cxf.management.web.logging.atom.AtomPullServer" init-method="init"&gt;
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">   &lt;bean class="org.apache.cxf.management.web.logging.atom.AtomPullServer" init-method="init"&gt;
        &lt;property name="loggers" value="
            org.apache.cxf:DEBUG,
            org.apache.cxf.jaxrs,
@@ -216,7 +216,7 @@ Apache CXF -- ATOM Logging
    &lt;/bean&gt;
 </pre>
 </div></div><p>In addition to the 'loggers' property, a 'pageSize' property limiting a number of entries per page to 30 is also set (default is 40).</p><p>One can have a <a shape="rect" class="external-link" href="http://svn.apache.org/repos/asf/cxf/trunk/rt/management-web/src/main/java/org/apache/cxf/management/web/logging/ReadWriteLogStorage.java">ReadWriteLogStorage</a> bean injected into AtomPushBean if the log records have to be periodically offloaded from memory and persisted across restarts :</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;">   &lt;bean id="storage" class="org.apache.cxf.systest.jaxrs.JAXRSLoggingAtomPullSpringTest$Storage"/&gt;
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">   &lt;bean id="storage" class="org.apache.cxf.systest.jaxrs.JAXRSLoggingAtomPullSpringTest$Storage"/&gt;
 
    &lt;bean class="org.apache.cxf.management.web.logging.atom.AtomPullServer" init-method="init"&gt;
        &lt;property name="loggers" value="org.apache.cxf.jaxrs" /&gt;
@@ -227,7 +227,7 @@ Apache CXF -- ATOM Logging
    &lt;/bean&gt;
 </pre>
 </div></div><p>When a number of records in memory reaches 400 (default is 500) then the records will be offloaded into a provided storage and will be read from it after the restart or when a client has requested a relevant page. If no storage is available then after an in-memory limit is reached the oldest records will be discarded, one can set a maxInMemorySize property to a large enough value if needed.</p><p>Another option is to require a given AtomPullServer to read from the external read-only storage by registering a <a shape="rect" class="external-link" href="http://svn.apache.org/repos/asf/cxf/trunk/rt/management-web/src/main/java/org/apache/cxf/management/web/logging/ReadableLogStorage.java">ReadableLogStorage</a> bean. For example, very often, the runtime is already logging to some external file, thus AtomPullServer can be asked to read from this file only with the help of ReadableLogStorage, without AtomPullServer having to catch log events too.</p><p>Once AtomPullServer h
 as been configured, it has to be registered as a service bean with the jaxrs endpoint so that Atom aware clients (blog readers, etc) can start polling it :</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;">&lt;jaxrs:server id="atomServer" address="/atom"&gt;
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">&lt;jaxrs:server id="atomServer" address="/atom"&gt;
  &lt;jaxrs:serviceBeans&gt;
    &lt;ref bean="atomPullServer"/&gt;
  &lt;/jaxrs:serviceBeans&gt;
@@ -242,7 +242,7 @@ Apache CXF -- ATOM Logging
 &lt;bean id="entry" class="org.apache.cxf.jaxrs.provider.AtomEntryProvider"/&gt;
 </pre>
 </div></div><h3 id="ATOMLogging-LinkingtoAtomendpointsfromCXFServicespage">Linking to Atom endpoints from CXF Services page</h3><p>If you would like your users to find about the Atom feeds which are collecting log events from your endpoints then AtomPullServers will need to have a CXF bus injected, as well as be told about the address of the corresponding atom feed endpoint and of the jaxrs or jaxws endpoint :</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;">&lt;bean id="atomPullServer" class="org.apache.cxf.management.web.logging.atom.AtomPullServer" init-method="init"&gt;
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">&lt;bean id="atomPullServer" class="org.apache.cxf.management.web.logging.atom.AtomPullServer" init-method="init"&gt;
    &lt;property name="loggers" value="org.apache.cxf.systest.jaxrs.JAXRSLoggingAtomPullSpringTest$Resource:ALL"/&gt;
    &lt;property name="bus"&gt;
       &lt;ref bean="cxf"/&gt;

Modified: websites/production/cxf/content/docs/bundling-cxf-into-single-jar-with-maven-shade-plugin.html
==============================================================================
--- websites/production/cxf/content/docs/bundling-cxf-into-single-jar-with-maven-shade-plugin.html (original)
+++ websites/production/cxf/content/docs/bundling-cxf-into-single-jar-with-maven-shade-plugin.html Wed Sep 13 15:05:52 2017
@@ -171,7 +171,7 @@ Apache CXF -- Bundling CXF into single j
 
     <span class="jira-issue CXF-6545"><a shape="rect" class="issue-link" href="https://issues.apache.org/jira/browse/CXF-6545?src=confmacro">CXF-6545</a></span>
 <br clear="none"><br clear="none"></li></ol><p>The fix is to use the Maven Shade Plugin's AppendingTransformer to combine all the copies of the bus-extensions.txt file present in the jars. See these examples here:</p><p><a shape="rect" class="external-link" href="https://fisheye6.atlassian.com/browse/cxf/osgi/bundle/all/pom.xml?r=12acd46e3dbe98fa1321374b09174d5876271f08#to448" rel="nofollow">https://fisheye6.atlassian.com/browse/cxf/osgi/bundle/all/pom.xml?r=12acd46e3dbe98fa1321374b09174d5876271f08#to448</a></p><p><a shape="rect" class="external-link" href="https://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html#AppendingTransformer">https://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html#AppendingTransformer</a></p><p>You can handle it with the plugin configuration for the Shade plugin e.g., like this:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom
 -width: 1px;"><b>Shade Plugin Example</b></div><div class="codeContent panelContent pdl">
-<pre class="brush: xml; gutter: true; first-line: 1; theme: Confluence" style="font-size:12px;">&lt;plugin&gt;
+<pre class="brush: xml; gutter: true; first-line: 1; theme: Default" style="font-size:12px;">&lt;plugin&gt;
 &lt;artifactId&gt;maven-shade-plugin&lt;/artifactId&gt;
 &lt;executions&gt;
 &lt;execution&gt;

Modified: websites/production/cxf/content/docs/bus-configuration.html
==============================================================================
--- websites/production/cxf/content/docs/bus-configuration.html (original)
+++ websites/production/cxf/content/docs/bus-configuration.html Wed Sep 13 15:05:52 2017
@@ -32,9 +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/shBrushXml.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();
@@ -129,7 +129,7 @@ Apache CXF -- Bus Configuration
 <p>Here, simply define a bus element in your Spring configuration file, and add child elements as required, for example:</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;">
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
 &lt;beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:cxf="http://cxf.apache.org/core"
@@ -160,7 +160,7 @@ http://www.springframework.org/schema/be
 <p>Although usually less convenient, interceptors can be added to the bus using Java code.  Given an <a shape="rect" href="http://cxf.apache.org/javadoc/latest/org/apache/cxf/jaxws/EndpointImpl.html">EndpointImpl</a> object, the bus can be accessed (and interceptors added) as follows:</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;">
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
 import javax.xml.ws.Endpoint;
 import org.apache.cxf.interceptor.LoggingInInterceptor;
 import org.apache.cxf.interceptor.LoggingOutInterceptor;

Modified: websites/production/cxf/content/docs/celtix-migration-guide.html
==============================================================================
--- websites/production/cxf/content/docs/celtix-migration-guide.html (original)
+++ websites/production/cxf/content/docs/celtix-migration-guide.html Wed Sep 13 15:05:52 2017
@@ -32,8 +32,8 @@
 <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/shBrushJava.js'></script>
 <script>
   SyntaxHighlighter.defaults['toolbar'] = false;
   SyntaxHighlighter.all();
@@ -127,7 +127,7 @@ Apache CXF -- Celtix Migration Guide
 
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;">
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
 SpringBusFactory bf = new SpringBusFactory();
     Bus bus = bf.createBus("ws_rm.xml");
     bf.setDefaultBus(bus);
@@ -135,7 +135,7 @@ SpringBusFactory bf = new SpringBusFacto
 </div></div>
 <p> Later, to get the bus, you can call:</p>
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;">
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
 Bus bus = bf.getDefaultBus();
 </pre>
 </div></div>
@@ -146,7 +146,7 @@ Bus bus = bf.getDefaultBus();
 
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: bash; gutter: false; theme: Confluence" style="font-size:12px;">
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
 HelloWorld helloWorld = helloWorldService.getPort(
                         new QName("http://www.my/wsdl/target/namespace", "SOAPOverHTTPEndpoint"),
                                     HelloWorld.class );



Mime
View raw message