type=page
status=published
title=create-resource-adapter-config
next=create-resource-ref.html
prev=create-protocol-finder.html
~~~~~~
create-resource-adapter-config
==============================

[[create-resource-adapter-config-1]][[GSRFM00054]][[create-resource-adapter-config]]

create-resource-adapter-config
------------------------------

creates the configuration information for the connector module

[[sthref511]]

Synopsis

[source,oac_no_warn]
----
asadmin [asadmin-options] create-resource-adapter-config [--help] 
[--threadpoolid threadpool] 
[--objecttype object-type] 
[--property (property-name=value)[:name=value]*] 
raname
----

[[sthref512]]

Description

The `create-resource-adapter-config` subcommand creates configuration
information for the connector module. This subcommand can be run before
deploying a resource adapter, so that the configuration information is
available at the time of deployment. The resource adapter configuration
can also be created after the resource adapter is deployed. In this
case, the resource adapter is restarted with the new configuration. You
must first create a thread pool, using the `create-threadpool`
subcommand, and then identify that thread pool value as the ID in the
`--threadpoolid` option.

This subcommand is supported in remote mode only.

[[sthref513]]

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.
`--target`::
  This option has been deprecated.
`--threadpoolid`::
  The thread pool ID from which the work manager gets the thread. This
  option takes only one thread pool ID.
`--objecttype`::
  The default is `user`.
`--property`::
  Keyword-value pairs that specify additional configuration properties
  of the resource adapter Java bean. The keyword-value pairs are
  separated by a colon (`:`). The properties are the names of setter
  methods of the class that is referenced by the `resourceadapter-class`
  element in the `ra.xml` file.

[[sthref514]]

Operands

raname::
  Indicates the connector module name. It is the value of the
  `resource-adapter-name` in the `domain.xml` file.

[[sthref515]]

Examples

[[GSRFM519]][[sthref516]]

Example 1   Creating a Resource Adapter Con figuration

This example creates a resource adapter configuration for `ra1`.

[source,oac_no_warn]
----
asadmin> create-resource-adapter-config --property foo=bar --threadpoolid 
mycustomerthreadpool ra1
Command create-resource-adapter-config executed successfully
----

[[sthref517]]

Exit Status

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

[[sthref518]]

See Also

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

link:create-threadpool.html#create-threadpool-1[`create-threadpool`(1)],
link:delete-resource-adapter-config.html#delete-resource-adapter-config-1[`delete-resource-adapter-config`(1)],
link:list-resource-adapter-configs.html#list-resource-adapter-configs-1[`list-resource-adapter-configs`(1)]


