cxf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dk...@apache.org
Subject svn commit: r956567 - /websites/production/cxf/content/faq.html
Date Wed, 01 Jul 2015 18:01:53 GMT
Author: dkulp
Date: Wed Jul  1 18:01:52 2015
New Revision: 956567

Log:
See what this would look like

Modified:
    websites/production/cxf/content/faq.html

Modified: websites/production/cxf/content/faq.html
==============================================================================
--- websites/production/cxf/content/faq.html (original)
+++ websites/production/cxf/content/faq.html Wed Jul  1 18:01:52 2015
@@ -58,11 +58,11 @@ Apache CXF -- FAQ
     <td id="cell-1-1">&nbsp;</td>
     <td id="cell-1-2">
       <!-- Banner -->
-<div class="banner" id="banner"><div><table border="0" cellpadding="0" cellspacing="0"
width="100%"><tr><td align="left" colspan="1" nowrap>
+<div><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td
align="left" colspan="1" nowrap>
 <a shape="rect" href="http://cxf.apache.org/" title="Apache CXF"><span style="font-weight:
bold; font-size: 170%; color: white">Apache CXF</span></a>
 </td><td align="right" colspan="1" nowrap>
 <a shape="rect" href="http://www.apache.org/" title="The Apache Software Foundation"><img
border="0" alt="ASF Logo" src="http://cxf.apache.org/images/asf-logo.png"></a>
-</td></tr></table></div></div>
+</td></tr></table></div>
       <!-- Banner -->
       <div id="top-menu">
         <table border="0" cellpadding="1" cellspacing="0" width="100%">
@@ -77,7 +77,7 @@ Apache CXF -- FAQ
             <td>
               <div align="right">
                 <!-- Quicklinks -->
-<div id="quicklinks"><p><a shape="rect" href="download.html">Download</a>
| <a shape="rect" href="http://cxf.apache.org/docs/index.html">Documentation</a></p></div>
+<p><a shape="rect" href="download.html">Download</a> | <a shape="rect"
href="http://cxf.apache.org/docs/index.html">Documentation</a></p>
                 <!-- Quicklinks -->
               </div>
             </td>
@@ -99,7 +99,7 @@ Apache CXF -- FAQ
                 <div id="wrapper-menu-page-bottom">
                   <div id="menu-page">
                     <!-- NavigationBar -->
-<div id="navigation"><h3 id="Navigation-ApacheCXF"><a shape="rect" href="index.html">Apache
CXF</a></h3><ul class="alternate"><li><a shape="rect" href="index.html">Home</a></li><li><a
shape="rect" href="download.html">Download</a></li><li><a shape="rect"
href="people.html">People</a></li><li><a shape="rect" href="project-status.html">Project
Status</a></li><li><a shape="rect" href="roadmap.html">Roadmap</a></li><li><a
shape="rect" href="mailing-lists.html">Mailing Lists</a></li><li><a
shape="rect" class="external-link" href="http://issues.apache.org/jira/browse/CXF">Issue
Reporting</a></li><li><a shape="rect" href="special-thanks.html">Special
Thanks</a></li><li><a shape="rect" class="external-link" href="http://www.apache.org/licenses/">License</a></li><li><a
shape="rect" href="security-advisories.html">Security Advisories</a></li></ul><h3
id="Navigation-Users">Users</h3><ul class="alternate"><li><a shape="rect"
href="http://cxf.apache.org/docs/index.html">User's Guide</a></li><li>
 <a shape="rect" href="support.html">Support</a></li><li><a shape="rect"
href="faq.html">FAQ</a></li><li><a shape="rect" href="resources-and-articles.html">Resources
and Articles</a></li></ul><h3 id="Navigation-Search">Search</h3><form
enctype="application/x-www-form-urlencoded" method="get" id="cse-search-box" action="http://www.google.com/cse"><div>
<input type="hidden" name="cx" value="002890367768291051730:o99qiwa09y4"> <input
type="hidden" name="ie" value="UTF-8"> <input type="text" name="q" size="21"> <input
type="submit" name="sa" value="Search"> </div> </form> <script type="text/javascript"
src="http://www.google.com/cse/brand?form=cse-search-box&amp;lang=en"></script>
<h3 id="Navigation-Developers">Developers</h3><ul class="alternate"><li><a
shape="rect" href="http://cxf.apache.org/docs/cxf-architecture.html">Architecture Guide</a></li><li><a
shape="rect" href="source-repository.html">Source Repository</a></li><li><a
shape="rect" href="building.html">Building</a></li><li><a 
 shape="rect" href="automated-builds.html">Automated Builds</a></li><li><a
shape="rect" href="testing-debugging.html">Testing-Debugging</a></li><li><a
shape="rect" href="coding-guidelines.html">Coding Guidelines</a></li><li><a
shape="rect" href="getting-involved.html">Getting Involved</a></li><li><a
shape="rect" href="release-management.html">Release Management</a></li></ul><h3
id="Navigation-Subprojects">Subprojects</h3><ul class="alternate"><li><a
shape="rect" href="distributed-osgi.html">Distributed OSGi</a></li><li><a
shape="rect" href="xjc-utils.html">XJC Utils</a></li><li><a shape="rect"
href="build-utils.html">Build Utils</a></li><li><a shape="rect" href="fediz.html">Fediz</a></li></ul><h3
id="Navigation-ASF"><a shape="rect" class="external-link" href="http://www.apache.org">ASF</a></h3><ul
class="alternate"><li><a shape="rect" class="external-link" href="http://www.apache.org/foundation/how-it-works.html">How
Apache Works</a></li><li><a shape="rect" class="external-link" href
 ="http://www.apache.org/foundation/">Foundation</a></li><li><a shape="rect"
class="external-link" href="http://www.apache.org/foundation/sponsorship.html">Sponsor
Apache</a></li><li><a shape="rect" class="external-link" href="http://www.apache.org/foundation/thanks.html">Thanks</a></li><li><a
shape="rect" class="external-link" href="http://www.apache.org/security/">Security</a></li></ul></div>
+<h3 id="Navigation-ApacheCXF"><a shape="rect" href="index.html">Apache CXF</a></h3><ul
class="alternate"><li><a shape="rect" href="index.html">Home</a></li><li><a
shape="rect" href="download.html">Download</a></li><li><a shape="rect"
href="people.html">People</a></li><li><a shape="rect" href="project-status.html">Project
Status</a></li><li><a shape="rect" href="roadmap.html">Roadmap</a></li><li><a
shape="rect" href="mailing-lists.html">Mailing Lists</a></li><li><a
shape="rect" class="external-link" href="http://issues.apache.org/jira/browse/CXF">Issue
Reporting</a></li><li><a shape="rect" href="special-thanks.html">Special
Thanks</a></li><li><a shape="rect" class="external-link" href="http://www.apache.org/licenses/">License</a></li><li><a
shape="rect" href="security-advisories.html">Security Advisories</a></li></ul><h3
id="Navigation-Users">Users</h3><ul class="alternate"><li><a shape="rect"
href="http://cxf.apache.org/docs/index.html">User's Guide</a></li><li><a
shape="rect" href=
 "support.html">Support</a></li><li><a shape="rect" href="faq.html">FAQ</a></li><li><a
shape="rect" href="resources-and-articles.html">Resources and Articles</a></li></ul><h3
id="Navigation-Search">Search</h3><form enctype="application/x-www-form-urlencoded"
method="get" id="cse-search-box" action="http://www.google.com/cse"><div> <input
type="hidden" name="cx" value="002890367768291051730:o99qiwa09y4"> <input type="hidden"
name="ie" value="UTF-8"> <input type="text" name="q" size="21"> <input type="submit"
name="sa" value="Search"> </div> </form> <script type="text/javascript"
src="http://www.google.com/cse/brand?form=cse-search-box&amp;lang=en"></script>
<h3 id="Navigation-Developers">Developers</h3><ul class="alternate"><li><a
shape="rect" href="http://cxf.apache.org/docs/cxf-architecture.html">Architecture Guide</a></li><li><a
shape="rect" href="source-repository.html">Source Repository</a></li><li><a
shape="rect" href="building.html">Building</a></li><li><a shape="rect"
href="au
 tomated-builds.html">Automated Builds</a></li><li><a shape="rect"
href="testing-debugging.html">Testing-Debugging</a></li><li><a shape="rect"
href="coding-guidelines.html">Coding Guidelines</a></li><li><a shape="rect"
href="getting-involved.html">Getting Involved</a></li><li><a shape="rect"
href="release-management.html">Release Management</a></li></ul><h3
id="Navigation-Subprojects">Subprojects</h3><ul class="alternate"><li><a
shape="rect" href="distributed-osgi.html">Distributed OSGi</a></li><li><a
shape="rect" href="xjc-utils.html">XJC Utils</a></li><li><a shape="rect"
href="build-utils.html">Build Utils</a></li><li><a shape="rect" href="fediz.html">Fediz</a></li></ul><h3
id="Navigation-ASF"><a shape="rect" class="external-link" href="http://www.apache.org">ASF</a></h3><ul
class="alternate"><li><a shape="rect" class="external-link" href="http://www.apache.org/foundation/how-it-works.html">How
Apache Works</a></li><li><a shape="rect" class="external-link" href="http://www.apache.o
 rg/foundation/">Foundation</a></li><li><a shape="rect" class="external-link"
href="http://www.apache.org/foundation/sponsorship.html">Sponsor Apache</a></li><li><a
shape="rect" class="external-link" href="http://www.apache.org/foundation/thanks.html">Thanks</a></li><li><a
shape="rect" class="external-link" href="http://www.apache.org/security/">Security</a></li></ul>
                     <!-- NavigationBar -->
                   </div>
               </div>
@@ -109,9 +109,22 @@ Apache CXF -- FAQ
          <td height="100%">
            <!-- Content -->
            <div class="wiki-content">
-<div id="ConfluenceContent"><h1 id="FAQ-FrequentlyAskedQuestions">Frequently
Asked Questions</h1><p></p><div class="toc-macro client-side-toc-macro"
data-headerelements="H2,H3,H4"></div><h2 id="FAQ-General">General</h2><h3
id="FAQ-CanCXFrunwithJDK1.8/Java8?">Can CXF run with JDK 1.8/Java 8?</h3><p>Most
of CXF 3.0.0 can run with Java 8. &#160;Building CXF cannot currently be done with Java8
due to problems with various Maven plugins, problems with JIBX, etc... &#160; The tooling
may require a&#160;-Djavax.xml.accessExternalSchema=file &#160;VM argument to allow
JAXB to process and parse schemas. &#160; Many of the CXF tests fail for the same reason.
&#160; We are hoping that with CXF 3.0.1, we can fix a majority of the issues (JIBX issues
are still outstanding) via updates to tests, new version of JAXB, etc....</p><h3
id="FAQ-CanCXFrunwithJDK1.7/Java7?">Can CXF run with JDK 1.7/Java 7?</h3><p>Yes.
CXF supports Java 7. Since Java 7 contains the 2.2.x versions of both JAXB and JAX-WS A
 PI jars, using CXF with Java 7 is much easier than with Java 6.</p><h3 id="FAQ-CanCXFrunwithJDK1.6?">Can
CXF run with JDK 1.6?</h3><p>JDK 1.6 incorporates the JAXB reference implementation.
However, it incorporates an old version of the RI. CXF does not support this version. As of
1.6_04, this is easy to deal with: you must put the versions of JAXB RI (the 'impl' and 'xjc'
jars) that we include with CXF in your classpath. As of this writing, these are version 2.2.10.</p><div
class="confluence-information-macro confluence-information-macro-information"><span
class="aui-icon aui-icon-small aui-iconfont-info confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><p>The current plan is that CXF 3.1 will
no longer support Java 6 and will require Java 7 or newer. Users are strongly encouraged to
start moving to Java 7.</p></div></div><p><span style="color: rgb(0,0,0);font-size:
1.4em;line-height: 1.5625;">Can CXF run with JDK 1.5?</span></p><p>Yes
for CXF
  2.6.x and older. Keep in mind though that Java 2 SE 5.0 with JDK 1.5 has reached end of
life (<a shape="rect" class="external-link" href="http://www.oracle.com/technetwork/java/eol-135779.html"
rel="nofollow">EOL</a>). CXF 2.7.x no longer supports Java 5. In order to upgrade
to 2.7.x, you must be using Java 6 (or newer).</p><div class="confluence-information-macro
confluence-information-macro-information"><span class="aui-icon aui-icon-small aui-iconfont-info
confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>There
is one more planned release for the 2.6.x series of CXF. After that, there are no more planned
releases of CXF that will support Java 5. Users are strongly encouraged to start moving to
Java 7 and to start migrating to newer versions of CXF.</p></div></div><p>&#160;</p><h3
id="FAQ-CanCXFrunwithouttheSunreferenceSAAJimplementation?">Can CXF run without the Sun
reference SAAJ implementation?</h3><p>In many cases, CXF can run without
  an SAAJ implementation. However, some features such as JAX-WS handlers and WS-Security do
require an SAAJ implementation. By default, CXF ships with the Sun SAAJ implementation, but
CXF also supports axis2-saaj version 1.4.1 as an alternative. When using a Java6 JRE, CXF
can also use the SAAJ implementation built into Java.</p><h3 id="FAQ-AretherecommercialofferingsofCXFthatprovideservices,support,andadditionalfeatures?">Are
there commercial offerings of CXF that provide services, support, and additional features?</h3><p>Several
companies provide services, training, documentation, support, etc... on top of CXF. Some of
those companies also produce products that are either based on Apache CXF or include Apache
CXF. See the <a shape="rect" href="commercial-cxf-offerings.html">Commercial CXF Offerings</a>
page for a list of companies and the services they provide.</p><h3 id="FAQ-IsthereanApacheCXFcertificationprogram?">Is
there an Apache CXF certification program?</h3><p>No, but Oracl
 e's <a shape="rect" class="external-link" href="http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=41&amp;p_exam_id=1Z0_862"
rel="nofollow">SCDJWS</a> certification covers the web services stack and related
areas. Note, that the popular SCJP certification is a prerequisite to the SCDJWS. Also, check
out the <a shape="rect" class="external-link" href="http://www.coderanch.com/forums/f-80/java-Web-Services-SCDJWS"
rel="nofollow">SCDJWS Forum</a> at the Java Ranch for healthy discussions in regards
to the certification. Study notes can be found at <a shape="rect" class="external-link"
href="http://java.boot.by/scdjws5-guide/" rel="nofollow">SCDJWS 5.0 Study Guide</a>,
<a shape="rect" class="external-link" href="http://en.wikibooks.org/wiki/Sun_Certified_Web_Services_Developer_Certification"
rel="nofollow">WikiBooks</a> and <a shape="rect" class="external-link" href="http://www.coderanch.com/how-to/content/Exam-Objectives-5.pdf"
rel="nofollow">Ivan A. Krizsan Stud
 y Notes</a>. Java Ranch also provides and information <a shape="rect" class="external-link"
href="http://www.coderanch.com/how-to/java/ScdjwsLinks" rel="nofollow">page</a> in
regards to the certification.</p><h2 id="FAQ-JAX-WSRelated">JAX-WS Related</h2><h3
id="FAQ-Thepartsinmygeneratedwsdlhavenamesoftheform&quot;arg0&quot;,&quot;arg1&quot;,...Whydon'ttheparts(andJavageneratedfromthem)usetheniceparameternamesItypedintotheinterfacedefinition?">The
parts in my generated wsdl have names of the form "arg0", "arg1", ... Why don't the parts
(and Java generated from them) use the nice parameter names I typed into the interface definition?</h3><p><strong>Official
answer:</strong> The JAX-WS spec (specifically section 3.6.1) mandates that it be generated
this way. To customize the name, you have to use an @WebParam(name = "blah") annotation to
specify better names. (You can use @WebResult for the return value, but you'll only see the
results if you look at the XML.)</p><p><strong>Reason:</st
 rong> One of the mysteries of java is that abstract methods (and thus interface methods)
do NOT get their parameter names compiled into them even with debug info. Thus, when the service
model is built from an interface, there is no way to determine the names that were using in
the original code.</p><p>If the service is built from a concrete class (instead
of an interface) AND the class was compiled with debug info, we can get the parameter names.
The simple frontend does this. However, this could cause potential problems. For example,
when you go from developement to production, you may turn off debug information (remove -g
from javac flags) and suddenly the application may break since the generated wsdl (and thus
expect soap messages) would change. Thus, the JAX-WS spec writers went the safe route and
mandate that you have to use the @WebParam annotations to specify the more descriptive names.</p><h3
id="FAQ-HowcanIaddsoapheaderstotherequest/response?">How can I add soap headers to
  the request/response?</h3><p>There are several ways to do this depending on
how your project is written (code first or wsdl first) and requirements such as portability.</p><ol><li>The
"JAX-WS" standard way to do this is to write a SOAP Handler that will add the headers to the
SOAP message and register the handler on the client/server. This is completely portable from
jax-ws vendor to vendor, but is also more difficult and can have performance implications.
You have to handle the conversion of the JAXB objects to XML yourself. It involves having
the entire soap message in a DOM which breaks streaming. Requires more memory. etc... However,
it doesn't require any changes to wsdl or SEI interfaces.</li><li>JAX-WS standard
"java first" way: if doing java first development, you can just add an extra parameter to
the method and annotate it with @WebParam(header = true). If it's a response header, make
it a Holder and add the mode = Mode.OUT to @WebParam.</li><li>wsdl first way:
you can ad
 d elements to the message in the wsdl and then mark them as soap:headers in the soap:binding
section of the wsdl. The wsdl2java tool will generate the @WebParam(header = true) annotations
as above. With CXF, you can also put the headers in their own message (not the same message
as the request/response) and mark them as headers in the soap:binding, but you will need to
pass the -exsh true flag to wsdl2java to get the paramters generated. This is not portable
to other jax-ws providers. Processing headers from other messages it optional in the jaxws
spec.</li><li>CXF proprietary way: In the context (BindingProvider.getRequestContext()
on client, WebServiceContext on server), you can add a List&lt;org.apache.cxf.headers.Header&gt;
with the key Header.HEADER_LIST. The headers in the list are streamed at the appropriate time
to the wire according to the databinding object found in the Header object. Like option 1,
this doesn't require changes to wsdl or method signatures. However, it's m
 uch faster as it doesn't break streaming and the memory overhead is less.</li></ol><div
class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent
pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[List&lt;Header&gt;
headers = new ArrayList&lt;Header&gt;();
-Header dummyHeader = new Header(new QName(&quot;uri:org.apache.cxf&quot;, &quot;dummy&quot;),
&quot;decapitated&quot;,
+<h1 id="FAQ-FrequentlyAskedQuestions">Frequently Asked Questions</h1><p><style
type="text/css">/*<![CDATA[*/
+div.rbtoc1435773593921 {padding: 0px;}
+div.rbtoc1435773593921 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1435773593921 li {margin-left: 0px;padding-left: 0px;}
+
+/*]]>*/</style></p><div class="toc-macro rbtoc1435773593921">
+<ul class="toc-indentation"><li><a shape="rect" href="#FAQ-General">General</a>
+<ul class="toc-indentation"><li><a shape="rect" href="#FAQ-CanCXFrunwithJDK1.8/Java8?">Can
CXF run with JDK 1.8/Java 8?</a></li><li><a shape="rect" href="#FAQ-CanCXFrunwithJDK1.7/Java7?">Can
CXF run with JDK 1.7/Java 7?</a></li><li><a shape="rect" href="#FAQ-CanCXFrunwithJDK1.6?">Can
CXF run with JDK 1.6?</a></li><li><a shape="rect" href="#FAQ-CanCXFrunwithouttheSunreferenceSAAJimplementation?">Can
CXF run without the Sun reference SAAJ implementation?</a></li><li><a
shape="rect" href="#FAQ-AretherecommercialofferingsofCXFthatprovideservices,support,andadditionalfeatures?">Are
there commercial offerings of CXF that provide services, support, and additional features?</a></li><li><a
shape="rect" href="#FAQ-IsthereanApacheCXFcertificationprogram?">Is there an Apache CXF
certification program?</a></li></ul>
+</li><li><a shape="rect" href="#FAQ-JAX-WSRelated">JAX-WS Related</a>
+<ul class="toc-indentation"><li><a shape="rect" href="#FAQ-Thepartsinmygeneratedwsdlhavenamesoftheform&quot;arg0&quot;,&quot;arg1&quot;,...Whydon'ttheparts(andJavageneratedfromthem)usetheniceparameternamesItypedintotheinterfacedefinition?">The
parts in my generated wsdl have names of the form "arg0", "arg1", ... Why don't the parts
(and Java generated from them) use the nice parameter names I typed into the interface definition?</a></li><li><a
shape="rect" href="#FAQ-HowcanIaddsoapheaderstotherequest/response?">How can I add soap
headers to the request/response?</a></li><li><a shape="rect" href="#FAQ-HowcanIturnonschemavalidationforjaxwsendpoint?">How
can I turn on schema validation for jaxws endpoint?</a></li><li><a shape="rect"
href="#FAQ-AreJAX-WSclientproxiesthreadsafe?">Are JAX-WS client proxies thread safe?</a></li><li><a
shape="rect" href="#FAQ-Thegeneratedwsdl(GETrequestonthe?wsdladdress)doesn'tcontainthemessages,types,portType,etc...WhatdidIdowrong?">The
generated wsdl (GET
  request on the ?wsdl address) doesn't contain the messages, types, portType, etc... What
did I do wrong?</a></li></ul>
+</li><li><a shape="rect" href="#FAQ-SpringRelated">Spring Related</a>
+<ul class="toc-indentation"><li><a shape="rect" href="#FAQ-WhenusingSpringAOPtoenablethingsliketransactionsandsecurity,thegeneratedWSDLisverymessedupwithwrongnamespaces,partnames,etc...">When
using Spring AOP to enable things like transactions and security, the generated WSDL is very
messed up with wrong namespaces, part names, etc...</a></li></ul>
+</li></ul>
+</div><h2 id="FAQ-General">General</h2><h3 id="FAQ-CanCXFrunwithJDK1.8/Java8?">Can
CXF run with JDK 1.8/Java 8?</h3><p>Most of CXF 3.0.0 can run with Java 8. &#160;Building
CXF cannot currently be done with Java8 due to problems with various Maven plugins, problems
with JIBX, etc... &#160; The tooling may require a&#160;-Djavax.xml.accessExternalSchema=file
&#160;VM argument to allow JAXB to process and parse schemas. &#160; Many of the CXF
tests fail for the same reason. &#160; We are hoping that with CXF 3.0.1, we can fix a
majority of the issues (JIBX issues are still outstanding) via updates to tests, new version
of JAXB, etc....</p><h3 id="FAQ-CanCXFrunwithJDK1.7/Java7?">Can CXF run with JDK
1.7/Java 7?</h3><p>Yes. CXF supports Java 7. Since Java 7 contains the 2.2.x versions
of both JAXB and JAX-WS API jars, using CXF with Java 7 is much easier than with Java 6.</p><h3
id="FAQ-CanCXFrunwithJDK1.6?">Can CXF run with JDK 1.6?</h3><p>JDK 1.6 incorporates
the JAXB reference implem
 entation. However, it incorporates an old version of the RI. CXF does not support this version.
As of 1.6_04, this is easy to deal with: you must put the versions of JAXB RI (the 'impl'
and 'xjc' jars) that we include with CXF in your classpath. As of this writing, these are
version 2.2.10.</p><div class="confluence-information-macro confluence-information-macro-information"><span
class="aui-icon aui-icon-small aui-iconfont-info confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><p>The current plan is that CXF 3.1 will
no longer support Java 6 and will require Java 7 or newer. Users are strongly encouraged to
start moving to Java 7.</p></div></div><p><span style="color: rgb(0,0,0);font-size:
1.4em;line-height: 1.5625;">Can CXF run with JDK 1.5?</span></p><p>Yes
for CXF 2.6.x and older. Keep in mind though that Java 2 SE 5.0 with JDK 1.5 has reached end
of life (<a shape="rect" class="external-link" href="http://www.oracle.com/technetwork/java/eo
 l-135779.html" rel="nofollow">EOL</a>). CXF 2.7.x no longer supports Java 5. In
order to upgrade to 2.7.x, you must be using Java 6 (or newer).</p><div class="confluence-information-macro
confluence-information-macro-information"><span class="aui-icon aui-icon-small aui-iconfont-info
confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>There
is one more planned release for the 2.6.x series of CXF. After that, there are no more planned
releases of CXF that will support Java 5. Users are strongly encouraged to start moving to
Java 7 and to start migrating to newer versions of CXF.</p></div></div><p>&#160;</p><h3
id="FAQ-CanCXFrunwithouttheSunreferenceSAAJimplementation?">Can CXF run without the Sun
reference SAAJ implementation?</h3><p>In many cases, CXF can run without an SAAJ
implementation. However, some features such as JAX-WS handlers and WS-Security do require
an SAAJ implementation. By default, CXF ships with the Sun SAAJ implementation, b
 ut CXF also supports axis2-saaj version 1.4.1 as an alternative. When using a Java6 JRE,
CXF can also use the SAAJ implementation built into Java.</p><h3 id="FAQ-AretherecommercialofferingsofCXFthatprovideservices,support,andadditionalfeatures?">Are
there commercial offerings of CXF that provide services, support, and additional features?</h3><p>Several
companies provide services, training, documentation, support, etc... on top of CXF. Some of
those companies also produce products that are either based on Apache CXF or include Apache
CXF. See the <a shape="rect" href="commercial-cxf-offerings.html">Commercial CXF Offerings</a>
page for a list of companies and the services they provide.</p><h3 id="FAQ-IsthereanApacheCXFcertificationprogram?">Is
there an Apache CXF certification program?</h3><p>No, but Oracle's <a shape="rect"
class="external-link" href="http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=41&amp;p_exam_id=1Z0_862"
rel="nofollow">SCDJWS</a> certif
 ication covers the web services stack and related areas. Note, that the popular SCJP certification
is a prerequisite to the SCDJWS. Also, check out the <a shape="rect" class="external-link"
href="http://www.coderanch.com/forums/f-80/java-Web-Services-SCDJWS" rel="nofollow">SCDJWS
Forum</a> at the Java Ranch for healthy discussions in regards to the certification.
Study notes can be found at <a shape="rect" class="external-link" href="http://java.boot.by/scdjws5-guide/"
rel="nofollow">SCDJWS 5.0 Study Guide</a>, <a shape="rect" class="external-link"
href="http://en.wikibooks.org/wiki/Sun_Certified_Web_Services_Developer_Certification" rel="nofollow">WikiBooks</a>
and <a shape="rect" class="external-link" href="http://www.coderanch.com/how-to/content/Exam-Objectives-5.pdf"
rel="nofollow">Ivan A. Krizsan Study Notes</a>. Java Ranch also provides and information
<a shape="rect" class="external-link" href="http://www.coderanch.com/how-to/java/ScdjwsLinks"
rel="nofollow">page</a> in regar
 ds to the certification.</p><h2 id="FAQ-JAX-WSRelated">JAX-WS Related</h2><h3
id="FAQ-Thepartsinmygeneratedwsdlhavenamesoftheform&quot;arg0&quot;,&quot;arg1&quot;,...Whydon'ttheparts(andJavageneratedfromthem)usetheniceparameternamesItypedintotheinterfacedefinition?">The
parts in my generated wsdl have names of the form "arg0", "arg1", ... Why don't the parts
(and Java generated from them) use the nice parameter names I typed into the interface definition?</h3><p><strong>Official
answer:</strong> The JAX-WS spec (specifically section 3.6.1) mandates that it be generated
this way. To customize the name, you have to use an @WebParam(name = "blah") annotation to
specify better names. (You can use @WebResult for the return value, but you'll only see the
results if you look at the XML.)</p><p><strong>Reason:</strong> One
of the mysteries of java is that abstract methods (and thus interface methods) do NOT get
their parameter names compiled into them even with debug info. Thus, when the se
 rvice model is built from an interface, there is no way to determine the names that were
using in the original code.</p><p>If the service is built from a concrete class
(instead of an interface) AND the class was compiled with debug info, we can get the parameter
names. The simple frontend does this. However, this could cause potential problems. For example,
when you go from developement to production, you may turn off debug information (remove -g
from javac flags) and suddenly the application may break since the generated wsdl (and thus
expect soap messages) would change. Thus, the JAX-WS spec writers went the safe route and
mandate that you have to use the @WebParam annotations to specify the more descriptive names.</p><h3
id="FAQ-HowcanIaddsoapheaderstotherequest/response?">How can I add soap headers to the
request/response?</h3><p>There are several ways to do this depending on how your
project is written (code first or wsdl first) and requirements such as portability.</p><ol><li
 >The "JAX-WS" standard way to do this is to write a SOAP Handler that will add the headers
to the SOAP message and register the handler on the client/server. This is completely portable
from jax-ws vendor to vendor, but is also more difficult and can have performance implications.
You have to handle the conversion of the JAXB objects to XML yourself. It involves having
the entire soap message in a DOM which breaks streaming. Requires more memory. etc... However,
it doesn't require any changes to wsdl or SEI interfaces.</li><li>JAX-WS standard
"java first" way: if doing java first development, you can just add an extra parameter to
the method and annotate it with @WebParam(header = true). If it's a response header, make
it a Holder and add the mode = Mode.OUT to @WebParam.</li><li>wsdl first way:
you can add elements to the message in the wsdl and then mark them as soap:headers in the
soap:binding section of the wsdl. The wsdl2java tool will generate the @WebParam(header =
true) anno
 tations as above. With CXF, you can also put the headers in their own message (not the same
message as the request/response) and mark them as headers in the soap:binding, but you will
need to pass the -exsh true flag to wsdl2java to get the paramters generated. This is not
portable to other jax-ws providers. Processing headers from other messages it optional in
the jaxws spec.</li><li>CXF proprietary way: In the context (BindingProvider.getRequestContext()
on client, WebServiceContext on server), you can add a List&lt;org.apache.cxf.headers.Header&gt;
with the key Header.HEADER_LIST. The headers in the list are streamed at the appropriate time
to the wire according to the databinding object found in the Header object. Like option 1,
this doesn't require changes to wsdl or method signatures. However, it's much faster as it
doesn't break streaming and the memory overhead is less.</li></ol><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;">List&lt;Header&gt;
headers = new ArrayList&lt;Header&gt;();
+Header dummyHeader = new Header(new QName("uri:org.apache.cxf", "dummy"), "decapitated",
                                 new JAXBDataBinding(String.class));
 headers.add(dummyHeader);
 
@@ -120,45 +133,45 @@ context.getMessageContext().put(Header.H
 
 //client side:
 ((BindingProvider)proxy).getRequestContext().put(Header.HEADER_LIST, headers);
-]]></script>
+</pre>
 </div></div><h3 id="FAQ-HowcanIturnonschemavalidationforjaxwsendpoint?">How
can I turn on schema validation for jaxws endpoint?</h3><p>For the client side</p><div
class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent
pdl">
-<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
   &lt;jaxws:client name=&quot;{http://apache.org/hello_world_soap_http}SoapPort&quot;
-        createdFromAPI=&quot;true&quot;&gt;
+<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;">   
&lt;jaxws:client name="{http://apache.org/hello_world_soap_http}SoapPort"
+        createdFromAPI="true"&gt;
         &lt;jaxws:properties&gt;
-            &lt;entry key=&quot;schema-validation-enabled&quot; value=&quot;true&quot;
/&gt;
+            &lt;entry key="schema-validation-enabled" value="true" /&gt;
         &lt;/jaxws:properties&gt;
     &lt;/jaxws:client&gt;
-]]></script>
+</pre>
 </div></div><p>You may also do this programmatically:</p><div
class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent
pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[((BindingProvider)port).getRequestContext().put(&quot;schema-validation-enabled&quot;,
&quot;true&quot;); 
-]]></script>
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">((BindingProvider)port).getRequestContext().put("schema-validation-enabled",
"true"); 
+</pre>
 </div></div><p>For the server side</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
   &lt;jaxws:endpoint name=&quot;{http://apache.org/hello_world_soap_http}SoapPort&quot;
-        wsdlLocation=&quot;wsdl/hello_world.wsdl&quot;
-        createdFromAPI=&quot;true&quot;&gt;
+<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;">   
&lt;jaxws:endpoint name="{http://apache.org/hello_world_soap_http}SoapPort"
+        wsdlLocation="wsdl/hello_world.wsdl"
+        createdFromAPI="true"&gt;
         &lt;jaxws:properties&gt;
-            &lt;entry key=&quot;schema-validation-enabled&quot; value=&quot;true&quot;
/&gt;
+            &lt;entry key="schema-validation-enabled" value="true" /&gt;
         &lt;/jaxws:properties&gt;
     &lt;/jaxws:endpoint&gt;
-]]></script>
+</pre>
 </div></div><p>Starting with CXF 2.3 you have the additional option of
using the org.apache.cxf.annotations.SchemaValidation annotation.</p><h3 id="FAQ-AreJAX-WSclientproxiesthreadsafe?">Are
JAX-WS client proxies thread safe?</h3><p><strong>Official JAX-WS answer:</strong>
No. According to the JAX-WS spec, the client proxies are NOT thread safe. To write portable
code, you should treat them as non-thread safe and synchronize access or use a pool of instances
or similar.</p><p><strong>CXF answer:</strong> CXF proxies are thread
safe for MANY use cases. The exceptions are:</p><ul><li><p>Use of
((BindingProvider)proxy).getRequestContext() - per JAX-WS spec, the request context is PER
INSTANCE. Thus, anything set there will affect requests on other threads. With CXF, you can
do:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent
panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[((BindingProvider)proxy).getRequestContext().put(&quot;thread.local.request.context&quot;,
&quot;true&quot;);
-]]></script>
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">((BindingProvider)proxy).getRequestContext().put("thread.local.request.context",
"true");
+</pre>
 </div></div><p>and future calls to getRequestContext() will use a thread
local request context. That allows the request context to be threadsafe. (Note: the response
context is always thread local in CXF)</p></li></ul><ul><li>Settings
on the conduit - if you use code or configuration to directly manipulate the conduit (like
to set TLS settings or similar), those are not thread safe. The conduit is per-instance and
thus those settings would be shared. Also, if you use the FailoverFeature and LoadBalanceFeatures,
the conduit is replaced on the fly. Thus, settings set on the conduit could get lost before
being used on the setting thread.</li></ul><ul><li>Session support
- if you turn on sessions support (see jaxws spec), the session cookie is stored in the conduit.
Thus, it would fall into the above rules on conduit settings and thus be shared across threads.</li></ul><ul><li>WS-Security
tokens - If use WS-SecureConversation or WS-Trust, the retrieved token is cached in the Endpoint/Pr
 oxy to avoid the extra (and expensive) calls to the STS to obtain tokens. Thus, multiple
threads will share the token. If each thread has different security credentials or requirements,
you need to use separate proxy instances.</li></ul><p>For the conduit issues,
you COULD install a new ConduitSelector that uses a thread local or similar. That's a bit
complex though.</p><p>For most "simple" use cases, you can use CXF proxies on
multiple threads. The above outlines the workarounds for the others.</p><h3 id="FAQ-Thegeneratedwsdl(GETrequestonthe?wsdladdress)doesn'tcontainthemessages,types,portType,etc...WhatdidIdowrong?">The
generated wsdl (GET request on the ?wsdl address) doesn't contain the messages, types, portType,
etc... What did I do wrong?</h3><p>Usually this means the wsdl at that address
contains the service and binding, but uses a &lt;wsdl:import&gt; element to import
another wsdl (usually at ?wsdl=MyService1.wsdl type address) that defines the types, messages,
and portType.
  The cause of this is different targetNamespaces for the Service Interface (mapped to the
port type) and the service implementation (mapped to the Service/Binding). By default, the
targetNamespace is derived from the package of each of those, so if they are in different
packages, you will see this issue. Also, if you define a targetNamespace attribute on the
@WebService annotation on one of them, but not the other, you will likely see this as well.
The easiest fix is to update the @WebService annotation on BOTH to have the exact same targetNamespace
defined.</p><h2 id="FAQ-SpringRelated">Spring Related</h2><h3 id="FAQ-WhenusingSpringAOPtoenablethingsliketransactionsandsecurity,thegeneratedWSDLisverymessedupwithwrongnamespaces,partnames,etc...">When
using Spring AOP to enable things like transactions and security, the generated WSDL is very
messed up with wrong namespaces, part names, etc...</h3><p><strong>Reason:</strong>
When using Spring AOP, spring injects a proxy to the bean int
 o CXF instead of the actual bean. The Proxy does not have the annotations on it (like the
@WebService annotation) so we cannot query the information directly from the object like we
can in the non-AOP case. The "fix" is to also specify the actual serviceClass of the object
in the spring config:</p><div class="code panel pdl" style="border-width: 1px;"><div
class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[&lt;jaxws:server

-      id=&quot;myService&quot; 
-      serviceClass=&quot;my.package.MyServiceImpl&quot; 
-      serviceBean=&quot;#myServiceImpl&quot; 
-      address=&quot;/MyService&quot; /&gt; 
-]]></script>
+<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;">&lt;jaxws:server

+      id="myService" 
+      serviceClass="my.package.MyServiceImpl" 
+      serviceBean="#myServiceImpl" 
+      address="/MyService" /&gt; 
+</pre>
 </div></div><p>or:</p><div class="code panel pdl" style="border-width:
1px;"><div class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[&lt;jaxws:endpoint
-      id=&quot;myService&quot; 
-      implementorClass=&quot;my.package.MyServiceImpl&quot; 
-      implementor=&quot;#myServiceImpl&quot; 
-      address=&quot;/MyService&quot; /&gt; 
-]]></script>
-</div></div></div>
+<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;">&lt;jaxws:endpoint
+      id="myService" 
+      implementorClass="my.package.MyServiceImpl" 
+      implementor="#myServiceImpl" 
+      address="/MyService" /&gt; 
+</pre>
+</div></div>
            </div>
            <!-- Content -->
          </td>



Mime
View raw message