# Contributing to Jakarta Enterprise Beans

Thanks for your interest in this project.

## Project description

Jakarta Enterprise Beans is an architecture for the development and deployment of
component-based business applications.

* https://projects.eclipse.org/projects/ee4j.ejb

## Developer resources

Information regarding source code management, builds, coding standards, and
more.

* https://projects.eclipse.org/projects/ee4j.ejb/developer

The project maintains the following source code repositories

* https://github.com/eclipse-ee4j/ejb-api

## Eclipse Contributor Agreement

Before your contribution can be accepted by the project team contributors must
electronically sign the Eclipse Contributor Agreement (ECA).

* http://www.eclipse.org/legal/ECA.php

Commits that are provided by non-committers must have a Signed-off-by field in
the footer indicating that the author is aware of the terms by which the
contribution has been provided to the project. The non-committer must
additionally have an Eclipse Foundation account and must have a signed Eclipse
Contributor Agreement (ECA) on file.

For more information, please see the Eclipse Committer Handbook:
https://www.eclipse.org/projects/handbook/#resources-commit

## Contact

Contact the project developers via the project's "dev" list.

*
