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

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

Registers the passed resource reference in the applications directory.
public registerResReference ( AppserverIo\Psr\EnterpriseBeans\Description\ResReferenceDescriptorInterface $resReference ) : void
$resReference AppserverIo\Psr\EnterpriseBeans\Description\ResReferenceDescriptorInterface The resource reference to register
Результат void
    public function registerResReference(ResReferenceDescriptorInterface $resReference)
    {
        try {
            // load the application instance and reference name
            $application = $this->getApplication();
            // initialize the resource URI
            $uri = sprintf('php:global/%s/%s', $application->getUniqueName(), $resReference->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('Resource 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()->debug(sprintf('Resource reference %s has not been bound to naming directory', $uri));
        }
        try {
            // try to use the lookup to bind the reference to
            if ($lookup = $resReference->getLookup()) {
                // create a reference to a resource in the global directory
                $application->getNamingDirectory()->bindReference($uri, $lookup);
                // try to bind the reference by the specified type
            } elseif ($type = $resReference->getType()) {
                // bind a reference to the resource shortname
                $application->getNamingDirectory()->bindReference($uri, sprintf('php:global/%s/%s', $application->getUniqueName(), $type));
                // log a critical message that we can't bind the reference
            } else {
                $application->getInitialContext()->getSystemLogger()->critical(sprintf('Can\'t bind resource reference %s to naming directory, because of missing source bean definition', $uri));
            }
            // catch all other exceptions
        } catch (\Exception $e) {
            $application->getInitialContext()->getSystemLogger()->critical($e->__toString());
        }
    }