Modified:
websites/production/cxf/content/docs/simple-frontend-configuration.html
==============================================================================
--- websites/production/cxf/content/docs/simple-frontend-configuration.html
(original)
+++ websites/production/cxf/content/docs/simple-frontend-configuration.html Wed
Sep 13 15:05:52 2017
@@ -119,7 +119,7 @@ Apache CXF -- Simple Frontend Configurat
<div id="ConfluenceContent"><h1
id="SimpleFrontendConfiguration-ConfigurewithSpringforthesimplefrontendserver">Configure
with Spring for the simple front end server</h1>
<p>You can configure the CXF simple front end server endpoint by using the
<simple:server> tag in spring. </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;">
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:simple="http://cxf.apache.org/simple"
@@ -147,7 +147,7 @@ http://cxf.apache.org/simple http://cxf.
<p>Here is a more advanced example which shows how to provide interceptors and
properties:</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;">
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:simple="http://cxf.apache.org/simple"
@@ -187,7 +187,7 @@ http://cxf.apache.org/simple http://cxf.
<h1
id="SimpleFrontendConfiguration-ConfigurewithSpringforthesimplefrontendclient">Configure
with Spring for the simple front end client</h1>
<p>You could use the <simple:client> element to configure the simple
front end client, you can use the spring's getBean API to get the client
instance from the application context.</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;">
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:simple="http://cxf.apache.org/simple"
@@ -217,7 +217,7 @@ http://cxf.apache.org/simple http://cxf.
<p>Here is a more advanced example which shows how to provide interceptors and
properties:</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;">
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:simple="http://cxf.apache.org/simple"
Modified: websites/production/cxf/content/docs/simple-frontend.html
==============================================================================
--- websites/production/cxf/content/docs/simple-frontend.html (original)
+++ websites/production/cxf/content/docs/simple-frontend.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/shBrushXml.js'></script>
+<script src='/resources/highlighter/scripts/shBrushJava.js'></script>
<script>
SyntaxHighlighter.defaults['toolbar'] = false;
SyntaxHighlighter.all();
@@ -146,7 +146,7 @@ Apache CXF -- Simple Frontend
<p>First you'll want to create your service class:</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;">
public interface HelloWorld {
String sayHi(String text);
}
@@ -158,7 +158,7 @@ public interface HelloWorld {
<p>We'll also need an implementation class:</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;">
public class HelloWorldImpl implements HelloWorld {
public String sayHi(String text) {
return "Hello " + text;
@@ -169,7 +169,7 @@ public class HelloWorldImpl implements H
<p>And now we'll want to create a Server from this</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 org.apache.cxf.frontend.ServerFactoryBean;
...
@@ -191,7 +191,7 @@ svrFactory.create();
<p>You'll also want to create a client for your service. CXF includes a
ClientProxyFactoryBean which will create a Java proxy for you from your
interface which will invoke the service.</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 demo.hw.server.HelloWorld;
import org.apache.cxf.frontend.ClientProxyFactoryBean;
...
@@ -214,7 +214,7 @@ own application context.</p>
<p>Here's an example cxf-servlet.xml with simple front end endpoint
configuration. If you use your own application context, you'll need to import
the soap extension and http servlet extension. </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;">
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:simple="http://cxf.apache.org/simple"
Modified: websites/production/cxf/content/docs/soap-11.html
==============================================================================
--- websites/production/cxf/content/docs/soap-11.html (original)
+++ websites/production/cxf/content/docs/soap-11.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();
@@ -141,7 +141,7 @@ Apache CXF -- SOAP 1.1
<p>If your system had an interface that took orders and offered a single
operation to process the orders it would be defined in a WSDL document similar
to the one shown below.</p>
<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader
panelHeader pdl" style="border-bottom-width: 1px;"><b>Ordering System
Interface</b></div><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;">
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="widgetOrderForm.wsdl"
targetNamespace="http://widgetVendor.com/widgetOrderForm"
@@ -177,7 +177,7 @@ Apache CXF -- SOAP 1.1
<p>The SOAP binding generated for orderWidgets is shown below.</p>
<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader
panelHeader pdl" style="border-bottom-width: 1px;"><b>Binding for
orderWidgets</b></div><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;">
<binding name="orderWidgetsBinding" type="tns:orderWidgets">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="placeWidgetOrder">
@@ -209,7 +209,7 @@ Apache CXF -- SOAP 1.1
<p>The syntax for defining a SOAP header is shown in <strong>SOAP Header
Syntax</strong>. The <code>message</code> attribute of <code>soap:header</code>
is the qualified name of the message from which the part being inserted into
the header is taken. The <code>part</code> attribute is the name of the message
part inserted into the SOAP header. Because SOAP headers are always document
style, the WSDL message part inserted into the SOAP header must be defined
using an element. Together the message and the part attributes fully describe
the data to insert into the SOAP header.</p>
<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader
panelHeader pdl" style="border-bottom-width: 1px;"><b>SOAP Header
Syntax</b></div><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;">
<binding name="headwig">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
@@ -239,7 +239,7 @@ Apache CXF -- SOAP 1.1
<p><strong>SOAP 1.1 Binding with a SOAP Header</strong> shows a modified
version of the orderWidgets service shown in <strong>Ordering System
Interface</strong>. This version has been modified so that each order has an
<code>xsd:base64binary</code> value placed in the SOAP header of the request
and response. The SOAP header is defined as being the <code>keyVal</code> part
from the <code>widgetKey</code> message. In this case you would be responsible
for adding the SOAP header in your application logic because it is not part of
the input or output message.</p>
<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader
panelHeader pdl" style="border-bottom-width: 1px;"><b>SOAP 1.1 Binding with a
SOAP Header</b></div><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;">
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="widgetOrderForm.wsdl"
targetNamespace="http://widgetVendor.com/widgetOrderForm"
@@ -304,7 +304,7 @@ Apache CXF -- SOAP 1.1
<p>You could modify <strong>SOAP 1.1 Binding with a SOAP Header</strong> so
that the header value was a part of the input and output messages as shown in
<strong>SOAP 1.1 Binding for orderWidgets with a SOAP Header</strong>. In this
case <code>keyVal</code> is a part of the input and output messages. In the
<code>soap:body</code> element's parts attribute specifies that
<code>keyVal</code> is not to be inserted into the body. However, it is
inserted into the SOAP header.</p>
<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader
panelHeader pdl" style="border-bottom-width: 1px;"><b>SOAP 1.1 Binding for
orderWidgets with a SOAP Header</b></div><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;">
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="widgetOrderForm.wsdl"
targetNamespace="http://widgetVendor.com/widgetOrderForm"
Modified: websites/production/cxf/content/docs/soap-12.html
==============================================================================
--- websites/production/cxf/content/docs/soap-12.html (original)
+++ websites/production/cxf/content/docs/soap-12.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();
@@ -141,7 +141,7 @@ Apache CXF -- SOAP 1.2
<p>If your system had an interface that took orders and offered a single
operation to process the orders it would be defined in a WSDL fragment similar
to the one shown in <strong>Ordering System Interface</strong>.</p>
<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader
panelHeader pdl" style="border-bottom-width: 1px;"><b>Ordering System
Interface</b></div><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;">
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="widgetOrderForm.wsdl"
targetamespace="http://widgetVendor.com/widgetOrderForm"
@@ -177,7 +177,7 @@ Apache CXF -- SOAP 1.2
<p>The SOAP binding generated for orderWidgets is shown in <strong>SOAP 1.2
Binding for orderWidgets</strong>.</p>
<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader
panelHeader pdl" style="border-bottom-width: 1px;"><b>SOAP 1.2 Binding for
orderWidgets</b></div><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;">
<binding name="orderWidgetsBinding" type="tns:orderWidgets">
<wsoap12:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="placeWidgetOrder">
@@ -209,7 +209,7 @@ Apache CXF -- SOAP 1.2
<p>The syntax for defining a SOAP header is shown in <strong>SOAP 1.2 Header
Syntax</strong>.</p>
<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader
panelHeader pdl" style="border-bottom-width: 1px;"><b>SOAP 1.2 Header
Syntax</b></div><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;">
<binding name="headwig">
<wsoap12:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="weave">
@@ -244,7 +244,7 @@ Apache CXF -- SOAP 1.2
<p><strong>SOAP 1.2 Binding with a SOAP Header</strong> shows a modified
version of the orderWidgets service shown in <strong>Ordering System
Interface</strong>. This version has been modified so that each order has an
<code>xsd:base64binary</code> value placed in the header of the request and
response. The header is defined as being the keyVal part from the
widgetKeymessage. In this case you would be responsible for adding the
application logic to create the header because it is not part of the input or
output message.</p>
<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader
panelHeader pdl" style="border-bottom-width: 1px;"><b>SOAP 1.2 Binding with a
SOAP Header</b></div><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;">
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="widgetOrderForm.wsdl"
targetNamespace="http://widgetVendor.com/widgetOrderForm"
@@ -309,7 +309,7 @@ Apache CXF -- SOAP 1.2
<p>You could modify <strong>SOAP 1.2 Binding with a SOAP Header</strong> so
that the header value was a part of the input and output messages as shown in
<strong>SOAP 1.2 Binding for orderWidgets with a SOAP Header</strong>. In this
case keyVal is a part of the input and output messages. In the
<code>wsoap12:body</code> elements the <code>parts</code> attribute specifies
that keyVal is not to be inserted into the body. However, it is inserted into
the header.</p>
<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader
panelHeader pdl" style="border-bottom-width: 1px;"><b>SOAP 1.2 Binding for
orderWidgets with a SOAP Header</b></div><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;">
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="widgetOrderForm.wsdl"
targetNamespace="http://widgetVendor.com/widgetOrderForm"
Modified: websites/production/cxf/content/docs/soap-over-jms-10-support.html
==============================================================================
--- websites/production/cxf/content/docs/soap-over-jms-10-support.html
(original)
+++ websites/production/cxf/content/docs/soap-over-jms-10-support.html Wed Sep
13 15:05:52 2017
@@ -32,10 +32,10 @@
<link type="text/css" rel="stylesheet"
href="/resources/highlighter/styles/shThemeCXF.css">
<script src='/resources/highlighter/scripts/shCore.js'></script>
-<script src='/resources/highlighter/scripts/shBrushJava.js'></script>
+<script src='/resources/highlighter/scripts/shBrushBash.js'></script>
<script src='/resources/highlighter/scripts/shBrushXml.js'></script>
+<script src='/resources/highlighter/scripts/shBrushJava.js'></script>
<script src='/resources/highlighter/scripts/shBrushPlain.js'></script>
-<script src='/resources/highlighter/scripts/shBrushBash.js'></script>
<script>
SyntaxHighlighter.defaults['toolbar'] = false;
SyntaxHighlighter.all();
@@ -120,16 +120,16 @@ Apache CXF -- SOAP over JMS 1.0 support
<!-- Content -->
<div class="wiki-content">
<div id="ConfluenceContent"><p>The <a shape="rect"
href="jms-transport.html">JMS Transport</a> offers an alternative messaging
mechanism to SOAP over HTTP. SOAP over JMS offers more reliable and scalable
messaging support than SOAP over HTTP. The <a shape="rect"
class="external-link" href="http://www.w3.org/TR/soapjms/" rel="nofollow">SOAP
over JMS specification</a> is aimed at a set of standards for the transport of
SOAP messages over JMS. Its main purpose is to ensure interoperability between
the implementations of different Web services vendors. CXF supports and is
compliant with this specification.</p><h2
id="SOAPoverJMS1.0support-SOAPoverJMSNamespace">SOAP over JMS Namespace</h2><h3
id="SOAPoverJMS1.0support-JMSURI">JMS URI</h3><p>JMS endpoints need to know the
address information for establishing connections to the proper destination.
SOAP over JMS implements the <a shape="rect" class="external-link"
href="http://tools.ietf.org/id/draft-merrick-jms-uri-06.txt" rel="nofollow">U
RI Scheme for Java Message Service 1.0</a>.</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeHeader panelHeader pdl"
style="border-bottom-width: 1px;"><b>JMS URI Scheme</b></div><div
class="codeContent panelContent pdl">
-<pre class="brush: text; gutter: false; theme: Confluence"
style="font-size:12px;">jms:<variant>:<destination
name>?param1=value1&param2=value2</pre>
+<pre class="brush: text; gutter: false; theme: Default"
style="font-size:12px;">jms:<variant>:<destination
name>?param1=value1&param2=value2</pre>
</div></div><h3 id="SOAPoverJMS1.0support-Variants">Variants</h3><div
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1"
rowspan="1" class="confluenceTh">Prefix</th><th colspan="1" rowspan="1"
class="confluenceTh">Description</th></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><strong>jndi</strong></td><td colspan="1" rowspan="1"
class="confluenceTd">Destination name is a jndi queue name</td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><strong>jndi-topic</strong></td><td colspan="1"
rowspan="1" class="confluenceTd">Destination name is a jndi topic
name</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><strong>queue</strong></td><td colspan="1" rowspan="1"
class="confluenceTd">Destination is a queue name resolved using
JMS</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><strong>topic</strong></td><td colspan="1" rowspan="1"
class="confluenceTd">Destination is a topic name resolved using
JMS</td></tr></tbody></
table></div><p>Further parameters can be added as query parameters in the
URI.</p><p>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;">jms:jndi:SomeJndiNameForDestination?jndiInitialContextFactory=org.apache.activemq.jndi.ActiveMQInitialContextFactory&jndiURL=tcp://localhost:61616&priority=3
+<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;">jms:jndi:SomeJndiNameForDestination?jndiInitialContextFactory=org.apache.activemq.jndi.ActiveMQInitialContextFactory&jndiURL=tcp://localhost:61616&priority=3
jms:queue:ExampleQueueName?timeToLive=1000
</pre>
</div></div><h3 id="SOAPoverJMS1.0support-JMSparameters">JMS
parameters</h3><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Query Parameter</p></th><th colspan="1" rowspan="1"
class="confluenceTh">From <br clear="none">Version</th><th colspan="1"
rowspan="1" class="confluenceTh"><p>DefaultValue</p></th><th colspan="1"
rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">conduitIdSelectorPrefix</td><td
colspan="1" rowspan="1" class="confluenceTd">3.0.0</td><td colspan="1"
rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">If set then this string will be the prefix for all
correlation ids the conduit creates and also be used in the selector for
listening to replies</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>deliveryMode</p></td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td co
lspan="1" rowspan="1" class="confluenceTd"><p>PERSISTENT</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>NON_PERSISTENT messages will
kept only in memory <br clear="none"> PERSISTENT messages will be saved to
disk</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">durableSubscriptionClientId</td><td colspan="1"
rowspan="1" class="confluenceTd">3.0.1</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">Optional Client identifier for the connection. The purpose
is to associate a connection with a state maintained on behalf of the client by
a provider. The only such state identified by the JMS API is that required to
support durable subscriptions.</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">durableSubscriptionName</td><td colspan="1" rowspan="1"
class="confluenceTd">3.0.0</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd"
> </td></tr><tr><td colspan="1" rowspan="1"
>class="confluenceTd"><p>jndiConnectionFactoryName</p></td><td colspan="1"
>rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1"
>class="confluenceTd"><p>ConnectionFactory</p></td><td colspan="1" rowspan="1"
>class="confluenceTd"><p>Specifies the JNDI name bound to the JMS connection
>factory to use when connecting to the JMS destination.</p></td></tr><tr><td
>colspan="1" rowspan="1"
>class="confluenceTd"><p>jndiInitialContextFactory</p></td><td colspan="1"
>rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1"
>class="confluenceTd"><p> </p></td><td colspan="1" rowspan="1"
>class="confluenceTd"><p>Specifies the fully qualified Java class name of the
>"InitialContextFactory" implementation class to use.</p></td></tr><tr><td
>colspan="1" rowspan="1"
>class="confluenceTd">jndiTransactionManagerName</td><td colspan="1"
>rowspan="1" class="confluenceTd">3.0.0</td><td colspan="1" rowspan="1"
>class="confluenceTd">
 </td><td colspan="1" rowspan="1" class="confluenceTd"><p>Name of the JTA
TransactionManager. Will be searched in spring, blueprint and jndi.<br
clear="none"> If a transaction manager is found then JTA transactions will be
enabled. See details below.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>jndiURL</p></td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"><p> </p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Specifies the JNDI provider URL</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">jndi-*</td><td colspan="1"
rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">Additional parameters for a JNDI provider</td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">messageType</td><td colspan="1"
rowspan="1" class="confluenceTd">3.0.0</td><td colspan="1" rows
pan="1" class="confluenceTd">byte</td><td colspan="1" rowspan="1"
class="confluenceTd">JMS message type used by CXF (byte, text or
binary)</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">password</td><td colspan="1" rowspan="1"
class="confluenceTd">3.0.0</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">Password for creating the connection. Using this in the
URI is discouraged</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">priority</td><td colspan="1" rowspan="1"
class="confluenceTd">3.0.0</td><td colspan="1" rowspan="1"
class="confluenceTd">4</td><td colspan="1" rowspan="1"
class="confluenceTd">Priority for the messages. See your JMS provider
documentation for details. Values range from 0 to 9 where 0 is lowest
priority</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>replyToName</p></td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1" c
lass="confluenceTd"><p> </p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Specifies the JNDI name bound to the JMS destinations
where replies are sent</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">receiveTimeout</td><td colspan="1" rowspan="1"
class="confluenceTd">3.0.0</td><td colspan="1" rowspan="1"
class="confluenceTd">60000</td><td colspan="1" rowspan="1"
class="confluenceTd">Timeout in milliseconds the client waits for a reply in
case of request / repy exchanges</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">reconnectOnException</td><td colspan="1" rowspan="1"
class="confluenceTd"><p>deprecated</p><p>in 3.0.0</p></td><td colspan="1"
rowspan="1" class="confluenceTd">true</td><td colspan="1" rowspan="1"
class="confluenceTd">Should the transport reconnect in case of exceptions. From
version 3.0.0 on the transport will always reconnect in case of
exceptions</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">sessionTransa
cted</td><td colspan="1" rowspan="1" class="confluenceTd">3.0.0</td><td
colspan="1" rowspan="1" class="confluenceTd">false</td><td colspan="1"
rowspan="1" class="confluenceTd">Set to true for resource local transactions.
Do not set if you use JTA</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>timeToLive</p></td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"><p>0</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Time (in ms) after which the message will be discarded
by the jms provider</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">topicReplyToName</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">Reply to messages on a topic with this name. Depending on
the variant this is either  a jndi or jms name.</td></tr><tr><td
colspan="1" rowspan="1" class="co
nfluenceTd">useConduitIdSelector</td><td colspan="1" rowspan="1"
class="confluenceTd">3.0.0</td><td colspan="1" rowspan="1"
class="confluenceTd">true</td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Each conduit is assigned with a UUID. If set to true
this conduit id will be the prefix for all correlation ids. This allows several
endpoints to</p><p>share a JMS queue or topic</p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p>username</p></td><td colspan="1"
rowspan="1" class="confluenceTd">3.0.0</td><td colspan="1" rowspan="1"
class="confluenceTd"><p> </p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Username for creating the
connection</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">concurrentConsumers</td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">1</td><td colspan="1" rowspan="1"
class="confluenceTd">Number of consumers listening queue concurrently</td></tr
></tbody></table></div><p>Some of these attributes are specified in the <a
>shape="rect" class="external-link"
>href="http://tools.ietf.org/id/draft-merrick-jms-uri-06.txt"
>rel="nofollow">JMS URI specification</a>.</p><h2
>id="SOAPoverJMS1.0support-WSDLExtension">WSDL Extension</h2><p>The WSDL
>extensions for defining a JMS endpoint use a special namespace. In order to
>use the JMS WSDL extensions you will need to add the namespace definition
>shown below to the definitions element of your contract.</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;">xmlns:soapjms="http://www.w3.org/2010/soapjms/"
+<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;">xmlns:soapjms="http://www.w3.org/2010/soapjms/"
</pre>
</div></div><p>Various JMS properties may be set in three places in the WSDL
— the binding, the service, and the port. Values specified at the service
will propagate to all ports. Values specified at the binding will propagate to
all ports using that binding. <br clear="none"> For example, if the
<strong>jndiInitialContextFactory</strong> is indicated for a service, it will
be used for all of the port elements it contains.</p><p>JMS Properties. For
details refer to the URI query parameters with the same name:</p><div
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p>Name</p></th></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p>deliveryMode</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>jndiConnectionFactoryName</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>jndiInitialContextFactory</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p>jndiURL</
p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>replyToName</p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p>priority</p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p>timeToLive</p></td></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd"><p>jndiContextParameter</p></td></tr></tbody></table></div><p>Here
is an example:</p><div class="code panel pdl" style="border-width: 1px;"><div
class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Ways to
define a Service with JMS transport</b></div><div class="codeContent
panelContent pdl">
-<pre class="brush: xml; gutter: false; theme: Confluence"
style="font-size:12px;"><wsdl11:binding name="exampleBinding">
+<pre class="brush: xml; gutter: false; theme: Default"
style="font-size:12px;"><wsdl11:binding name="exampleBinding">
<soapjms:jndiContextParameter name="name" value="value" />
<soapjms:jndiConnectionFactoryName>ConnectionFactory</soapjms:jndiConnectionFactoryName>
<soapjms:jndiInitialContextFactory>org.apache.activemq.jndi.ActiveMQInitialContextFactory</soapjms:jndiInitialContextFactory>
@@ -151,7 +151,7 @@ jms:queue:ExampleQueueName?timeToLive=10
</wsdl11:service>
</pre>
</div></div><p>If a property is specified at multiple levels, the setting at
the most granular level takes precedence (port first, then service, then
binding). In the above example, notice the timeToLive property — for the
quickPort port, the value will be 10ms (specified at the port level). For the
slowPort port, the value will be 100ms (specified at the service level). In
this example, the setting in the binding will always be overridden.</p><h2
id="SOAPoverJMS1.0support-WSDLUsage">WSDL Usage</h2><p>For this
example:</p><div class="code panel pdl" style="border-width: 1px;"><div
class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Greeter
Service with JMS transaport</b></div><div class="codeContent panelContent pdl">
-<pre class="brush: xml; gutter: false; theme: Confluence"
style="font-size:12px;"><wsdl:definitions name="JMSGreeterService"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://cxf.apache.org/jms_greeter"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:x1="http://cxf.apache.org/jms_greeter/types"
xmlns:soapjms="http://www.w3.org/2010/soapjms/" name="JMSGreeterService"
targetNamespace="http://cxf.apache.org/jms_greeter">
+<pre class="brush: xml; gutter: false; theme: Default"
style="font-size:12px;"><wsdl:definitions name="JMSGreeterService"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://cxf.apache.org/jms_greeter"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:x1="http://cxf.apache.org/jms_greeter/types"
xmlns:soapjms="http://www.w3.org/2010/soapjms/" name="JMSGreeterService"
targetNamespace="http://cxf.apache.org/jms_greeter">
...
<wsdl:binding name="JMSGreeterPortBinding"
type="tns:JMSGreeterPortType">
<soap:binding style="document"
transport="http://www.w3.org/2010/soapjms/" />
@@ -182,7 +182,7 @@ jms:queue:ExampleQueueName?timeToLive=10
</wsdl:definitions>
</pre>
</div></div><ul><li>The transport URI (<a shape="rect" class="external-link"
href="http://www.w3.org/2010/soapjms/"
rel="nofollow">http://www.w3.org/2010/soapjms/</a>) is defined in the
<soap:binding>.</li><li>The jms: URI is defined in the
<soap:address></li><li>The extension properties are in the
<soap:binding></li></ul><h2
id="SOAPoverJMS1.0support-Defineserviceendpointorproxyinspringorblueprint">Define
service endpoint or proxy in spring or blueprint</h2><p>The JAXWS endpoint or
proxy can be defined like in the SOAP/HTTP case. Just use a jms: uri like
described above.</p><p>In CXF 3 it is possible to omit the jndi settings. Just
specify an endpoint like this:</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeHeader panelHeader pdl"
style="border-bottom-width: 1px;"><b>Endpoint in spring</b></div><div
class="codeContent panelContent pdl">
-<pre class="brush: xml; gutter: false; theme: Confluence"
style="font-size:12px;"><bean id="ConnectionFactory"
class="org.apache.activemq.ActiveMQConnectionFactory">
+<pre class="brush: xml; gutter: false; theme: Default"
style="font-size:12px;"><bean id="ConnectionFactory"
class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://localhost:61616"/>
</bean>
<jaxws:endpoint id="CustomerService"
@@ -190,7 +190,7 @@ jms:queue:ExampleQueueName?timeToLive=10
implementor="com.example.customerservice.impl.CustomerServiceImpl">
</jaxws:endpoint></pre>
</div></div><p>or a Client like this:</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeHeader panelHeader pdl"
style="border-bottom-width: 1px;"><b>Proxy in spring</b></div><div
class="codeContent panelContent pdl">
-<pre class="brush: xml; gutter: false; theme: Confluence"
style="font-size:12px;"><bean id="ConnectionFactory"
class="org.apache.activemq.ActiveMQConnectionFactory">
+<pre class="brush: xml; gutter: false; theme: Default"
style="font-size:12px;"><bean id="ConnectionFactory"
class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://localhost:61616"/>
</bean>
<jaxws:client id="CustomerService"
@@ -198,7 +198,7 @@ jms:queue:ExampleQueueName?timeToLive=10
serviceClass="com.example.customerservice.CustomerService">
</jaxws:client></pre>
</div></div><p>The connection factory will be looked up as a bean in the
context. By default the name "ConnectionFactory" is assumed but it can be
configured using the jndiConnectionFactoryName uri
parameter.</p><p>Alternatively the connection factory can be set using the
ConnectionFactoryFeature.</p><h2
id="SOAPoverJMS1.0support-PublishingaservicewiththeJAVAAPI">Publishing a
service with the JAVA API</h2><p>Developers who don't wish to modify the WSDL
file can also publish the endpoint information using Java code. For CXF's SOAP
over JMS implementation you can write the following:</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;"> // You just need to set the address with JMS URI
+<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;"> // You just need to set the address with JMS URI
String address = "jms:jndi:dynamicQueues/test.cxf.jmstransport.queue3"
+ "?jndiInitialContextFactory"
+ "=org.apache.activemq.jndi.ActiveMQInitialContextFactory"
@@ -218,7 +218,7 @@ jms:queue:ExampleQueueName?timeToLive=10
ep.getFeatures().add(new ConnectionFactoryFeature(cf));
ep.publish("jms:queue:test.cxf.jmstransport.queue?timeToLive=1000");</pre>
</div></div><p>NOTE: For tests it can be useful to create an embedded broker
like this:</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;"> public final void run() {
+<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;"> public final void run() {
try {
broker = new BrokerService();
broker.setPersistent(false);
@@ -236,7 +236,7 @@ jms:queue:ExampleQueueName?timeToLive=10
}
</pre>
</div></div><h2 id="SOAPoverJMS1.0support-ConsumetheservicewiththeAPI">Consume
the service with the API</h2><p>Sample code to consume a SOAP-over-JMS service
is 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;"> public void invoke() throws Exception {
+<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;"> public void invoke() throws Exception {
// You just need to set the address with JMS URI
String address = "jms:jndi:dynamicQueues/test.cxf.jmstransport.queue3"
+
"?jndiInitialContextFactory=org.apache.activemq.jndi.ActiveMQInitialContextFactory"
@@ -258,7 +258,7 @@ jms:queue:ExampleQueueName?timeToLive=10
ConnectionFactoryFeature cff = new ConnectionFactoryFeature(cf);
Greeter greeter = service.getPort(portName, Greeter.class, cff); //
Connection Factory can be set as a feature in CXF >= 3.0.0 </pre>
</div></div><p>If you specify queue or topic as variant and use cxf >=
3.0.0 then the jndi settings are not necessary.</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;">svrFactory.setAddress("jms:queue:test.cxf.jmstransport.queue?timeToLive=1000");
+<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;">svrFactory.setAddress("jms:queue:test.cxf.jmstransport.queue?timeToLive=1000");
// For CXF >= 3.0.0
svrFactory.setFeatures(Collections.singletonList(new
ConnectionFactoryFeature(cf)));</pre>
</div></div><p>In this case case the connection factory is supplied using a
feature. For CXF 2.x the connection factory can only be supplied using
jndi.</p><p> </p></div>
Modified: websites/production/cxf/content/docs/springboot.html
==============================================================================
--- websites/production/cxf/content/docs/springboot.html (original)
+++ websites/production/cxf/content/docs/springboot.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/shBrushXml.js'></script>
+<script src='/resources/highlighter/scripts/shBrushJava.js'></script>
<script src='/resources/highlighter/scripts/shBrushPlain.js'></script>
<script>
SyntaxHighlighter.defaults['toolbar'] = false;
@@ -119,11 +119,11 @@ Apache CXF -- SpringBoot
<!-- Content -->
<div class="wiki-content">
<div id="ConfluenceContent"><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1505311259311 {padding: 0px;}
-div.rbtoc1505311259311 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1505311259311 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1505314932220 {padding: 0px;}
+div.rbtoc1505314932220 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1505314932220 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></p><div class="toc-macro rbtoc1505311259311">
+/*]]>*/</style></p><div class="toc-macro rbtoc1505314932220">
<ul class="toc-indentation"><li><a shape="rect"
href="#SpringBoot-SpringBootCXFJAX-WSStarter">Spring Boot CXF JAX-WS Starter</a>
<ul class="toc-indentation"><li><a shape="rect"
href="#SpringBoot-Features">Features</a></li><li><a shape="rect"
href="#SpringBoot-Setup">Setup</a></li><li><a shape="rect"
href="#SpringBoot-AdditionalConfiguration">Additional
Configuration</a></li><li><a shape="rect"
href="#SpringBoot-APIDocumentation">API Documentation</a></li><li><a
shape="rect" href="#SpringBoot-ServiceRegistryPublication">Service Registry
Publication</a></li><li><a shape="rect"
href="#SpringBoot-Examples">Examples</a></li></ul>
</li><li><a shape="rect" href="#SpringBoot-SpringBootCXFJAX-RSStarter">Spring
Boot CXF JAX-RS Starter</a>
@@ -134,13 +134,13 @@ div.rbtoc1505311259311 li {margin-left:
</li></ul>
</li></ul>
</div><h1 id="SpringBoot-SpringBootCXFJAX-WSStarter">Spring Boot CXF JAX-WS
Starter</h1><h2 id="SpringBoot-Features">Features</h2><p>Registers CXFServlet
with a  "/services/*" URL pattern for serving CXF JAX-WS endpoints.</p><h2
id="SpringBoot-Setup">Setup</h2><div class="code panel pdl"
style="border-width: 1px;"><div class="codeHeader panelHeader pdl"
style="border-bottom-width: 1px;"><b>JAX-WS Starter</b></div><div
class="codeContent panelContent pdl">
-<pre class="brush: xml; gutter: false; theme: Confluence"
style="font-size:12px;"><dependency>
+<pre class="brush: xml; gutter: false; theme: Default"
style="font-size:12px;"><dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
<version>3.1.12</version>
</dependency></pre>
</div></div><h2 id="SpringBoot-AdditionalConfiguration">Additional
Configuration</h2><p>Use "<strong>cxf.path</strong>" property to customize a
CXFServlet URL pattern</p><p>Use "<strong>cxf.servlet.init</strong>" map
property to customize CXFServlet properties such as "services-list-path"
(available by default at  "/services"), etc.</p><p>If needed, one can use
Spring ImportResource annotation to import the existing JAX-WS contexts
available on the classpath.</p><h2 id="SpringBoot-APIDocumentation">API
Documentation</h2><p>JAX-WS endpoints support WSDL.</p><h2
id="SpringBoot-ServiceRegistryPublication">Service Registry
Publication</h2><p>Publication of JAX-WS endpoints into well-known service
registries such as Netflix Eureka Registry can be achieved similarly to the way
JAX-RS endpoints are registered and is shown in a <a shape="rect"
class="external-link"
href="https://github.com/apache/cxf/tree/master/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application"
rel="nofollow">JAX-RS Spring Boot Scan</a> demo.</p><h2
id="SpringBoot-Examples">Examples</h2><p>Consider the following Configuration
instance:</p><div class="code panel pdl" style="border-width: 1px;"><div
class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>JAX-WS
Configuration</b></div><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Confluence"
style="font-size:12px;">package sample.ws;
+<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;">package sample.ws;
import javax.xml.ws.Endpoint;
import org.apache.cxf.Bus;
@@ -164,13 +164,13 @@ public class WebServiceConfig {
}
}</pre>
</div></div><p> </p><p>Having a CXF JAX-WS starter alongside this
Configuration is sufficient for enabling a CXF JAX-WS endpoint which will
respond to SOAP request URI such
as</p><p>"http://localhost:8080/services/Hello".</p><p>Please also see a <a
shape="rect" class="external-link"
href="https://github.com/apache/cxf/tree/master/distribution/src/main/release/samples/jaxws_spring_boot"
rel="nofollow">JAX-WS Spring Boot</a> demo.</p><h1
id="SpringBoot-SpringBootCXFJAX-RSStarter">Spring Boot CXF JAX-RS
Starter</h1><h2 id="SpringBoot-Features.1">Features</h2><p>Registers CXF
Servlet with a  "/services/*" URL pattern for serving CXF JAX-RS
endpoints.</p><p>Optionally auto-discovers JAX-RS root resources and providers
and creates a JAX-RS endpoint.</p><p>Note the use of CXF JAX-RS Clients in
SpringBoot Application is covered in <a shape="rect"
href="jaxrsclientspringboot.html">this section</a>.</p><h2
id="SpringBoot-Setup.1">Setup</h2><div class="code panel pdl" style="bor
der-width: 1px;"><div class="codeHeader panelHeader pdl"
style="border-bottom-width: 1px;"><b>JAX-RS Starter</b></div><div
class="codeContent panelContent pdl">
-<pre class="brush: xml; gutter: false; theme: Confluence"
style="font-size:12px;"><dependency>
+<pre class="brush: xml; gutter: false; theme: Default"
style="font-size:12px;"><dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxrs</artifactId>
<version>3.1.12</version>
</dependency></pre>
</div></div><h2 id="SpringBoot-AdditionalConfiguration.1">Additional
Configuration</h2><p>Use "<strong>cxf.path</strong>" property to customize a
CXFServlet URL pattern.</p><p>Use "<strong>cxf.servlet.init</strong>" map
property to customize CXFServlet properties such as "services-list-path"
(available by default at  "/services"), etc.</p><p>Use
"<strong>cxf.jaxrs.server.path</strong>" property to customize a JAX-RS server
endpoint address (default is "/").</p><p>JAX-RS root resources and providers
annotated with JAX-RS @Path and @Provider and native CXF Providers annotated
with CXF <a shape="rect" class="external-link"
href="https://github.com/apache/cxf/blob/cxf-3.1.6/core/src/main/java/org/apache/cxf/annotations/Provider.java"
rel="nofollow">@Provider</a> can be auto-discovered.</p><p>Use
"<strong>cxf.jaxrs.component-scan</strong>" property to create a JAX-RS
endpoint from the auto-discovered JAX-RS root resources and providers
which are marked as Spring Components (ann
otated with Spring @Component or created and returned from @Bean
methods).</p><p>Use
"<strong>cxf.jaxrs.component-scan</strong>-<strong>packages</strong>" property
to restrict which of the auto-discovered Spring components are accepted as
JAX-RS resource or provider classes. It sets a comma-separated list of the
packages that a given bean instance's class must be in. Note, this property, if
set, is only effective if a given bean is a singleton. It can be used alongside
or as an alternative to the
"<strong>cxf.jaxrs.component-scan</strong>-<strong>beans</strong>" property.
This property is available starting from CXF 3.1.11.</p><p>Use
"<strong>cxf.jaxrs.component-scan</strong>-<strong>beans</strong>" property to
restrict which of the auto-discovered Spring components are accepted as JAX-RS
resource or provider classes. It sets a comma-separated list of the accepted
bean names - the auto-discovered component will only be accepted if its bean
name is in this list. It can be used alongs
ide or as an alternative to the
"<strong>cxf.jaxrs.component-scan</strong>-<strong>packages</strong>" property.
This property is available starting from CXF 3.1.11.</p><p>Use
"<strong>cxf.jaxrs.classes-scan</strong>" property to create a JAX-RS endpoint
from the auto-discovered JAX-RS root resources and provider classes. Such
classes do not have to be annotated with Spring @Component. This property needs
to be accompanied by a "<strong>cxf.jaxrs.classes-scan-packages</strong>"
property which sets a comma-separated list of the packages to scan.</p><p>Note
that while "<strong>cxf.jaxrs.component-scan</strong>" and
"<strong>cxf.jaxrs.classes-scan</strong>" are mutually exclusive,
"<strong>cxf.jaxrs.component-scan</strong>" can be used alongside the
"<strong>cxf.jaxrs.classes-scan-packages</strong>" property to enable the
auto-discovery of the JAX-RS resources and providers which may or may not be
marked as Spring Components.</p><p>If needed, instead of having the resources
auto-di
scovered,  one can use Spring ImportResource annotation to import the
existing JAX-RS contexts available on the classpath.</p><h2
id="SpringBoot-APIDocumentation.1">API Documentation</h2><h3
id="SpringBoot-Swagger">Swagger</h3><p>See CXF <a shape="rect"
href="swagger2feature.html#SwaggerFeature/Swagger2Feature-EnablinginSpringBoot"
rel="nofollow">Swagger2Feature documentation</a> on how to enable
Swagger2Feature in SpringBoot and how to auto-activate Swagger UI.</p><h3
id="SpringBoot-WADL">WADL</h3><p>CXF automatically loads a WADL provider if a
<strong>cxf-rt-rs-service-description</strong> module is available on the
runtime classpath.</p><h2 id="SpringBoot-ServiceRegistryPublication.1">Service
Registry Publication</h2><p>Publication of JAX-RS endpoints into well-known
service registries such as Netflix Eureka Registry is shown in a <a
shape="rect" class="external-link"
href="https://github.com/apache/cxf/tree/master/distribution/src/main/release/samples/jax_rs/spring_boot_sca
n/application" rel="nofollow">JAX-RS Spring Boot Scan</a> demo.</p><h2
id="SpringBoot-Examples.1">Examples</h2><h3
id="SpringBoot-ManualConfiguration">Manual Configuration</h3><p>Consider the
following Configuration instance:</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeHeader panelHeader pdl"
style="border-bottom-width: 1px;"><b>JAX-RS Configuration</b></div><div
class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Confluence"
style="font-size:12px;">package sample.rs.service;
+<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;">package sample.rs.service;
import java.util.Arrays;
import org.apache.cxf.Bus;
@@ -206,12 +206,12 @@ public class SampleRestApplication {
}
}</pre>
</div></div><p> </p><p>Having a CXF JAX-RS starter alongside this
Configuration is sufficient for enabling a CXF JAX-RS endpoint which will
respond to HTTP request URI such as</p><p>"<a shape="rect"
class="external-link" href="http://localhost:8080/services/Hello"
rel="nofollow">http://localhost:8080/services/sayHello/ApacheCxfUser</a>". The
above code also makes Swagger docs available at "<a shape="rect"
class="external-link" href="http://localhost:8080/services/Hello"
rel="nofollow">http://localhost:8080/services/swagger.json</a>".</p><p>Please
also see a <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> demo.</p><p> </p><h3
id="SpringBoot-AutoConfiguration">Auto Configuration</h3><p>Spring Boot
Application example shown in the Manual Configuration section can be simplified
if the auto-discovery is enabled.</p><p>For example, given the
following application.yml properties:</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeHeader panelHeader pdl"
style="border-bottom-width: 1px;"><b>Application Properties</b></div><div
class="codeContent panelContent pdl">
-<pre class="brush: text; gutter: false; theme: Confluence"
style="font-size:12px;"> cxf:
+<pre class="brush: text; gutter: false; theme: Default"
style="font-size:12px;"> cxf:
jaxrs:
component-scan: true
classes-scan-packages: org.apache.cxf.jaxrs.swagger</pre>
</div></div><p> </p><p>the application becomes
simply:</p><p> </p><div class="code panel pdl" style="border-width:
1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width:
1px;"><b>JAX-RS Auto Configuration</b></div><div class="codeContent
panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Confluence"
style="font-size:12px;">package sample.rs.service;
+<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;">package sample.rs.service;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
Modified: websites/production/cxf/content/docs/standalone-http-transport.html
==============================================================================
--- websites/production/cxf/content/docs/standalone-http-transport.html
(original)
+++ websites/production/cxf/content/docs/standalone-http-transport.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/shBrushXml.js'></script>
+<script src='/resources/highlighter/scripts/shBrushJava.js'></script>
<script>
SyntaxHighlighter.defaults['toolbar'] = false;
SyntaxHighlighter.all();
@@ -118,7 +118,7 @@ Apache CXF -- Standalone HTTP Transport
<!-- Content -->
<div class="wiki-content">
<div id="ConfluenceContent"><h1
id="StandaloneHTTPTransport-ConfiguringSSL">Configuring SSL</h1><p>To configure
the standalone HTTP transport to use SSL, you'll need to add an
<http:destination> definition to your XML configuration file. See the <a
shape="rect" href="configuration.html">Configuration</a> guide to learn how to
supply your own XML configuration file to CXF. If you are already using Spring,
this can be added to your existing beans definitions. For more information
about configuring TLS, see the <a shape="rect"
href="https://cwiki.apache.org/confluence/display/CXF20DOC/TLS+Configuration">Configuring
TLS</a> page.</p><p>Destinations in CXF are responsible for listening for
server side requests.</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;"><beans
xmlns="http://www.springframework.org/schema/beans"
+<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;"><beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:sec="http://cxf.apache.org/configuration/security"
xmlns:http="http://cxf.apache.org/transports/http/configuration"
@@ -168,7 +168,7 @@ Apache CXF -- Standalone HTTP Transport
</bean>
</pre>
</div></div><h1
id="StandaloneHTTPTransport-Addthestaticcontentpagesintothejettyserver">Add the
static content pages into the jetty server</h1><p>The CXF standalone http
transport is based on the jetty server. The code below shows how to get the
jetty server from the destination and how to add the static content path to the
jetty server.</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;"> // get the jetty server form the destination
+<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;"> // get the jetty server form the destination
EndpointInfo ei = new EndpointInfo();
ei.setAddress(serviceFactory.getAddress());
Destination destination = df.getDestination(ei);
Modified:
websites/production/cxf/content/docs/standardized-authentication-authorization.html
==============================================================================
---
websites/production/cxf/content/docs/standardized-authentication-authorization.html
(original)
+++
websites/production/cxf/content/docs/standardized-authentication-authorization.html
Wed Sep 13 15:05:52 2017
@@ -117,7 +117,7 @@ Apache CXF -- Standardized Authenticatio
<!-- Content -->
<div class="wiki-content">
<div id="ConfluenceContent"><p> </p><p> </p><p> </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">Ideas /
Proposal</div></div><p> </p><p>CXF already supports a wide range of
authentication and authorization approaches. Unfortunately they are all
configured differently and do not integrate well with each other.</p><p>So the
idea is to create one standardized authentication / authorization flow in CXF
where the modules can then fit in. There are a lot of security frameworks out
there that could be used as a basis for this. The problem is though that each
framework  (like Shiro or Spring Security) uses its own mechanisms which
are not standardized. So by choosing one framework we would force our users to
depend on this.</p><p>The best standardized security framework in java is JAAS.
It is already included in Java and most security frameworks can be hooked into
it. So let´s investigate what we could do with JAAS.</p><h2
id="StandardizedAuthentication/Authorization-AuthenticationusingJAAS">Authentication
using JAAS</h2><p>JAAS authentication is done by creating a LoginContext and
doing a login on it. Things to configure is the name of the login config and
the Callback Handlers. So CXF needs mechanisms for the user to set the config
name and needs to provide CallBackHandlers to supply credentials.</p><h2
id="StandardizedAuthentication/Authorization-CallbackHandlers">CallbackHandlers</h2><p>CXF
needs to supply different data to identify the users depending on the chosen
authentication variant.</p><p>Basic Auth: username and password from HTTP
header</p><p>WS-Security UserNameToken: Username and password from SOAP
header</p><p>Spnego: Kerberos token from HTTP header</p><p>HTTPS client cert:
Certificate information</p><p>We could simply detect what information i
s provided and configure the Callbackhandlers for each information we can
supply. Depending on when the login should happen we could collect
CallbackHandlers in the Message using Interceptors.</p><h2
id="StandardizedAuthentication/Authorization-JAASconfiguration">JAAS
configuration</h2><p>The JAAS configuration is supplied differently depending
on the runtime CXF runs in.</p><p>Standalone: For standalone usage the JAAS
config can simply come from a file.</p><p>Servlet Container: Not sure. Is there
a standard approach for this?</p><p>Apache Karaf: Karaf already provides a JAAS
integration so we just have to configure the JAAS config name and supply a
suitable config in karaf</p><h2
id="StandardizedAuthentication/Authorization-SupplyingRoleandUserinformation">Supplying
Role and User information</h2><p>JAAS stores identity information in the JAAS
subject. The method getPrincipals returns Principal objects which can be users,
roles or even other identity information. To differentiate be
tween roles and users there are two common approaches.</p><ol><li>different
Classes like a UserPrincipal or RolePrincipal. There seems to be a Group
interface which allows to differentiate between Users and Groups and also
allows to see group members.</li><li>prefixes. So for example roles start with
role- . There is no standard for this approach</li></ol><h2
id="StandardizedAuthentication/Authorization-Authorization">Authorization</h2><p>Authorization
has very diverse requirements. So we need to make sure we integrate well with
different approaches.</p><p>Generally the idea is to base the Authorization on
the JAAS login data. After a JAAS login the JAAS subject can be retrieved in a
standard way:</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;">AccessControlContext acc = AccesController.getContext();
+<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;">AccessControlContext acc = AccesController.getContext();
Subject subject = Subject.getSubject(acc);</pre>
</div></div><p>So the idea is that we provide certain default authorization
variants that rely on the above to retrieve authentication information in a
standardized way. So authorization is nicely decoupled from authentication and
fully standards based.</p><p>This then also provides a nice interface for users
or other frameworks to access authentication information and provide custom
authorization variants.</p><h2
id="StandardizedAuthentication/Authorization-DefaultAuthorizationVariants">Default
Authorization Variants</h2><h3
id="StandardizedAuthentication/Authorization-JEEannotations">JEE
annotations</h3><p>Java EE provides some standard annotations like
@RolesAllowed. We can provide an interceptor that reads the annotations of
serivce impls and provides authorization like in a JEE container.</p><h3
id="StandardizedAuthentication/Authorization-XACMLPEP">XACML PEP</h3><p>An
XACML policy enforcement point can retrieve the JAAS login data and do
authorization against an XACML Policy D
ecision Point (PDP).</p><h2
id="StandardizedAuthentication/Authorization-SeparatingAuthorizationfromCXF">Separating
Authorization from CXF</h2><p>As authorization is not only relevant for
webservices it makes sense to keep the authorization code separate from cxf
too. So one way to implement authorization would be to put it into a blueprint
extension. Of course this would cover only OSGi and blueprint but it would be a
start.</p><p>It could work similar to the XA transaction support. Unlike in tx
support we could scan all beans for security annotations like @RolesAllowed.
Then for each bean that has this annotation we could proxy it with a class that
does the security check. This would allow to have minimal xml
configuration.</p><p>Another approach is to mark beans for security checks
using xml like in tx support. This variant then would also work nicely for
XACML authorization as in that case there would be no annotation to scan
for.</p><h3 id="StandardizedAuthentication/Authorizat
ion-KarafrolebasedOSGiserviceAuthorization">Karaf role based OSGi service
Authorization</h3><p>Karaf 3 already supports authorization on the OSGi service
level and uses JAAS for authentication. So if we do a JAAS login in CXF and the
service impl code calls an OSGi service then the Karaf role based securtiy
should already work out of the box.We could add annotation based Authorization
to karaf code to make it even better and require less config.</p><h2
id="StandardizedAuthentication/Authorization-Exceptionhandlingandanswergeneration">Exception
handling and answer generation</h2><p>Currently the authentication and
athorization modules often also generate the answer to the caller. It might be
a good idea to decouple this.</p><p>In the authentication and authorization we
only throw a defined Exception:</p><ul><li>Failure at Authentication:
javax.security.auth.login.LoginException could also be more specific like
AccountLockedException</li><li>Failure at Authorization: org.apache.cxf.in
terceptor.security.AccessDeniedException or
java.security.AccessControlException. The later one is better for code separate
from cxf as it does not depend on CXF.</li></ul><p>Then in the transport like
the http transport we map the exception to the defined status code and http
response:</p><ul><li>LoginException: HTTP Code
401</li><li>AccessDeniedException, AccessControlException: HTTP Code
403</li></ul><p>Unfortunately CXF currently does not handle the status code
generation in the transport. The exception is already mapped into a Fault at
PhaseInterceptorChain. The Fault then holds the statusCode which is by default
500. So one simple way to do the mapping isto map from exception type to fault
code in the Fault constructor. This is not extensible but would do for the
start.</p><h2 id="StandardizedAuthentication/Authorization-JAASFeature">JAAS
Feature</h2><p>The JAAS feature needs some configuration like the jaas context
name. So it makes sense to integrate it with config admin in
OSGi and publish it as an OSGi service. So we can keep the JAAS configuration
centralized and keep it out of each bundle.</p><p>As long as the configs are
very limited we could of course also integrate it in each bundles cxf bus. This
would have the advantage that it also works outside OSGi.</p><h2
id="StandardizedAuthentication/Authorization-Authenticationactivation">Authentication
activation</h2><p>Ideally we should integrate the new authentication /
authorization model in a way that enable the user to switch on authentication
for the karaf server without specific configurations in the user bundles that
implement the services. One problem with this very loosely coupled approach is
that switching on authentication would secure all services but perhaps some are
expected to work without. The other problem is that the services might start
before the auth module and then run unsecured.</p><p>So we need a way to mark
services that need authentication. One existing way to do so is to bin
d the auhorization Feature as an OSGi service and add it to the features "by
hand". This is a bit verbose but on the other hand it is very clear what
happens.</p><p>One other approach would be to publish the feature as a an OSGi
service with a unique ID (which is already present for features). Then we could
have a new Element for cxf:bus and endpoints like
that:</p><p><namedFeatures>authentication,
xacmlAuthorization</namedFeatures></p><p>This Element would mean that cxf
will only publish the endpoint once both of these named features are present
and will add the features to the endpoint /bus.</p><h2
id="StandardizedAuthentication/Authorization-Problems">Problems</h2><p>Doing a
full JAAS login requires to use subject.doAs to populate the
AcessControlContext. This is not possible in a CXF interceptor as the
interceptor only works on a message but can not call the next interceptor for
doAs. So the question is where to do the JAAS login and the doAs?</p><h2
id="Standardized
Authentication/Authorization-Links">Links</h2><p><a shape="rect"
class="external-link"
href="http://docs.oracle.com/javase/6/docs/technotes/guides/security/jaas/JAASRefGuide.html"
rel="nofollow">http://docs.oracle.com/javase/6/docs/technotes/guides/security/jaas/JAASRefGuide.html</a></p></div>
</div>
Modified: websites/production/cxf/content/docs/swagger2feature.html
==============================================================================
--- websites/production/cxf/content/docs/swagger2feature.html (original)
+++ websites/production/cxf/content/docs/swagger2feature.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/shBrushXml.js'></script>
+<script src='/resources/highlighter/scripts/shBrushJava.js'></script>
<script>
SyntaxHighlighter.defaults['toolbar'] = false;
SyntaxHighlighter.all();
@@ -118,16 +118,16 @@ Apache CXF -- Swagger2Feature
<!-- Content -->
<div class="wiki-content">
<div id="ConfluenceContent"><h1
id="Swagger2Feature-Swagger2Feature">Swagger2Feature</h1><p><style
type="text/css">/*<![CDATA[*/
-div.rbtoc1505311212333 {padding: 0px;}
-div.rbtoc1505311212333 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1505311212333 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1505314846404 {padding: 0px;}
+div.rbtoc1505314846404 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1505314846404 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></p><div class="toc-macro rbtoc1505311212333">
+/*]]>*/</style></p><div class="toc-macro rbtoc1505314846404">
<ul class="toc-indentation"><li><a shape="rect"
href="#Swagger2Feature-Swagger2Feature">Swagger2Feature</a></li><li><a
shape="rect" href="#Swagger2Feature-Setup">Setup</a></li><li><a shape="rect"
href="#Swagger2Feature-Properties">Properties</a></li><li><a shape="rect"
href="#Swagger2Feature-ConfiguringfromCode">Configuring from
Code</a></li><li><a shape="rect"
href="#Swagger2Feature-ConfiguringinSpring">Configuring in
Spring</a></li><li><a shape="rect"
href="#Swagger2Feature-ConfiguringinBlueprint">Configuring in
Blueprint</a></li><li><a shape="rect"
href="#Swagger2Feature-ConfiguringinCXFNonSpringJaxrsServlet">Configuring in
CXFNonSpringJaxrsServlet</a></li><li><a shape="rect"
href="#Swagger2Feature-New:ConfiguringfromPropertiesfile">New: Configuring from
Properties file</a></li><li><a shape="rect"
href="#Swagger2Feature-EnablinginSpringBoot">Enabling in Spring
Boot</a></li><li><a shape="rect"
href="#Swagger2Feature-AccessingSwaggerDocuments">Accessing Swagger
Documents</a></li><l
i><a shape="rect" href="#Swagger2Feature-EnablingSwaggerUI">Enabling Swagger
UI</a>
<ul class="toc-indentation"><li><a shape="rect"
href="#Swagger2Feature-AutomaticUIActivation">Automatic UI
Activation</a></li><li><a shape="rect"
href="#Swagger2Feature-UnpackingSwaggerUIresources">Unpacking Swagger UI
resources</a></li></ul>
</li><li><a shape="rect" href="#Swagger2Feature-ReverseProxy">Reverse
Proxy</a></li><li><a shape="rect"
href="#Swagger2Feature-SetaCXFServletinitparameter'use-x-forwarded-headers'to'true'ifyouaccessSwaggerJSONand/o">Set
a CXFServlet init parameter 'use-x-forwarded-headers' to 'true' if you access
Swagger JSON and/o</a></li><li><a shape="rect"
href="#Swagger2Feature-Samples">Samples</a></li></ul>
</div><p> </p><p>The CXF Swagger2Feature allows you to generate <a
shape="rect" class="external-link" href="http://swagger.io/specification/"
rel="nofollow">Swagger 2.0</a> documents from JAX-RS service endpoints
with a simple configuration.</p><p>For generating <a shape="rect"
class="external-link"
href="https://github.com/swagger-api/swagger-spec/blob/master/versions/1.2.md"
rel="nofollow">Swagger 1.2</a> documents, you can use SwaggerFeature instead of
Swagger2Feature (for CXF versions <= 3.1.x).</p><p>These features can be
configured programatically in Java or using Spring or Blueprint beans.</p><h1
id="Swagger2Feature-Setup">Setup</h1><div class="code panel pdl"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: xml; gutter: false; theme: Confluence"
style="font-size:12px;"><dependency>
+<pre class="brush: xml; gutter: false; theme: Default"
style="font-size:12px;"><dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-rs-service-description-swagger</artifactId>
<version>3.1.11</version>
@@ -135,7 +135,7 @@ div.rbtoc1505311212333 li {margin-left:
</pre>
</div></div><p>Note that a <strong>cxf-rt-rs-service-description</strong>
needs to be used if older CXF 3.1.x versions are used.</p><p> </p><h1
id="Swagger2Feature-Properties">Properties</h1><p><span style="line-height:
1.4285715;">The following optional parameters can be configured in
Swagger2Feature</span></p><p><span style="line-height: 1.4285715;">Note some
properties listed below are not available or used differently in
SwaggerFeature, as the corresponding properties are used differently in Swagger
2.0 and Swagger 1.2. Please refer to the corresponding Swagger documentation
for more information.)</span></p><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh">Name</th><th colspan="1" rowspan="1"
class="confluenceTh">Description</th><th colspan="1" rowspan="1"
class="confluenceTh">Default</th></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">basePath</td><td colspan="1" rowspan="1"
class="confluenceTd">the
context root path<sup>+</sup></td><td colspan="1" rowspan="1"
class="confluenceTd">null</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">contact</td><td colspan="1" rowspan="1"
class="confluenceTd">the contact information<span>+</span></td><td colspan="1"
rowspan="1" class="confluenceTd">"[email protected]"</td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">description</td><td colspan="1"
rowspan="1" class="confluenceTd">the description<span>+</span></td><td
colspan="1" rowspan="1" class="confluenceTd">"The Application"</td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">filterClass</td><td colspan="1"
rowspan="1" class="confluenceTd">a security filter<span>+</span></td><td
colspan="1" rowspan="1" class="confluenceTd">null</td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd">host</td><td colspan="1" rowspan="1"
class="confluenceTd">the host and port<span>+</span></td><td colspan="1"
rowspan="1" class="confluenceTd">null</td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">ignoreRoutes</td><td colspan="1"
rowspan="1" class="confluenceTd">excludes specific paths when scanning all
resources (see scanAllResources)<span>+</span><span>+</span></td><td
colspan="1" rowspan="1" class="confluenceTd">null</td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd">license</td><td colspan="1" rowspan="1"
class="confluenceTd">the license<span>+</span></td><td colspan="1" rowspan="1"
class="confluenceTd">"Apache 2.0 License"</td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd">licenceUrl</td><td colspan="1" rowspan="1"
class="confluenceTd">the license URL<span>+</span></td><td colspan="1"
rowspan="1" class="confluenceTd">"<span
class="nolink">http://www.apache.org/licenses/LICENSE-2.0.html</span>"</td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">prettyPrint</td><td colspan="1"
rowspan="1" class="confluenceTd">when generating swagger.json, pretty-print the
json document<span>+</span></td><td cols
pan="1" rowspan="1" class="confluenceTd">false</td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd">resourcePackage</td><td colspan="1"
rowspan="1" class="confluenceTd">a list of comma separated package names where
resources must be scanned<span>+</span></td><td colspan="1" rowspan="1"
class="confluenceTd">a list of service classes configured at the
endpoint</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">runAsFilter</td><td colspan="1" rowspan="1"
class="confluenceTd">runs the feature as a filter</td><td colspan="1"
rowspan="1" class="confluenceTd">false</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">scan</td><td colspan="1" rowspan="1"
class="confluenceTd">generates the swagger documentation<span>+</span></td><td
colspan="1" rowspan="1" class="confluenceTd">true</td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd">scanAllResources</td><td colspan="1"
rowspan="1" class="confluenceTd">scans all resources including non-annotated
JAX-RS r
esources<span>+</span><span>+</span></td><td colspan="1" rowspan="1"
class="confluenceTd">false</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">schemes</td><td colspan="1" rowspan="1"
class="confluenceTd">the protocol schemes<span>+</span></td><td colspan="1"
rowspan="1" class="confluenceTd">null</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">termsOfServiceUrl</td><td colspan="1" rowspan="1"
class="confluenceTd">the terms of service URL<span>+</span></td><td colspan="1"
rowspan="1" class="confluenceTd">null</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">title</td><td colspan="1" rowspan="1"
class="confluenceTd">the title<span>+</span></td><td colspan="1" rowspan="1"
class="confluenceTd">"Sample REST Application"</td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd">version</td><td colspan="1" rowspan="1"
class="confluenceTd">the version<span>+</span></td><td colspan="1" rowspan="1"
class="confluenceTd">"1.0.0"</td></tr></tbody></ta
ble></div><p>Note: those descriptions marked with <span>+ correspond to
the properties defined in Swagger's BeanConfig, and those marked
with <span>+</span><span>+ correspond to the properties defined in
Swagger's ReaderConfig.</span></span></p><h1
id="Swagger2Feature-ConfiguringfromCode">Configuring from
Code</h1><p> </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;">import org.apache.cxf.frontend.ServerFactoryBean;
+<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;">import org.apache.cxf.frontend.ServerFactoryBean;
import org.apache.cxf.jaxrs.swagger.Swagger2Feature;
...
@@ -148,7 +148,7 @@ import org.apache.cxf.jaxrs.swagger.Swag
ServerFactoryBean sfb = new ServerFactoryBean();
sfb.getFeatures().add(feature);</pre>
</div></div><p> </p><h1
id="Swagger2Feature-ConfiguringinSpring">Configuring in
Spring</h1><p> </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;"><beans
xmlns="http://www.springframework.org/schema/beans"
+<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;"><beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cxf="http://cxf.apache.org/core"
xmlns:jaxrs="http://cxf.apache.org/jaxrs"
xsi:schemaLocation="http://cxf.apache.org/core
http://cxf.apache.org/schemas/core.xsd
@@ -183,7 +183,7 @@ import org.apache.cxf.jaxrs.swagger.Swag
</pre>
</div></div><p> </p><h1
id="Swagger2Feature-ConfiguringinBlueprint">Configuring in
Blueprint</h1><p> </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;"><blueprint
xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;"><blueprint
xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cxf="http://cxf.apache.org/blueprint/core"
xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs"
@@ -219,7 +219,7 @@ import org.apache.cxf.jaxrs.swagger.Swag
</blueprint>
 </pre>
</div></div><h1
id="Swagger2Feature-ConfiguringinCXFNonSpringJaxrsServlet">Configuring in
CXFNonSpringJaxrsServlet</h1><p> </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;"><web-app>
+<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;"><web-app>
<context-param>
<param-name>contextParam</param-name>
<param-value>contextParamValue</param-value>
@@ -253,7 +253,7 @@ import org.apache.cxf.jaxrs.swagger.Swag
</web-app></pre>
</div></div><h1 id="Swagger2Feature-New:ConfiguringfromPropertiesfile">New:
Configuring from Properties file</h1><p>Starting from CXF 3.1.13 and 3.2.0 it
is possible to configure Swagger2Feature with a Properties file.</p><p>For
example, while a <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">samples/jax_rs/spring_boot</a> demo configures the feature <a
shape="rect" class="external-link"
href="https://github.com/apache/cxf/blob/master/distribution/src/main/release/samples/jax_rs/spring_boot/src/main/java/sample/rs/service/SampleRestApplication.java#L54"
rel="nofollow">from the code</a>, a  <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">samples/jax_rs/spring_boot_scan</a> demo has it configured from
<a shape="rect" class="external-link" href="https://gith
ub.com/apache/cxf/blob/master/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/src/main/resources/swagger.properties"
rel="nofollow">the properties file</a>.</p><p>Default location for a
properties file is "<strong>/swagger.properties</strong>". Swagger2Feature will
pick it up if it is available, and the location can be overridden with a new
Swagger2Feature '<strong>swaggerPropertiesLocation</strong>'
property. </p><p>Note that the properties, if available, do not override
the properties which may have been set as suggested above from the code or
Spring/Blueprint contexts or web.xml. Instead they complement and serve as the
default configuration properties: for example, if some properties have been set
from the code then the values for the same properties found in the properties
file will not be used.</p><h1
id="Swagger2Feature-EnablinginSpringBoot">Enabling in Spring Boot</h1><p>See <a
shape="rect" class="external-link" href="https://github.com/apache/
cxf/tree/master/distribution/src/main/release/samples/jax_rs/spring_boot"
rel="nofollow">samples/jax_rs/spring_boot</a> and on how to create
Swagger2Feature in a @Bean method and <a shape="rect"
class="external-link"
href="https://github.com/apache/cxf/tree/master/distribution/src/main/release/samples/jax_rs/spring_boot_scan"
rel="nofollow">samples/jax_rs/spring_boot_scan</a> on how to auto-enable
it.</p><p> </p><h1
id="Swagger2Feature-AccessingSwaggerDocuments">Accessing Swagger
Documents</h1><p>When Swagger is enabled by Swagger feature, the Swagger
documents will be available at the location URL constructed of the service
endpoint location followed by /swagger.json or /swagger.yaml.</p><p>For
example, lets assume a JAX-RS endpoint is published at
'http://host:port/context/services/' where 'context' is a web application
context,  "/services" is a servlet URL. In this case its Swagger documents
are available at 'http://host:port/context/services/swagger.json' and 'ht
tp://host:port/context/services/swagger.yaml'.</p><p>Starting from CXF 3.1.7
the CXF Services page will link to Swagger documents if Swagger2Feature is
active. </p><p>In the above example, go
to '<span>http://host:port/context/services/</span>services' and follow a
Swagger link which will return a Swagger JSON document.</p><p>If <a
shape="rect" class="external-link"
href="https://github.com/swagger-api/swagger-ui/blob/master/README.md#cors-support"
rel="nofollow">CORS support</a> is needed to access the definition from a
Swagger UI on another host, the <a shape="rect"
href="jax-rs-cors.html">CrossOriginResourceSharingFilter from
cxf-rt-rs-security-cors</a> can be added.</p><p> </p><h1
id="Swagger2Feature-EnablingSwaggerUI">Enabling Swagger UI</h1><p>First one
needs to add the following</p><div class="code panel pdl" style="border-width:
1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: xml; gutter: false; theme: Confluence"
style="font-size:12px;"><dependency>
+<pre class="brush: xml; gutter: false; theme: Default"
style="font-size:12px;"><dependency>
<groupId>org.webjars</groupId>
<artifactId>swagger-ui</artifactId>
<version>2.2.10-1</version>