Мул 3 - Загрузка из файла .properties

Я использую Mule 3 для запроса базы данных с помощью JDBC, и я хотел бы изменить запрос в зависимости от ввода из файла .properties. У меня есть это в моем xml...

<context:property-placeholder location="C:\path\to\file\settings.properties" />

Получение следующего исключения...

Exception in thread "main" org.mule.module.launcher.DeploymentInitException: SAXParseException: The prefix "context" for element "context:property-placeholder" is not bound.

Нужно ли включать какой-то специальный файл .xsd?


person Narabhut    schedule 25.06.2013    source источник


Ответы (5)


Добавьте префикс пространства имен xmlns и расположение схемы в тег элемента mule конфигурации Mule.

Приставка:

xmlns:context="http://www.springframework.org/schema/context"

Местоположение схемы:

http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-3.0.xsd

Это должно выглядеть так, как показано ниже.

Eg:

<mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:spring="http://www.springframework.org/schema/beans"      
    xmlns:http="http://www.mulesoft.org/schema/mule/http" 
    xmlns:context="http://www.springframework.org/schema/context"

    xsi:schemaLocation="
        http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/3.3/mule.xsd
        http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/3.3/mule-http.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
        http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-3.0.xsd      
        ">


<context:property-placeholder location="C:/path/to/file/settings.properties" />


  ...........  Other stuff



</mule>
person user1760178    schedule 25.06.2013
comment
Спасибо. Кажется, это решило проблему с пространством имен, но я получаю исключение FileNotFound, когда файл явно существует. Вы сталкивались с этой проблемой раньше? - person Narabhut; 26.06.2013
comment
Сделал новый вопрос по этой проблеме, вот ссылка stackoverflow.com/questions/17326783/ Пожалуйста, посмотрите, сможете ли вы решить - person Narabhut; 26.06.2013
comment
На ваш вопрос опубликован ответ. Пожалуйста, попробуйте. Это должно решить эту проблему. - person user1760178; 27.06.2013

У меня были те же проблемы, и я исправил это. Вот что я сделал.

  1. Сохранил все .properties в src/main/resources
  2. ‹ context:property-placeholder location="file.dev.properties,file.stage.properties" />
  3. Хранение всех файлов в пути к классам было проблемой. Итак, перейдите в папку вашего проекта, откройте файл .classpath в текстовой панели и добавьте строку ниже.

    < classpathentry 
      including="file.dev.properties|file.prod.properties|file.stage.properties"
      kind="src" path="src/main/resources"/ >
    
  4. Сохраните, обновите и все заработает.
person user2502826    schedule 07.10.2013

Используйте следующий xsd в xsi:schemaLocation --

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-current.xsd

person user1493140    schedule 25.06.2013
comment
У меня такое же исключение. Я должен добавить, что я помещаю заполнитель внутри самих тегов мулов, то есть <mule><context:property-placeholder location="C:\path\to\file\settings.properties" /><other stuff></mule Должен ли я помещать его внутри объекта? - person Narabhut; 25.06.2013

Другие ответы касались проблемы с пространством имен, но я добавлю, что обнаружил, что тег context:property-placeholder должен находиться между тегами spring:beans. Вот пример, который предполагает, что файл свойств задает свойство с именем «jmsBrokerURL»:

<mule xmlns="http://www.mulesoft.org/schema/mule/core" version="EE-3.4.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
      xmlns:spring="http://www.springframework.org/schema/beans"
      xmlns:context="http://www.springframework.org/schema/context"
      xsi:schemaLocation="
          http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
          http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
          http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <spring:beans>
        <context:property-placeholder location="C:/path/to/file/settings.properties" />
        <spring:bean name="myConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
            <spring:property name="brokerURL" value="${jmsBrokerURL}" />
        </spring:bean>
    </spring:beans>

    <flow name="MyFlow" doc:name="MyFlow">
        <!-- Flow configuration here. -->
    </flow>

</mule>

Альтернативный метод чтения свойств (и тот, который я предпочитаю) заключается в использовании тега Spring "util:properties" для чтения свойств в bean-компонент Properties, на который вы затем ссылаетесь с помощью Spring EL. В этом случае следите за тем, чтобы вы использовали нотацию Spring EL "#{}" вместо "${}" для ссылки на объект и его переменные. Вот приведенный выше пример, модифицированный для этой техники:

<mule xmlns="http://www.mulesoft.org/schema/mule/core" version="EE-3.4.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
      xmlns:spring="http://www.springframework.org/schema/beans"
      xmlns:util="http://www.springframework.org/schema/util"
      xsi:schemaLocation="
          http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
          http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
          http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd">

    <spring:beans>
        <util:properties id="myConfig"  location="C:/path/to/file/settings.properties" />
        <spring:bean name="myConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
            <spring:property name="brokerURL" value="#{myConfig.jmsBrokerURL}" /> <!-- Note the pound (hash) symbol. -->
        </spring:bean>
    </spring:beans>

    <flow name="MyFlow" doc:name="MyFlow">
        <!-- Flow configuration here. -->
    </flow>

</mule>

Мне нравится этот последний подход главным образом потому, что я могу легче работать с несколькими файлами свойств и включенными файлами контекста приложения. Тег context:property-placeholder может быть проблематичным при работе с несколькими файлами свойств или при включении файла контекста приложения в другой.

person RichW    schedule 25.06.2013

Просто поместите файл свойств в папку ресурсов и

Используйте этот « classpath: settings.properties » в свойстве-заполнителе, и он будет работать...

person Anirban Sen Chowdhary    schedule 07.07.2013