ScRsa: Если известна ссылка на филиал, к которому привязывается пользователь, то POST-запрос с типом "application/hal+json" и в поле filial ссылка на него.
Так не получится, т.к. JSP формирует HTML-страницу, из которой запросом данные уже отправляются в сервлет. Такие фокусы возможны в JSF и Vaadin.
Не мучайся, добавь на сервлет аннотацию @MultipartConfig и получай данные при помощи request.getParameter()
Николай Бараненко: Значение можно получить из p.getInputStream(). Вычитываешь из стрима массив байтов и создаёшь строку с этим массивом в качестве аргумента конструктора (удобнее при помощи IOUtils из commons-io). Это и будет значением. Но я думаю, что использовать getParts для работы с обычной формой (без загрузки файлов) - лишнее. Лучше просто повешать аннотацию @MultipartConfig, тогда сервлет-контейнер сам будет parts превращать в parameters.
Николай Ступак: ну, этот вариант в голову пришёл в первую очередь. А развернуть приложение в ROOT можешь? Если можешь, то проблема с дублированием /api будет решена.
Сергей Семенко: ну, откуда мне знать. Нужно смотреть код. Если вызовы этих методов инициируются твоим кодом, и они должны вызываться, то дебаг и стектрейсы тебе в помощь. Если же ты пытаешься подсунуть свой код сторонней библиотеке, то нужно смотреть исходный код сторонней библиотеки. Может данные методы не используются в целом.
Сергей Порошенко: советую начать с Java EE и Spring, работая с интерпрайзом проще разобраться с тонкостями Java.
Изучать мобильную разработку и после этого можно, не помешает. Android имеет свою архитектуру, к которой нужно будет ещё привыкнуть.
mrkovalchuk: Ну вот тебе и ответ - в ArduinoEventsListener есть зависимости, внедрённые при помощи @Autowired, но ты создаёшь объект руками. Поэтому Spring не может подтянуть нужные зависимости и репозиторий не работает. Варианта решения 3:
1. Добавляешь commitRepository и roomRepository с аннотациями @Autowired в ArduinoConfig и передаёшь их ArduinoEventsListener через конструктор, либо через сеттеры.
или
2. ArduinoEventsListener делаешь компонентом, добавив ему аннотацию @Component
или
3. В ArduinoConfig инициализируешь ArduinoEventsListener при помощи @Bean-метода:
@Bean
public ArduinoEventsListener arduinoEventsListener() {
return new ArduinoEventsListener();
}
Замечу ещё такой момент, что ArduinoConfig у тебя не является конфигурацией как таковой, так что лучше будет заменить @Configuration на @Component, тогда ты сможешь добавить в свой контроллер
@Autowired
private ArduinoConfig arduinoConfig;
и в методе, тебе останется сделать arduinoConfig.arduinoConnection(roomService); без создания нового инстанса ArduinoConfig
mrkovalchuk: Я вижу у ArduinoEventsListener только аннотации @ComponentScan("com.kovalchuk.server") и @EnableJpaRepositories("com.kovalchuk.server.repository")
kiru: вариантов синхронизации много, но пару предложу%
Вариант 1. Потребуется сервер очередей сообщений (ActiveMQ, RabbitMQ и т.д.). При заведении новой компании сервер кидает в какой-то топик сообщение с параметрами созданной компании (никто не мешает и полностью объект отправить в ObjectMessage). Остальные серверы, подписанные на этот топик, получают сообщение и заводят/актуализируют компанию у себя.
Вариант 2. У всех серверов реализовать веб-сервис с методом сохранения компании. Тогда сервер, на котором завели компанию, должен будет дёрнуть этот метод веб-сервисов других серверов и передать информацию о компании. Но тут нужно будет соображать какое-нибудь Service Discovery.
А вообще, ИМХО, отсутствие централизованности системы в данном случае просится в минус. Централизованность помогла бы решить проблему без архитектурных костылей.