2015-07-17 2 views
2

Итак, сегодня Google бесполезен.Настройка сервера SSL-восстановления с помощью Spring IoC?

this page, но это показывает, как настроить SSL-рестарт в код.

Как вы это делаете в Spring XML?

Вот что я сейчас:

<bean id="container" class="org.restlet.ext.spring.SpringComponent"> 
      <property name="server"> 
        <bean class="org.restlet.ext.spring.SpringServer"> 
          <constructor-arg value="http" /> 
          <constructor-arg value="3080" /> 
        </bean> 
      </property>  
      <property name="defaultTarget" ref="router"/> 
    </bean> 

я мог бы просто использовать конструктор арг «HTTPS» и «3443», но как установить местоположение хранилища для ключа сервера и пароля и типа и yadda yadda yadda?

ответ

2

Как об этом примере?

Java:

import org.restlet.resource.Get; 
import org.restlet.resource.ServerResource; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 

public class RestletApplication extends ServerResource { 
    @Get 
    public String present() { 
     return "hello, world"; 
    } 

    public static void main(String... args) throws Exception { 
     new ClassPathXmlApplicationContext("restlet-context.xml").registerShutdownHook(); 
    } 
} 

Весна:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 

    <bean id="top" class="org.restlet.ext.spring.SpringComponent" init-method="start" destroy-method="stop"> 
     <property name="server"> 
      <bean class="org.restlet.ext.spring.SpringServer"> 
       <constructor-arg value="https"/> 
       <constructor-arg value="8183"/> 
       <property name="parameters"> 
        <props> 
         <prop key="sslContextFactory">org.restlet.engine.ssl.DefaultSslContextFactory</prop> 
         <prop key="keyStorePath">/my/path/to/serverX.jks</prop> 
         <prop key="keyStorePassword">password</prop> 
         <prop key="keyPassword">password</prop> 
         <prop key="keyStoreType">JKS</prop> 
        </props> 
       </property> 
      </bean> 
     </property> 
     <property name="defaultTarget"> 
      <bean class="org.restlet.ext.spring.SpringRouter"> 
       <property name="attachments"> 
        <map> 
         <entry key="/v1" value="RestletApplication"/> 
        </map> 
       </property> 
      </bean> 
     </property> 
    </bean> 
</beans> 

Кажется работать с Restlets 2.3.4.

основе:

+1

Это волшебство (свойство свойств со свойствами внутри). Это также работает на 2.1.7 (за исключением org.restlet.ext.ssl.DefaultSslContextFactory), который в моем случае был наименьшим сопротивлением. – nsayer

0

Имел подобную проблему, и мне удалось решить ее следующим образом.

В моем файле свойств у меня есть следующие:

trustStore.path = /path/to/certificate/cert.jks 
trustStore.password = CertPassword 

И в XML-конфигурации:

<bean id="trustStore" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> 
    <property name="targetObject" value="#{@systemProperties}" /> 
    <property name="targetMethod" value="putAll" /> 
    <property name="arguments"> 
     <props> 
      <prop key="javax.net.ssl.trustStore">${trustStore.path}</prop> 
      <prop key="javax.net.ssl.trustStorePassword">${trustStore.password}</prop> 
     </props> 
    </property> 
</bean> 
+0

Meh. Если мне нужно это сделать с помощью System Properties, я бы сразу же использовал -D в командной строке JVM из моего сценария запуска. Разумеется, должна быть идион Spring XML, чтобы делать то, что находится в образце кода, связанного в вопросе. – nsayer

+0

В моем случае я не мог напрямую использовать инструкцию JVM. BTW есть описание для этого: [MethodInvokingFactoryBean] (http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/beans/factory/config/MethodInvokingFactoryBean.html) –

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