2015-10-20 2 views
2

У меня есть следующая конфигурация в моем web.xml файл в приложении Spring:Java Условный конфигурации (web.xml) - Разработка/Производство

<session-config> 
    <cookie-config> 
     <name>mycookie</name> 
     <http-only>true</http-only> 
     <secure>true</secure> 
    </cookie-config>  
</session-config> 

Проблема заключается в следующем: <secure>true</secure> навязывает куки для отправки через HTTPS только, и в моей машине разработки у меня нет HTTPS. Однако эта конфигурация незаменима в производственной среде.

Есть ли способ сделать эту конфигурацию чувствительной к окружающей среде - то есть false для разработки и true для официальных/производственных сборок?

+1

Я бы сделал это Другим способом: создайте свою машину разработки, поддерживающую HTTPS. (Для Tomcat относительно легко подписано с сертификатом). – Ralph

+0

@ Ralph и становится еще проще с настоящими сертификатами. –

ответ

4

Если вы используете Maven (что я бы настоятельно рекомендовал), вы можете использовать профили вместе с maven-war-plugin. Вы можете указать разные web.xml в каждом из этих профилей (чтобы вы могли иметь один для среды prod и другие для dev). Вот пример для вас

<properties> 
    <webXmlPath>path/to/your/dev/xml</webXmlPath> 
</properties> 
<profiles> 
    <profile> 
     <id>prod</id> 
     <properties> 
      <webXmlPath>path/to/prod/webXml</webXmlPath> 
     </properties> 
    </profile> 
</profiles> 
<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>${war-plugin.version}</version> 
      <configuration> 
       <webXml>${webXmlPath}</webXml> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

Теперь каждая сборка будет по умолчанию web.xml с настройками Дев. Если вы хотите изменить его производства сборки, просто выполнить

mvn clean install -Pprod 
+0

Это простое и интересное решение! Очень полезно, когда между производством и разработкой существует множество различий в конфигурации. –

3

Решение было очень просто с помощью propety:

<secure>${session.cookie.secure}</secure> 

В моем развитии .properties файл я добавил:

session.cookie.secure=false 

И в тесте/производстве я могу установить его на true

 Смежные вопросы

  • Нет связанных вопросов^_^