Grails: Доступ к пружинным бобам в уничтожать закрытии Кода начальной загрузки?

Вы подключаетесь к неверной базе данных - ORCLDB.localdomain является службой для базы данных CONTAINER.

Вы сделали, измените контейнер набора сеансов = ORCLPDB1 =>, это база данных, к которой вы хотите подключиться, поэтому попробуйте

sqlplus BUS/DEMO_PASS@localhost:1529/ORCLPDB1 

Также, если вы ищете более удобный для пользователя CLI для Oracle Построим SQLcl .

6
задан Siguza 29 August 2015 в 15:56
поделиться

3 ответа

Можно получить ссылку на applicationContext отовсюду (включая уничтожать закрытие BootStrap) использование что блок кода:

def ctx = org.codehaus.groovy.grails.web.context.ServletContextHolder.servletContext.getAttribute(org.codehaus.groovy.grails.web.servlet.GrailsApplicationAttributes.APPLICATION_CONTEXT);

Получение ссылки на боб так же легко как ctx.beanName.

Вот маленький util класс (записанный в Java), который может упростить эту задачу:

import org.springframework.context.ApplicationContext;
import org.codehaus.groovy.grails.web.context.ServletContextHolder;
import org.codehaus.groovy.grails.web.servlet.GrailsApplicationAttributes;

public class SpringUtil {

    public static ApplicationContext getCtx() {
        return getApplicationContext();
    }

    public static ApplicationContext getApplicationContext() {
        return (ApplicationContext) ServletContextHolder.getServletContext().getAttribute(GrailsApplicationAttributes.APPLICATION_CONTEXT);
    }

    @SuppressWarnings("unchecked")
    public static <T> T getBean(String beanName) {
        return (T) getApplicationContext().getBean(beanName);
    }

}

и пример:

def bean = SpringUtil.getBean("beanName")

С наилучшими пожеланиями, Sigi

15
ответ дан 8 December 2019 в 05:24
поделиться

Хм, я не могу найти примеры никого даже использованием уничтожать закрытия блока в Начальной загрузке. Из документов:

    It is not guaranteed that {{destroy}} will be called unless the 
application exits gracefully (for example by using the application 
server's shutdown command) so don't rely on it too much 

Как предположение, я должен был бы сказать, что servletContext был уже уничтожен, прежде чем {{уничтожать}} закрытие Начальной загрузки выполняется, так, чтобы боба, к которому Вы пытаетесь получить доступ, уже не стало. Кто-либо может подтвердить?

2
ответ дан 8 December 2019 в 05:24
поделиться

В HTML первым должен быть элемент DOCTYPE , за которым следует отдельный элемент < html > , который должен содержать элемент < head > , содержащий элемент < title > , за которым следует элемент < body > . См. описание глобальной структуры HTML-документа в HTML 4.01 и HTML5 черновике ; фактические потребности в основном совпадают с DOCTYPE , но описываются по-разному.

Фактические тэги ( < html > , , < head > и т.д.) являются необязательными; элементы будут созданы автоматически, если тэги не существуют. < заголовок > является единственным обязательным тэгом в HTML. Самый короткий допустимый HTML 4,01 документ (по крайней мере, который я мог бы сгенерировать) - (требуется < p > , потому что в < body > должно быть что-то действительное):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"><title></title><p>

И самый короткий допустимый HTML5 документ:

<!DOCTYPE html><title></title>

Обратите внимание, что в XHTML все тэги должны быть указаны явно; элементы не будут вставляться неявно.

При некоторых обстоятельствах браузеры выполняют поиск типа контента, чтобы определить тип ресурса, который не был указан с помощью заголовка HTTP Content-Type , а также поиск в кодировке символов, если заголовок Content-Type не был предоставлен или не включает набор символов (обычно следует попытаться включить эти заголовки и убедиться, что они верны, но есть некоторые обстоятельства, при которых вы не можете, например, локальные файлы, не переданные по HTTP). Однако для этих целей они нюхают только ограниченное количество байтов в начале документа, так что все, что предназначено для воздействия на поиск содержимого или поиск в кодировке символов, должно быть близко к началу документа.

По этой причине HTML5 указывает , что любой meta тэгов, который используется для указания набора символов (либо < meta http-equiv = "Content-type" content = "text/html; charset = "... > или просто < meta charset =... > ) должны находиться в пределах первых 1024 байт файла, чтобы они вступили в силу. Таким образом, если вы собираетесь включить информацию о кодировке символов в свой документ, вы должны поместить тэг на ранней стадии в файл, возможно, даже перед элементом < title > . Однако этот тэг не нужен, если правильно указан заголовок Content-type .

В CSS более поздние объявления стиля имеют приоритет над более ранними , при этом все остальные равны. Таким образом, обычно следует помещать самые общие таблицы стилей, которые могут быть переопределены ранее, а более конкретные таблицы стилей - позже.

По соображениям производительности рекомендуется поместить сценарии в нижнюю часть страницы прямо перед , поскольку загрузка сценариев блокирует визуализацию страницы.

Очевидно, < сценарий > тэгов должны быть упорядочены таким образом, чтобы для сценариев, зависящих от каждого порядка, сначала загружались зависимости.

В целом, за исключением ограничений, которые я уже указывал, порядок тэгов в пределах < head > не должен иметь большого значения, кроме как для читаемости. Я склонен видеть < заголовок > к верху, и поместить другие < мета > теги в каком-то логическом порядке.

В большинстве случаев порядок, который вы должны поместить в тело HTML-документа, должен быть порядком, в котором они должны отображаться, или порядком, в котором они должны быть доступны. Можно использовать CSS для переупорядочивания вещей, но средства чтения с экрана обычно считывают вещи в порядке источника, индексы поиска извлекают вещи в порядке источника и так далее.

-121--836658-

Сначала необходимо указать тип контента, так как это означает кодировку символов, в противном случае, если она появится позже, некоторые браузеры попытаются угадать кодировку. (Я не могу вспомнить подробности, но я думаю, что IE догадается, если он не найдет кодировку в первых 75 символов документа?)

Большинство веб-серверов отправляют кодировку в заголовках HTTP, но если пользователь сохраняет вашу страницу, заголовки не сохраняются вместе с ней.

Я бы поставил ссылки CSS вторым, чтобы браузер загрузил их как можно скорее.

JavaScript Я бы не ставил в голову, он должен идти в нижней части ваших страниц, как загрузка их блокирует рендеринг страниц.

-121--836663-

Я знаю, что все я опаздываю здесь и все, но так как я нашел это через Google...

Ваш класс BootStrap вводится с бобами Spring по имени, как и все сервисы, контроллеры и прочее. Если хочешь фасоль, просто покажи ее по имени, и она появится. В противном случае, просто def grabilyApplication и перейдите к graisyApplication.mainContext.getBean и т.д.

6
ответ дан 8 December 2019 в 05:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: