Title: Getting Support

{row

{span-one-third
## Mailing Lists

* [Users](mailto:users@tomee.apache.org) ([Subscribe](mailto:users-subscribe@tomee.apache.org), [Unsubscribe](mailto:users-unsubscribe@tomee.apache.org))
* [Developers](mailto:dev@tomee.apache.org) ([Subscribe](mailto:dev-subscribe@tomee.apache.org), [Unsubscribe](mailto:dev-unsubscribe@tomee.apache.org))
* [Commits](mailto:commits@tomee.apache.org) ([Subscribe](mailto:commits-subscribe@tomee.apache.org), [Unsubscribe](mailto:commits-unsubscribe@tomee.apache.org))
* [IRC](http://webchat.freenode.net/?channels=openejb)

}

{span-one-third
## Forums

* [User Forum](http://openejb.979440.n4.nabble.com/OpenEJB-User-f979441.html)
* [Dev Forum](http://openejb.979440.n4.nabble.com/OpenEJB-Dev-f982480.html)

}

{span-one-third
## JIRA

* [TOMEE](https://issues.apache.org/jira/browse/TOMEE)
* [OPENEJB](https://issues.apache.org/jira/browse/OPENEJB)

}

}

Support for Apache TomEE is given freely by the community.  Please be aware when asking questions that the Apache Software Foundation does not have paid developers or dedicated support staff.
All community support comes from volunteers on a volunteer basis.  Joining the community as a volunteer and helping your fellow users is highly encouraged!

For commercial support or to commercially support the community see [Commercial Support](commercial-support.html) page.