Fork me on GitHub

The deploymentType configuration setting is used to specify whether Isis is running in development mode or production mode (similar to Apache Wicket's concept of the application's configuration type.

The most thing aspect of configuration that varies by deploymentType is whether actions annotated with @Exploration and @Prototype are visible. It is also used to determine the default component to use (for security and objectstore) if not explicitly specified.

The deploymentType design is perhaps overly complex; we hope to simplify in the future.

Deployment Types and Deployment Categories

Each deploymentType list has a corresponding deploymentCategory, and it is this that determines whether @Exploration and @Prototype actions are visible.

The standard list of deploymentTypes and their categories are:

Deployment category Deployment types @Exploration actions @Prototype actions
EXPLORING SERVER_EXPLORATION
EXPLORATION
UTILITY
Visible Not visible
PROTOTYPING SERVER_PROTOTYPE
PROTOTYPE
Not visible Visible
PRODUCTION SERVER
UNIT_TESTING
SINGLE_USER
Not visible Not visible

It is possible for components to add their own deploymentTypes, and the Wicket viewer is one such component that does so. However, every such deploymentType maps to precisely one of the 3 available deployment categories, and it is the category that determines action visibility.

Specifying the Deployment Type in the web.xml file

If running these viewers using the WebServer, then the deploymentType is forced to SERVER_PROTOTYPE; the value in the web.xml file is ignored. Thus these settings only take force when deploying into a regular webapp server, eg Tomcat.

Wicket

For the wicket viewer, the Isis deploymentType is inferred from Apache Wicket's own deployment mode:

The Wicket configuration type is set in the usual way for a Wicket application, for example:

<context-param>
    <param-name>configuration</param-name>
    <param-value>deployment</param-name>
</context-param>

(Alternative ways of specifying the Wicket configuration type can be found in this blog post).

Note that if the Wicket configuration type is set to deployment, then any Wicket tags will automatically be stripped. The presence of Wicket tags can occasionally trip up some browsers (we have noticed that Internet Explorer is particularly susceptible) and some Javascript components. The Wicket viewer therefore also allows the stripping of Wicket tags to be forced (even in prototype mode) using a configuration setting described here.

Restful Objects viewer

First thing to note is that, if Restful Objects viewer is deployed alongside the Wicket viewer, then the Wicket viewer's configuration takes precedence. See the section above for details.

However, if the Restful Objects viewer is deployed by itself, then the deploymentType is specified in the <web.xml> file:

<context-param>
    <param-name>deploymentType</param-name>
    <param-value>SERVER</param-name>
</context-param>

Scimpi viewer (not released)

The Scimpi is configured the same way as the Restful Objects viewer, see above.

Running a web viewer using WebServer

If running these viewers using the WebServer, then the deploymentType defaults to prototype; see below for more details.

It is possible to explicitly specify the deployment mode at the command line:

-t server_prototype

or using the long form:

--type server_exploration

Only server_*-style deploymentTypes should be specified (it has a bearing on the way that Isis does its session management).

Component Defaults

If a component implementation is not specified explicitly, then the default is based on the deployment category (see the InstallerLookupDefault class).

Deployment category Deployment types Authentication
(if not specified)
Authorization
(if not specified)
Object store
(if not specified)
Profile store
(if not specified)
EXPLORING SERVER_EXPLORATION
EXPLORATION
UTILITY
Bypass Bypass In-memory In-memory
PROTOTYPING SERVER_PROTOTYPE
PROTOTYPE
File-based Bypass In-memory In-memory
PRODUCTION SERVER
UNIT_TESTING
SINGLE_USER
File-based File-based XML XML