Контакт с параметрами командной строки и Spring

HTTPS включен или выключен для данного номера порта. Когда сервер настроен на прослушивание определенного порта, вы настраиваете его на прослушивание HTTPS или HTTP (как это зависит от сервера к серверу). Если сервер настроен на прослушивание HTTPS-соединений, тогда, когда что-то подключается, он немедленно запускает процесс шифрования, и соединение не будет установлено, если другая сторона также не ожидает шифрования.

Когда браузер подключается к серверу, он решает, произносить ли HTTP или HTTPS, на основе схемы URL-адреса, введенного пользователем. Если он набрал https: //, то он установит зашифрованное соединение с сервером на сервере. указанный порт (или 443, если не указан). Если сервер не ожидает зашифрованного соединения с этим портом, соединение не устанавливается.

Если пользователь вводит http: //, то браузер говорит незашифрованный http на указанном порту (или 80, если не указан). Опять же, если сервер ожидает, что трафик будет зашифрован, то соединение не будет установлено.

Только если обе стороны будут соответствовать ожиданиям, соединение будет успешным.

Теоретически возможно использовать заголовок HTTP Upgrade , чтобы запустить простое незашифрованное соединение HTTP, а затем включить шифрование, аналогично STARTTLS в других протоколах. Насколько я знаю, такая функциональность используется редко, если вообще используется. Почти всегда шифрование включается с самого начала с использованием определенного номера порта зашифрованного трафика.

37
задан lowellk 25 September 2008 в 08:59
поделиться

3 ответа

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

я думаю, что это не то, в чем Вы нуждаетесь, но это могло бы помочь другим читателям: свойства получения Пружинных опор из командной строки с помощью двойного дефиса (например, java -jar app.jar --my.property="Property Value" Взглянули на эту документацию для получения дополнительной информации: https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-command-line-args

0
ответ дан 27 November 2019 в 04:48
поделиться

Рассмотрим следующий класс:

public class ExternalBeanReferneceFactoryBean 
    extends AbstractFactoryBean
    implements BeanNameAware {

    private static Map<String, Object> instances = new HashMap<String, Object>();
    private String beanName;

    /**
     * @param instance the instance to set
     */
    public static void setInstance(String beanName, Object instance) {
        instances.put(beanName, instance);
    }

    @Override
    protected Object createInstance() 
        throws Exception {
        return instances.get(beanName);
    }

    @Override
    public Class<?> getObjectType() {
        return instances.get(beanName).getClass();
    }

    @Override
    public void setBeanName(String name) {
        this.beanName = name;
    }

}

вместе с:

/**
 * Starts the job server.
 * @param args command line arguments
 */
public static void main(String[] args) {

    // parse the command line
    CommandLineParser parser = new GnuParser();
    CommandLine cmdLine = null;
    try {
        cmdLine = parser.parse(OPTIONS, args);
    } catch(ParseException pe) {
        System.err.println("Error parsing command line: "+pe.getMessage());
        new HelpFormatter().printHelp("command", OPTIONS);
        return;
    }

    // create root beanFactory
    DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();

    // register bean definition for the command line
    ExternalBeanReferneceFactoryBean.setInstance("commandLine", cmdLine);
    beanFactory.registerBeanDefinition("commandLine", BeanDefinitionBuilder
        .rootBeanDefinition(ExternalBeanReferneceFactoryBean.class)
        .getBeanDefinition());

    // create application context
    GenericApplicationContext rootAppContext = new GenericApplicationContext(beanFactory);
    rootAppContext.refresh();

    // create the application context
    ApplicationContext appContext = new ClassPathXmlApplicationContext(new String[] { 
        "/commandlineapp/applicationContext.xml"
    }, rootAppContext);

    System.out.println(appContext.getBean("commandLine"));

}
3
ответ дан 27 November 2019 в 04:48
поделиться

Посмотрите на мою библиотеку Spring-Cli - в http://github.com/sazzer/spring-cli - как один из способов этого сделать. Он дает вам основной класс, который автоматически загружает контексты пружины и имеет возможность использовать Commons-CLI для автоматически разбора аргументов командной строки и впрыскивая их в вашу боб.

6
ответ дан 27 November 2019 в 04:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: