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]
----
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]
----
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)]


