Skip to content
Permalink
master
Go to file
 
 
Cannot retrieve contributors at this time
141 lines (132 sloc) 5.72 KB
---
# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
title: "Java Data Intensive Serving Container - JDisc"
---
<p>Vespa's Java container - JDisc, hosts all application components as well as the stateless logic of Vespa itself.
Which particular components are hosted by a container cluster is configured in services.xml. The main features of
JDIsc are:
<ul>
<li>HTTP serving out of the box from an embedded Jetty server,
and support for plugging in other transport mechanisms.</li>
<li>Integration with the config system of Vespa which allows components to
<a href="../configuring-components.html">receive up to date config</a>
(by constructor injection) resulting from application deployment.</li>
<li><a href="injecting-components.html">Dependency injection based on Guice</a>
(Felix), but extended for configs and component collections.</li>
<li>A component model based on <a href="developing-osgi-bundles.html">OSGi</a> which allows
component to be (re)deployed to running servers, and to control which API's they expose to others.</li>
<li>The features above combine to allow application package changes (changes to components, configuration or data)
to be applied by Vespa without disrupting request serving nor requiring restarts.</li>
<li>Standard component types exists for
<ul>
<li><a href="developing-request-handlers.html">general request handling</a>
<li><a href="processing.html">chained request-response processing</a>
<li><a href="../document-processing.html">processing document writes</a>
<li><a href="../searcher-development.html">intercepting queries and results</a>
<li><a href="../result-rendering.html">rendering responses</a>
</ul>
Application components can be of any other type as well and do not need to reference any Vespa API to
be loaded and managed by the container.
</li>
<li>A general <a href="../chained-components.html">chain composition</a> mechanism for components.</li>
</ul>
<h2 id="developing-components">Developing Components</h2>
<ul>
<li>
The JDisc container provides a framework for processing requests and responses,
named <em>Processing</em> - its building blocks are:
<ul>
<li>
<a href="../chained-components.html">Chains</a>
of other components that are to be executed serially,
with each providing some service or transform
</li>
<li>
<a href="processing.html">Processors</a>
that change the request and / or the response. They may also
make multiple forward requests, in series or parallel,
or manufacture the response content themselves
</li>
<li>
<a href="processing.html#response-rendering">Renderers</a>
that are used to serialize a Processor's response before
returning it to a client
</li>
</ul>
</li>
<li>
Application Lifecycle and unit testing:
<ul>
<li>
<a href="../configuring-components.html">Configuring components</a>
with custom configuration
</li><li>
<a href="injecting-components.html">Component injection</a> allows components
to access other application components
</li><li>
Learn how to <a href="developing-osgi-bundles.html">build OSGi bundles</a> and
how to <a href="bundle-troubleshooting.html">troubleshoot</a> classloading issues
</li><li>
<a href="jax.html">XML processing</a> with JAXB and JAXP (DOM, SAX, StAX)
</li><li>
Using <a href="pluggable-frameworks.html">Libraries for Pluggable Frameworks</a> from
a component may result in class loading issues that require extra setup in the application
</li>
<li>
<a href="../testing.html#unit-testing-configurable-components">
Unit testing configurable components</a>
</li>
</ul>
</li>
<li>
Handlers and filters:
<ul>
<li>
<a href="http-server-and-filters.html">Http servers and
security filters</a> for incoming connections on HTTP and HTTPS
</li><li>
<a href="developing-request-handlers.html">Request handlers</a>
to process incoming requests and generate responses
</li>
</ul>
</li>
<li>
Searchers and Document Processors:
<ul>
<li><a href="../searcher-development.html">Searcher</a> and
<a href="../result-rendering.html">search result renderer</a>
development
</li><li><a href="../document-processing.html">Document processing</a>
</li>
</ul>
</li>
</ul>
<h2 id="reference-documentation">Reference documentation</h2>
<ul>
<li><a href="../reference/services-container.html">services.xml</a></li>
</ul>
<h2 id="other-related-documents">Other related documents</h2>
<ul>
<li>
<a href="component-versioning.html">Versioning Components</a>
</li><li>
<a href="developing-client-providers.html">Client providers</a>
are capable of connecting to and forwarding requests to a
remote server on a specific protocol, e.g. the <code>HttpClient</code>
is a client provider for HTTP and HTTPS
</li><li>
To accept incoming connection on other protocols than HTTP/HTTPS,
develop custom <a href="developing-server-providers.html">server providers</a>
starting with the <a href="server-tutorial.html">tutorial</a>
</li><li>
<a href="chain-builder.html">The Chain Builder API</a>
</li><li>
<a href="../developing-web-services.html">Designing RESTful web
services</a> as Vespa Components
</li><li>
<a href="../reference/healthchecks.html">healthchecks</a> - using the Container with a VIP
</li><li>
<a href="../component-types.html">Vespa Component types</a>:
The Container's request processing lifecycle
</li>
</ul>
You can’t perform that action at this time.