IDS plugins have three interfaces to implement. Please see the Javadoc for details. The IDS has a two level storage model with main storage and an optional archive storage. The main storage deals with individual data files whereas the archive storage deals with zip files holding all the datafiles of a dataset. In addition the ZipMapperInterface must be implemented to define the structure of the Zip file which is used for downloads and for archive storage.
There are a number of abstract partial implementations provided - for example MainStorageWithoutArchive and MainStorageWithoutArchiveReadOnly which you may extend. These provide dummy implementations of calls which are not made in specific deployments.
For Glassfish deployment the IDS expects to find its plugins in lib/applibs below the domain directory. The plugins must be packaged will all dependencies - because of the way the Glassfish classloader works and after deployment Glassfish must be redeployed. Please see the file storage plugin as an example of how to do it.