Настройка уровня развертывания Spring - PullRequest
2 голосов
/ 05 мая 2010

Когда я писал приложения для Java EE, я использовал источники данных JBoss для управления базами данных, которые использовались при развертывании. Например. Версии dev будут использовать одноименную базу данных hibernate, а ref и ops будут использовать стабильные развертывания MySQL. Я также использовал MBeans для настройки различных других служб и правил.

Теперь, когда я использую Spring, мне нужна та же функциональность - развернуть тот же код, но с другой конфигурацией. Важно также, чтобы модульные тесты продолжали работать с сервисами-заглушками. У меня такой вопрос - есть ли в JBoss способ внедрить конфигурацию в файлы, которые находятся за пределами WAR / EAR, а также включить эти файлы в тестовые ресурсы.

1 Ответ

2 голосов
/ 06 мая 2010

Можно добавить объекты в контекст JNDI, поместив файл с именем xxx-service.xml в каталог развертывания jboss. Затем приложение может искать значения через JNDI. В приведенном ниже примере строка «разработка» добавляется в java: / mode / deploy. Чтобы использовать JNDI в своих модульных тестах, используйте пакет org.springframework.mock.jndi .

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE server PUBLIC "-//JBoss//DTD MBean Service 4.0//EN"
          "http://www.jboss.org/j2ee/dtd/jboss-service_4_0.dtd">
<server>
   <mbean code="org.jboss.naming.JNDIBindingServiceMgr"
         name="c3po.naming:service=jndi-bindings">
      <attribute name="BindingsConfig" serialDataType="jbxb">
         <jndi:bindings
            xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
            xmlns:jndi="urn:jboss:jndi-binding-service:1.0"
            xs:schemaLocation="urn:jboss:jndi-binding-service:1.0 resource:jndi-binding-service_1_0.xsd"
            >

            <jndi:binding name="java:/modes/deployment">
               <jndi:value type="java.lang.String">development</jndi:value>
            </jndi:binding>

            <jndi:binding name="java:/sites/abc">
               <jndi:value type="java.lang.String">dev.site.example.com</jndi:value>
            </jndi:binding>

<!-- Examples:

            <jndi:binding name="urls/jboss-home">
               <jndi:value type="java.net.URL">http://www.jboss.org</jndi:value>
            </jndi:binding>

            <jndi:binding name="hosts/localhost">
               <jndi:value editor="org.jboss.util.propertyeditor.InetAddressEditor">
                  127.0.0.1
               </jndi:value>
            </jndi:binding>

            <jndi:binding name="maps/testProps">
               <java:properties xmlns:java="urn:jboss:java-properties"
                  xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
                  xs:schemaLocation="urn:jboss:java-properties resource:java-properties_1_0.xsd">
                  <java:property>
                     <java:key>key1</java:key>
                     <java:value>value1</java:value>
                  </java:property>
                  <java:property>
                     <java:key>key2</java:key>
                     <java:value>value2</java:value>
                  </java:property>
               </java:properties>               
            </jndi:binding>
-->

         </jndi:bindings>
      </attribute>
      <depends>jboss:service=Naming</depends>
   </mbean>

</server>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...