Child pages
  • Standalone HTTP Transport
Skip to end of metadata
Go to start of metadata

Configuring SSL

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 Configuration 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 Configuring TLS page.

Destinations in CXF are responsible for listening for server side requests.

Add the static content pages into the jetty server

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.

Configuring Standalone Jetty in OSGi

An OSGi application can use the standalone transport by incorporating cxf-rt-transports-http-jetty, which is an OSGi bundle, and creating
services with endpoint URLs like http://0.0.0.0:8181/rest/v1/entities

If your application needs to configure Jetty, is has to communicate with CXF's mechanism for this purpose, which lives in
org.apache.cxf.transport.http_jetty.osgi.HTTPJettyTransportActivator.

CXF allows an application to use different configuration parameters for different 'engines'. An engine is
specified by three properties:

  • HTTP vs. HTTPS (protocol)
  • host
  • port


For each endpoint, CXF allows you to specify:

  • sessionSupport
  • continuationsEnabled
  • reuseAddress
  • maxIdleTime
  • a giant, complex, raft of TLS parameters for HTTPS.


Each of these engines is a shared resource, in that many endpoints can coexist on an engine. Thus, these shared
parameters can't be configured as part of launching an endpoint.

Instead, CXF (in HTTPJettyTransportActivator), creates an OSGi ManagedServiceFactory. Usually, a managed service
factory is a creature that creates multiple OSGi services on demand, each with a particular configuration.
CXF doesn't really do that. Instead, each time that an application publishes a configuration, CXF sets the parameters
for the engine described by the configuration properties.

Concretely, if an application calls the createFactoryConfiguration method of the `ConfigurationAdmin` service for PID
`org.apache.cxf.http.jetty`, CXF looks in the properties. It expects to find `host` and `port`. If it finds
any TLS parameters, it configures for HTTPS. If not, it configures for HTTP. It then applies all the other parameters
to the engine for that [protocol,host,port] triple.

If your application needs to create such a configuration and then modify if (all before CXF actually starts up the engine), you must use code like:

configurationAdmin.listConfigurations(String.format("(&(service.factoryPid=%s)(%s=%s))", 
parsed[0], ConfigurationFileReaderImpl.INSTANCE_ID, parsed[1]));

 

to locate the configuration you created before, where "ConfigurationFileReaderImpl.INSTANCE_ID" is just an example of how you would use a property of your own choice to uniquely specify the configuration.

 

 

  • No labels

0 Comments