Squeak.ru - шаблоны программирования

как получить доступ к файлам в tomcat

Я хочу сохранить элементы, которые я использую в g: select, в файле, который я могу прочитать во время выполнения. Мое решение до сих пор состоит в том, чтобы сохранить соответствующий файл в корне моего проекта и получить доступ к строкам с помощью

новый файл ("мой файл"). каждый {selectList ‹‹ это}

Этот подход отлично работает с run-app в моем ide. Но когда я генерирую войну и развертываю ее на tomcat, файл не развертывается, и единственный способ получить к нему доступ — переместить его вручную в CATALINA_HOME/bin после развертывания.

Я знаю, что это способ для новичков и совсем не профессиональный.

Я уверен, что есть лучший способ, пожалуйста, скажите мне.

Питер Дортмунд, Германия

05.06.2014

Ответы:


1

Текущая папка java-приложения отличается для run-app и tomcat. Вы можете распечатать его, например, используя

new File('.').absolutePath

Таким образом, подход может заключаться в том, чтобы установить путь в конфигурации - другой для производства, другой для разработки и создать свой файл с

new File("${getPathFromConfig()}/$myFile}")

Также может быть проще просто сохранить список во внешней конфигурации вашего приложения в формате объекта, поэтому вам не нужно читать файл, но его можно изменить перед запуском приложения. См. это.

Если вы используете заводную конфигурацию, вы можете просто использовать параметр конфигурации:

my.list=['option1', 'option2', ...]

и прочитайте его в приложении, используя

grailsApplication.config.my.list.each { ... }

надеюсь это поможет

05.06.2014
  • Я использовал подход config.groovy, 1 строка в config.groovy вместо 1 файла. Он отлично работает в run-app и tomcat 05.06.2014
  • Дополнительный вопрос: я бы предпочел оставить Config.groovy нетронутым (кроме определения grails.config.location). Таким образом, я хотел бы поместить определения списка в конце Config.groovy в отдельный файл внутри моего приложения. 06.06.2014
  • Дополнительный вопрос: я бы предпочел оставить Config.groovy нетронутым (кроме определения grails.config.location). Таким образом, я хотел бы поместить определения списка в конце Config.groovy в отдельный файл внутри моего приложения. Это приводит меня к двум вопросам: как должно выглядеть определение файла в grails.config.location = [....?????....] и где соответствующий файл должен быть размещен внутри моего приложения. 06.06.2014
  • Если файл будет находиться вне приложения, вы можете, например, использовать: def configLocations = [file:${userHome}/${appName}/${appName}-config.groovy] и поместить файл в /home/username/AppName/ AppName-config.groovy в Linux или c:\users\username\AppName\AppName-config.groovy в Windows 06.06.2014
  • в любом случае, кроме хранения строк конфигурации в отдельном файле. Я только что понял, что grailsApplication.config недоступен в классе домена, и именно там он мне нужен. Мои первые тесты были в контроллере. 06.06.2014
  • замена grailsApplication.config на grails.util.Holders.config позволяет ему работать и в классе домена 06.06.2014
  • это кажется действительно сложным способом сделать это. если вы используете доменные классы и базу данных, почему бы вам не хранить эти значения в БД? если вы хотите отображать списки в представлении, вы должны передать его в модель представления, а не добавлять в метод класса домена. 06.06.2014

  • 2

    Сначала создайте каталог в папке конфигурации вашего приложения. Предположим, вы создали каталог

    conf_data.
    

    secont теперь определите путь к файлу в вашем файле config.groovy

    app.demo.data.folder.location = "conf_data/demoData.xml"
    

    наконец использовать

    def demoDataFileLocation = new GroovyClassLoader(ConfigurationHolder.classLoader).getResource(grailsApplication.config.app.demo.data.folder.location).file.toString()
    
    def demoDataRecords = new XmlParser().parse(demoDataFileLocation)
    

    теперь у вас есть путь к вашему файлу в demoDatafileLocation, который вы можете использовать по своему усмотрению

    05.06.2014
    Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...