AppserverIo\Appserver\Core\AbstractEpbManager::registerPersistenceUnitReference PHP Метод

registerPersistenceUnitReference() публичный Метод

Registers the passed persistence unit reference in the applications directory.
public registerPersistenceUnitReference ( AppserverIo\Psr\EnterpriseBeans\Description\PersistenceUnitReferenceDescriptorInterface $persistenceUnitReference ) : void
$persistenceUnitReference AppserverIo\Psr\EnterpriseBeans\Description\PersistenceUnitReferenceDescriptorInterface The persistence unit reference to register
Результат void
    public function registerPersistenceUnitReference(PersistenceUnitReferenceDescriptorInterface $persistenceUnitReference)
    {
        try {
            // load the application instance and reference name
            $application = $this->getApplication();
            // initialize the persistence unit URI
            $uri = sprintf('php:global/%s/%s', $application->getUniqueName(), $persistenceUnitReference->getName());
            // query whether the reference has already been bound to the application
            if ($application->getNamingDirectory()->search($uri)) {
                // log a message that the reference has already been bound
                $application->getInitialContext()->getSystemLogger()->info(sprintf('Persistence unit reference %s has already been bound to naming directory', $uri));
                // return immediately
                return;
            }
            // catch the NamingException if the ref name is not bound yet
        } catch (NamingException $e) {
            // log a message that we've to register the resource reference now
            $application->getInitialContext()->getSystemLogger()->info(sprintf('Persistence unit reference %s has not been bound to naming directory', $uri));
        }
        try {
            // try to use the unit name to bind the reference to
            if ($unitName = $persistenceUnitReference->getUnitName()) {
                // load the persistenc manager to bind the callback to
                $persistenceManager = $application->search(PersistenceContextInterface::IDENTIFIER);
                // create a reference to a persistence unit in the global directory
                $application->getNamingDirectory()->bind($uri, array(&$persistenceManager, 'lookupProxy'), array(sprintf('php:global/%s/%s', $application->getUniqueName(), $unitName)));
                // log a critical message that we can't bind the reference
            } else {
                $application->getInitialContext()->getSystemLogger()->critical(sprintf('Can\'t bind persistence unit Reference %s to naming directory, because of missing unit name definition', $uri));
            }
            // catch all other exceptions
        } catch (\Exception $e) {
            $application->getInitialContext()->getSystemLogger()->critical($e->__toString());
        }
    }