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. +
  {productName} 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)]


