# Resources used to test and publish on your server

To test and publish on your server, you need to define one or more of the following resources:

- A server
- A server runtime environment

If a server has server configuration files, in most situations, these server configuration files are created for you automatically and contained in a server project.

#### Server Project

A server project contains servers and server configuration files. When a server project is created automatically by the workbench, the name given to the project is Servers and is available in the Project Explorer view.

#### Server

A server identifies where you want to test or publish your application. A server points to a specific runtime environment such as a local test environment, a full installation of a server, or a server on another machine. A server contains the logic of how to publish to the server; and what application projects and configurations to run.

On the workbench, when the metadata of the server is automatically created, it is stored in a serverName.server file, where serverName is the name assigned to the server. For details on the metadata of the server, refer to the Displaying or hiding the metadata of the server link at the bottom of this topic.

#### Server configurations

Server configurations are files that contain information to set up and publish to a server. For example, these files may include information about what port to run the server, security preferences and other vendor-specific server settings.

On the workbench, the metadata of the server configurations is automatically created and stored in a configuration data folder under a server project. The naming convention of the configuration data folder is dependant on the vendor, typically it has the following convention: serverName@hostname-config, where serverName is the name assigned to the server, and hostname is the fully qualified DNS name or IP address of the host machine where the server is running.

#### Server Runtime Environment

You need to define the runtime environment of an application server for compiling your application. A server contains a reference to a server runtime environment it is currently using. For details on how to define a server runtime environment, refer to the Defining the server runtime environments preference link at the bottom of this topic.

#### Relationship between the resources

For each server, you can specify the server configuration and server runtime environment that should be used for that server. A server can only point to one or no server configuration. However, a server configuration can be pointed from one or more servers.

A relationship between a server configuration and an application project, for example an EAR project, is created when a project is added to the server configuration. A server can point to one or more projects. A project can be pointed from one or more server configurations.

Related tasks
Displaying or hiding the metadata of the server
Defining the server runtime environments preferences