type=page
status=published
title=create-connector-resource
next=create-connector-security-map.html
prev=create-connector-connection-pool.html
~~~~~~

create-connector-resource
=========================

[[create-connector-resource-1]][[GSRFM00019]][[create-connector-resource]]

create-connector-resource
-------------------------

Registers the connector resource with the specified JNDI name

[[sthref166]]

=== Synopsis

[source]
----
asadmin [asadmin-options] create-connector-resource [--help]
--poolname connectorConnectionPoolName
[--enabled={true|false}]
[--description description]
[--objecttype ovjecttype]
[--property (name=value)[:name=value]*]
[--target target]
jndi_name
----

[[sthref167]]

=== Description

The `create-connector-resource` subcommand registers the connector
resource with the specified JNDI name.

This subcommand is supported in remote mode only.

[[sthref168]]

=== 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.
`--poolname`::
  The name of the connection pool. When two or more resource elements
  point to the same connection pool element, they use the same pool
  connections at runtime.
`--enabled`::
  This option determines whether the resource is enabled at runtime. The
  default value is true.
`--objecttype`::
  Defines the type of the connector resource. Default is user. Allowed
  values are:
+
  `system-all`;;
    A system resource for all server instances and the domain
    administration server (DAS).
  `system-admin`;;
    A system resource only for the DAS.
  `system-instance`;;
    A system resource for all server instances only.
  `user`;;
    A user resource.
`--description`::
  Text providing details about the connector resource.
`--property`::
  Optional attribute name value pairs for configuring the resource.
`--target`::
  This option specifies the ending location of the connector resources.
  Valid targets are:
+
  `server`;;
    Creates the connector resource in the default server instance. This
    is the default value.
  `domain`;;
    Creates the connector resource in the domain.
  cluster_name;;
    Creates the connector resource in every server instance in the
    cluster.
  instance_name;;
    Creates the connector resource in the specified server instance.
+

[NOTE]
====
The resource is always created for the domain as a whole, but the
`resource-ref` for the resource is only created for the specified
`--target`. This means that although the resource is defined at the
domain level, it is only available at the specified target level. Use
the `create-resource-ref` subcommand to refer to the resource in
multiple targets if needed.
====

[[sthref169]]

=== Operands

jndi_name::
  The JNDI name of this connector resource.

[[sthref170]]

=== Examples

[[GSRFM465]][[sthref171]]

==== Example 1   Creating a Connector Resource

This example creates a connector resource named `jms/qConnFactory`.

[source]
----
asadmin> create-connector-resource --poolname jms/qConnPool
--description "sample connector resource" jms/qConnFactory
Command create-connector-resource executed successfully
----

[[GSRFM466]][[sthref172]]

==== Example 2   Using the create-connector-resource subcommand

This example shows the usage of this subcommand.

[source]
----
asadmin> create-connector-resource --target server --poolname jms/qConnPool
--description "sample connector resource" jms/qConnFactory
Command create-connector-resource executed successfully
----

Where `jms/qConnFactory` is the sample connector resource that is
created.

[[sthref173]]

=== Exit Status

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

[[sthref174]]

=== See Also

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

link:delete-connector-resource.html#delete-connector-resource-1[`delete-connector-resource`(1)],
link:list-connector-resources.html#list-connector-resources-1[`list-connector-resources`(1)],
link:create-resource-ref.html#create-resource-ref-1[`create-resource-ref`(1)]


