type=page
status=published
title=create-context-service
next=create-custom-resource.html
prev=create-connector-work-security-map.html
~~~~~~

create-context-service
======================

[[create-context-service-1]][[GSRFM838]][[create-context-service]]

create-context-service
----------------------

Creates a context service resource

[[sthref192]]

=== Synopsis

[source]
----
asadmin [asadmin-options] create-context-service [--help]
[--enabled={false|true}]
[--contextinfoenabled={false|true}]
[--contextinfo={Classloader|JNDI|Security|WorkArea}]]
[--description description]
[--property property]
[--target target]
jndi_name
----

[[sthref193]]

=== Description

The `create-context-service` subcommand creates a context service
resource.

This subcommand is supported in remote mode only.

[[sthref194]]

=== Options

asadmin-options::
  Options for the `asadmin` utility. For information about these
  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
`--help`::
`-?`::
  Displays the help text for the subcommand.
`--enabled`::
  Determines whether the resource is enabled at runtime. The default
  value is `true`.
`--contextinfoenabled`::
  Determines whether container contexts are propagated to threads. If
  set to `true`, the contexts specified in the `--contextinfo` option
  are propagated. If set to `false`, no contexts are propagated and the
  `--contextinfo` option is ignored. The default value is `true`.
`--contextinfo`::
  Specifies individual container contexts to propagate to threads. Valid
  values are Classloader, JNDI, Security, and WorkArea. Values are
  specified in a comma-separated list and are case-insensitive. All
  contexts are propagated by default.
`--description`::
  Descriptive details about the resource.
`--property`::
  Optional attribute name/value pairs for configuring the resource. +
  \{product---name} does not define any additional properties for this
  resource. Moreover, this resource does not currently use any
  additional properties.
`--target`::
  Specifies the target for which you are creating the resource. Valid
  targets are:
  `server`;;
    Creates the resource for the default server instance. This is the
    default value.
  `domain`;;
    Creates the resource for the domain.
  cluster_name;;
    Creates the resource for every server instance in the specified
    cluster.
  instance_name;;
    Creates the resource for the specified server instance.

[[sthref195]]

=== Operands

jndi_name::
  The JNDI name of this resource.

[[sthref196]]

=== Examples

[[GSRFM839]][[sthref197]]

==== Example 1   Creating a Context Service Resource

This example creates a context service resource named
`concurrent/myContextService`.

[source]
----
asadmin> create-context-service concurrent/myContextService
Context service concurrent/myContextService created successfully.
Command create-context-service executed successfully.
----

[[sthref198]]

=== Exit Status

0::
  subcommand executed successfully
1::
  error in executing the subcommand

[[sthref199]]

=== See Also

link:asadmin.html#asadmin-1m[`asadmin`(1M)]

link:delete-context-service.html#delete-context-service-1[`delete-context-service`(1)],
link:list-context-services.html#list-context-services-1[`list-context-services`(1)]


