@Bean("messageSource") public ReloadableResourceBundleMessageSource messageSource() { ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasename("classpath:messages/messages"); // любой путь к файлу messageSource.setDefaultEncoding("UTF-8"); return messageSource;}
// Ключевое - ReloadableRes.... - reloadable - поддержка любого пути.
-
@Componentpublic class Translator { private static MessageSource messageSource; @Autowired Translator(MessageSource messageSource) { Translator.messageSource = messageSource; } public static String toLocale(String msgCode, Object[] args) { Locale locale = LocaleContextHolder.getLocale();// Locale tmp = new Locale("ru"); return messageSource.getMessage(msgCode, args, locale); } }
-
Translator.toLocale("respMsg.savedOK", null)
- messages_ru_RU.properties:
respMsg.savedOK=Сохранено
понедельник, 10 июня 2019 г.
MessageSource message.properties Spring i18n интернационализация сообщений
воскресенье, 24 июня 2018 г.
Spring MVC @PathVariable with encoded slashes, REST c прямыми слэшами в URL в значении переменной
Use case:
Решение:
@RequestMapping("/path/{variableAbleCaptureSlashes:.+}// нужно, чтобы в var могли падать значения с прямыми слэшами
public ResponseEntity<String> method(@PathVariable("variableAbleCaptureSlashes") var) {
// var must accept values like "/a/b/"
}
Решение:
- разрешить слэши в пути
System.setProperty("org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH", "true");
- отключить в UrlPathHelper url-декодирование
@Override public void configurePathMatch(PathMatchConfigurer configurer) { UrlPathHelper urlPathHelper = new UrlPathHelperNonDecoding(); urlPathHelper.setUrlDecode(false); configurer.setUrlPathHelper(urlPathHelper); }
- подставить кастомную имплементацию UrlPathHelper (https://jira.spring.io/browse/SPR-11101)
- разрешить любые символы в значении pathvariable: @RequestMapping("/path/{variableAbleCaptureSlashes:.+}
@SpringBootApplication @EnableErrorHandlingpublic class Application extends WebMvcConfigurerAdapter { public static void main(String[] args) { System.setProperty("org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH", "true"); SpringApplication.run(Application.class, args); } @Override public void configurePathMatch(PathMatchConfigurer configurer) { UrlPathHelper urlPathHelper = new UrlPathHelperNonDecoding(); urlPathHelper.setUrlDecode(false); configurer.setUrlPathHelper(urlPathHelper); } public class UrlPathHelperNonDecoding extends UrlPathHelper { public UrlPathHelperNonDecoding() { super.setUrlDecode(false); } @Override public void setUrlDecode(boolean urlDecode) { if (urlDecode) { throw new IllegalArgumentException("Handler does not support URL decoding."); } } @Override public String getServletPath(HttpServletRequest request) { String servletPath = getOriginatingServletPath(request); return servletPath; } @Override public String getOriginatingServletPath(HttpServletRequest request) { String servletPath = request.getRequestURI().substring(request.getContextPath().length()); return servletPath; } } }
пятница, 8 декабря 2017 г.
Настройка NTLM и Basic аутентификации JAX-WS клиента в конфигурационном файле Spring
AllowChunking="false" в элементе http-conf:conduit/http-conf:client активизирует аутентификацию NTLM, если не указывать ее тип в http-conf:authorization . Без этой установки будет применяться аутентификация Basic.
Из доков CXF:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns="http://www.springframework.org/schema/beans"
xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
http://cxf.apache.org/transports/http/configuration
http://cxf.apache.org/schemas/configuration/http-conf.xsd">
<beans>
<!-- Setting AllowChunking="false" activates NTLM authentication.
Basic authentication will be used without it -->
<http-conf:conduit name="*.http-conduit"
xmlns:sec="http://cxf.apache.org/configuration/security"
xmlns="http://cxf.apache.org/transports/http/configuration">
<http-conf:client
ConnectionTimeout="1000"
ReceiveTimeout="10000"
AllowChunking="false" />
<http-conf:authorization>
<sec:UserName>${auth.username}</sec:UserName>
<sec:Password>${auth.password}</sec:Password>
</http-conf:authorization>
</http-conf:conduit>
<!--WS Clients-->
<jaxws:client id="ws-client-id"
serviceClass="com.microsoft.schemas.sharepoint.soap.XXXX"
address="${endpoints.someaddress}">
</jaxws:client>
</beans>
</beans>
Из доков CXF:
Finally, you need to setup the CXF client to turn off chunking. The reason is that the NTLM authentication requires a 3 part handshake which breaks the streaming.
//Turn off chunking so that NTLM can occurClient client = ClientProxy.getClient(port);HTTPConduit http = (HTTPConduit) client.getConduit();HTTPClientPolicy httpClientPolicy =newHTTPClientPolicy();httpClientPolicy.setConnectionTimeout(36000);httpClientPolicy.setAllowChunking(false);http.setClient(httpClientPolicy);
среда, 25 октября 2017 г.
Ресурсы VPN недоступны и вообще не пингуется ничего при подключении через OpenVPN
- Отключить сжатие явным прописыванием в .ovpn файле:
comp-lzo no
понедельник, 23 октября 2017 г.
Запуск установленной гостевой Windows 10 из хостовой Ubuntu 16.04 через Virtualbox 5
Нужен VirtualBox минимум 5.1, установка описана здесь: http://ubuntuhandbook.org/index.php/2016/07/virtualbox-5-1-released/ .
Если загрузка через EFI, в настройках VirtualBox в разделе "Система" надо поставить галочку "использовать EFI" и при создании raw-диска через createrawvmdk не забыть включить через запятую EFI-раздел с .efi файлами. И дальше как здесь.
Если загрузка через EFI, в настройках VirtualBox в разделе "Система" надо поставить галочку "использовать EFI" и при создании raw-диска через createrawvmdk не забыть включить через запятую EFI-раздел с .efi файлами. И дальше как здесь.
понедельник, 3 октября 2016 г.
Return To Castle Wolfenstein 1.4 из исходников на Ubuntu 16.04 64bit
Вариант сборки из исходников на гитхабе https://github.com/hexameron/RTCW-SP-linux (ветвь https://github.com/id-Software/RTCW-SP) описан здесь.
Команду
При ошибках вида "не найдено SDL/SDL.h" нужно установить libsdl1.2-dev.
Сборка может дать исполняемый файл игры, в котором возникает stack smashing error при запуске.
В этом случае надо отредактировать в исходниках файл src/renderer/tr_image.c: в строке 316 следует заменить
Команду
для ubuntu 64bit стоит заменить наCFLAGS="-march=i686 -O2 -pipe -fomit-frame-pointer"
Соответственно, все обращения к каталогу src/unix/release-x86-Linux/ следует заменить на src/unix/release-x86_64-Linux/. Этот каталог (release-XXXX) будет единственным созданным внутри src/unix/, поэтому его имя будет очевидным.CFLAGS="-march=native -O2 -pipe -fomit-frame-pointer"
При ошибках вида "не найдено SDL/SDL.h" нужно установить libsdl1.2-dev.
Сборка может дать исполняемый файл игры, в котором возникает stack smashing error при запуске.
В этом случае надо отредактировать в исходниках файл src/renderer/tr_image.c: в строке 316 следует заменить
unsigned p1[1024], p2[1024];на
unsigned p1[2048], p2[2048];Затем проделать повторную сборку (удалить каталог unix/release-x86_64-Linux/, вызвать make и переписать получившиеся исполняемый .exe и библиотечные файлы .so в целевой каталог с игрой, как в мануале).
четверг, 21 июля 2016 г.
Запуск установленной (гостевой) Windows 7 в VirtualBox из хостовой Ubuntu 16.04.
Предварительно, пользователь должен быть в группе disk и vboxusers ( sudo usermod -a -G disk $USER && sudo usermod -a -G vboxusers $USER). Для корректной работы grub-mkrescue нужно установить xorriso (sudo apt-get install xorriso).
По третьему способу отсюда:
По третьему способу отсюда:
Создаем директорию:
$ mkdir -p ~/.iso/boot/grub
В этой директории любым способом создал файл grub.cfg следующего содержания:
(Раздел menuentry «Windows 7» скопировать со своего grub.cfg, расположенного по адресу /boot/grub/)
insmod part_msdos
set default=0
set timeout=0
menuentry "Windows 7 (loader) (on /dev/sda3)" --class windows --class os {
insmod part_msdos
insmod ntfs
set root='(/dev/sda,msdos3)'
search --no-floppy --fs-uuid --set=root C070671099FC2625
chainloader +1
}
Здесь убрано все лишнее, GRUB проскакивает быстро и незаметно.
Создаем iso-образ с GRUB2:
$ grub-mkrescue --output=/home/$USER/.iso/grub.iso /home/$USER/.iso/
Создаем VMDK-образ:
$ VBoxManage internalcommands createrawvmdk -filename /home/$USER/VirtualBox/Windows7.vmdk -rawdisk /dev/sda -partitions 3,5 -relative
Далее создаем и настраиваем виртуальную машину так же как и во втором способе.
Так же выбираем grub.iso.
Едиственный нюанс: при автоматической установке дополнений гостевой оси, образ этого iso заменится на VBoxGuestAdditions.iso. Поменяйте его обратно.
Еще раз повторюсь, в примерах используются мои настройки. Вносите изменения.
Подписаться на:
Сообщения (Atom)