= Deploying User Code
:javaFile: {javaCodeDir}/UserCodeDeployment.java

In addition to link:code-deployment/peer-class-loading[peer class loading], you can deploy user code by configuring `UriDeploymentSpi`. With this approach, you specify the location of your libraries in the node configuration.
Ignite scans the location periodically and redeploys the classes if they change.
The location may be a file system directory or an HTTP(S) location.
When Ignite detects that the libraries are removed from the location, the classes are undeployed from the cluster.

You can specify multiple locations (of different types) by providing both directory paths and http(s) URLs.

//TODO NOTE: peer class loading vs. URL deployment


== Deploying from a Local Directory

To deploy libraries from a file system directory, add the directory path to the list of URIs in the `UriDeploymentSpi` configuration.
The directory must exist on the nodes where it is specified and contain jar files with the classes you want to deploy.
Note that the path must be specified using the "file://" scheme.
You can specify different directories on different nodes.

[tabs]
--
tab:XML[]
[source, xml]
----
include::code-snippets/xml/deployment.xml[tags=!*;ignite-config;from-local-dir, indent=0]
----
tab:Java[]
[source, java]
----
include::{javaFile}[tags=from-local-dir, indent=0]
----
tab:C#/.NET[]

tab:C++[]
--

You can pass the following parameter in the URL:

[cols="1,2,1",opts="header"]
|===
|Parameter | Description | Default Value
| `freq` |  Scanning frequency in milliseconds. | `5000`
|===


== Deploying from a URL

To deploy libraries from an http(s) location, add the URL to the list of URIs in the `UriDeploymentSpi` configuration.

Ignite parses the HTML file to find the HREF attributes of all `<a>` tags on the page.
The references must point to the jar files you want to deploy.
//It's important that only HTTP scanner uses the URLConnection.getLastModified() method to check if there were any changes since last iteration for each GAR-file before redeploying.

[tabs]
--
tab:XML[]

[source, xml]
----
include::code-snippets/xml/deployment.xml[tags=!*;ignite-config;from-url, indent=0]
----

tab:Java[]

[source, java]
----
include::{javaFile}[tags=from-url, indent=0]
----

tab:C#/.NET[]
tab:C++[]
--

You can pass the following parameter in the URL:

[cols="1,2,1",opts="header"]
|===
|Parameter | Description | Default Value
| `freq` |  Scanning frequency in milliseconds. | `300000`
|===

