type=page
status=published
title=create-transport
next=create-virtual-server.html
prev=create-threadpool.html
~~~~~~

create-transport
================

[[create-transport-1]][[GSRFM00061]][[create-transport]]

create-transport
----------------

Adds a new transport

[[sthref561]]

=== Synopsis

[source]
----
asadmin [asadmin-options] create-transport [--help]
[--acceptorthreads acceptor-threads]
[--buffersizebytes buffer-size]
[--bytebuffertype byte-buffer-type]
[--classname class-name]
[--displayconfiguration={false|true}]
[--enablesnoop={false|true}]
[--idlekeytimeoutseconds idle-key-timeout]
[--maxconnectionscount max-connections]
[--readtimeoutmillis read-timeout]
[--writetimeoutmillis write-timeout]
[--selectionkeyhandler selection-key-handler]
[--selectorpolltimeoutmillis selector-poll-timeout]
[--tcpnodelay={false|true}]
[--target target]
transport-name
----

[[sthref562]]

=== Description

The `create-transport` subcommand creates a transport for a network
listener. This subcommand is supported in remote mode only.

[[sthref563]]

=== 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.
`--acceptorthreads`::
  The number of acceptor threads for the transport. The recommended
  value is the number of processors in the machine. The default value is `1`.
`--buffersizebytes`::
  The size, in bytes, of the buffer to be provided for input streams
  created by the network listener that references this transport. The
  default value is `8192`.
`--bytebuffertype`::
  The type of the buffer to be provided for input streams created by a
  network-listener. Allowed values are `HEAP` and `DIRECT`. The default
  value is `HEAP`.
`--classname`::
  The fully qualified name of the Java class that implements the
  transport. The default is `org.glassfish.grizzly.TCPSelectorHandler`.
`--displayconfiguration`::
  If `true`, flushes the internal network configuration to the server
  log. Useful for debugging, but reduces performance. The default is `false`.
`--enablesnoop`::
  If `true`, writes request/response information to the server log.
  Useful for debugging, but reduces performance. The default is `false`.
`--idlekeytimeoutseconds`::
  The idle key timeout. The default is `30` seconds.
`--maxconnectionscount`::
  The maximum number of connections for the network listener that
  references this transport. A value of `-1` specifies no limit. The
  default value is `4096`.
`--readtimeoutmillis`::
  The amount of time the server waits during the header and body parsing
  phase. The default is `30000` milliseconds, or 30 seconds.
`--writetimeoutmillis`::
  The amount of time the server waits before considering the remote
  client disconnected when writing the response. The default is `30000`
  milliseconds, or 30 seconds.
`--selectionkeyhandler`::
  The name of the selection key handler associated with this transport.
  There is no default.
`--selectorpolltimeoutmillis`::
  The number of milliseconds a NIO Selector blocks waiting for events
  (user requests). The default value is `1000` milliseconds.
`--tcpnodelay`::
  If `true`, the default, enables `TCP_NODELAY` (also called Nagle's
  algorithm). The default is `false`.
`--target`::
  Creates the transport only on the specified target. Valid values are
  as follows:

  `server`;;
    Creates the transport on the default server instance. This is the
    default value.
  configuration-name;;
    Creates the transport in the specified configuration.
  cluster-name;;
    Creates the transport on all server instances in the specified
    cluster.
  standalone-instance-name;;
    Creates the transport on the specified standalone server instance.

[[sthref564]]

=== Operands

transport-name::
  The name of the transport.

[[sthref565]]

=== Examples

[[GSRFM528]][[sthref566]]

==== Example 1   Creating a Transport

The following command creates a transport named `http1-trans` that uses
a non-default number of acceptor threads:

[source]
----
asadmin> create-transport --acceptorthreads 100 http1-trans
Command create-transport executed successfully.
----

[[sthref567]]

=== Exit Status

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

[[sthref568]]

=== See Also

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

link:create-network-listener.html#create-network-listener-1[`create-network-listener`(1)],
link:delete-transport.html#delete-transport-1[`delete-transport`(1)],
link:list-transports.html#list-transports-1[`list-transports`(1)]


