type=page
status=published
title=unset-web-context-param
next=unset-web-env-entry.html
prev=unset.html
~~~~~~

unset-web-context-param
=======================

[[unset-web-context-param-1]][[GSRFM00248]][[unset-web-context-param]]

unset-web-context-param
-----------------------

Unsets a servlet context-initialization parameter of a deployed web
application or module

[[sthref2242]]

=== Synopsis

[source]
----
asadmin [asadmin-options] unset-web-context-param [--help]
--name=context-param-name application-name[/module]
----

[[sthref2243]]

=== Description

The `unset-web-context-param` subcommand unsets a servlet
context-initialization parameter of one of the following items:

* A deployed web application
* A web module in a deployed Java Platform, Enterprise Edition (Java EE) application

When a parameter is unset, its value reverts to the value, if any, that
is set in the application's deployment descriptor.

The application must already be deployed. Otherwise, an error occurs.

The parameter must have previously been set by using the
`set-web-context-param` subcommand. Otherwise, an error occurs.

[NOTE]
====
Do not use the `unset-web-context-param` subcommand to change the value
of a servlet context-initialization parameter that is set in an
application's deployment descriptor. Instead, use the
link:set-web-context-param.html#set-web-context-param-1[`set-web-context-param`(1)]
subcommand for this purpose.
====

This subcommand enables you to change the configuration of a deployed
application without the need to modify the application's deployment
descriptors and repackage and redeploy the application.

This subcommand is supported in remote mode only.

[[sthref2244]]

=== 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.
`--name`::
  The name of the servlet context-initialization parameter that is to be
  unset. This parameter must have previously been set by using the
  `set-web-context-param` subcommand. Otherwise, an error occurs.

[[sthref2245]]

=== Operands

application-name::
  The name of the application. This name can be obtained from the
  Administration Console or by using the
  link:list-applications.html#list-applications-1[`list-applications`(1)] subcommand. +
  The application must already be deployed. Otherwise, an error occurs.
module::
  The relative path to the module within the application's enterprise
  archive (EAR) file. The path to the module is specified in the
  `module` element of the application's `application.xml` file. +
  module is required only if the servlet context-initialization
  parameter applies to a web module of a Java EE application. If
  specified, module must follow application-name, separated by a slash (`/`). +
  For example, the `application.xml` file for the `myApp` application
  might specify the following web module:
+
[source,xml]
----
<module>
    <web>
        <web-uri>myWebModule.war</web-uri>
    </web>
</module>
----
+
The module would be specified as the operand of this command as `myApp/myWebModule.war`.

[[sthref2246]]

=== Examples

[[GSRFM783]][[sthref2247]]

==== Example 1   Unsetting a Servlet Context-Initialization Parameter for a Web Application

This example unsets the servlet context-initialization parameter
`javax.faces.STATE_SAVING_METHOD` of the web application `basic-ezcomp`.
The parameter reverts to the value, if any, that is defined in the
application's deployment descriptor.

[source]
----
asadmin> unset-web-context-param
--name=javax.faces.STATE_SAVING_METHOD basic-ezcomp

Command unset-web-context-param executed successfully.
----

[[sthref2248]]

=== Exit Status

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

[[sthref2249]]

=== See Also

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

link:list-applications.html#list-applications-1[`list-applications`(1)],
link:list-web-context-param.html#list-web-context-param-1[`list-web-context-param`(1)],
link:set-web-context-param.html#set-web-context-param-1[`set-web-context-param`(1)]


