The Many-to-Many-Invocation (M2MI) Service Discovery Middleware Framework provides an API for publishing, providing, and using services in a serverless ad hoc network of devices implementing the M2MI architecture. It is built on top of the M2MI layer, as a middleware to interact with user applications and facilitate the deployment, use, and providing of services. The middleware uses the M2MI architecture, having ServiceRepository objects exported to it on each participating device to keep information of the available services in the network. These objects broadcast invocations to each other to update all information. The information is kept in the form of ServiceDescription objects which are moved from Repository to Repository. A service provider publishes or unpublishes a ServiceDescription object locally; the Repositories automatically update in the network. A client looks for services based on the implemented Java interfaces, and then requests them through its local Repository. Unih...