/** * Parses the bean context's deployment descriptor file for beans * that has to be registered in the object manager. * * @return void */ public function parse() { // load the web application base directory $webappPath = $this->getBeanContext()->getWebappPath(); // prepare the deployment descriptor $deploymentDescriptor = AppEnvironmentHelper::getEnvironmentAwareGlobPattern($webappPath, 'META-INF' . DIRECTORY_SEPARATOR . 'epb'); // query whether we found epb.xml deployment descriptor file if (file_exists($deploymentDescriptor) === false) { return; } // validate the passed configuration file /** @var \AppserverIo\Appserver\Core\Api\ConfigurationService $configurationService */ $configurationService = $this->getApplication()->newService('AppserverIo\\Appserver\\Core\\Api\\ConfigurationService'); $configurationService->validateFile($deploymentDescriptor, null, true); // prepare and initialize the configuration node $epbNode = new EpbNode(); $epbNode->initFromFile($deploymentDescriptor); // query whether or not the deployment descriptor contains any beans /** @var \AppserverIo\Appserver\Core\Api\Node\EnterpriseBeansNode $enterpriseBeans */ if ($enterpriseBeans = $epbNode->getEnterpriseBeans()) { // parse the session beans of the deployment descriptor /** @var \AppserverIo\Appserver\Core\Api\Node\SessionNode $sessionNode */ foreach ($enterpriseBeans->getSessions() as $sessionNode) { $this->processConfigurationNode($sessionNode); } // parse the message driven beans from the deployment descriptor /** @var \AppserverIo\Appserver\Core\Api\Node\MessageDrivenNode $messageDrivenNode */ foreach ($enterpriseBeans->getMessageDrivens() as $messageDrivenNode) { $this->processConfigurationNode($messageDrivenNode); } } }