Решение, которое я наконец-то придумал, заключается в использовании аннотации @ConfigProperty
.Это означает, что я использую первый вариант моего вопроса выше.
Так что мой класс ResourceAdapter
выглядит следующим образом:
public class Hl7ResourceAdapter implements ResourceAdapter {
@ConfigProperty
private Integer port = null;
// Rest from ResourceAdapter interface omitted here...
// Use port here to open socket...
}
Поля @ConfigProperty
теперь можно задавать с помощью либо
- ресурс-адаптер-config
- дескриптор развертывания ra.xml
Теперь, чтобы перенастроить эти настройки, я использую интерфейс REST Glassfish для изменения этих настроек программно (можно также использовать команду asadmin create-resource-adapter-config
).Я обхожу проблему тем, что glassfish не перезапускает приложение, использующее адаптер ресурсов, просто перезапуская его самостоятельно через REST.(Если быть точным: я отключаю приложение, а затем снова включаю его, чтобы обойти еще одну ошибку в Glassfish)
Несколько дополнительных замечаний:
- Мы развернемФайл .rar адаптера ресурсов в .ear приложения, использующего его.
- У нас есть отдельное приложение за пределами Glassfish (автономное), которое вызывает интерфейс REST для таких вещей, как перезапуск приложения адаптера ресурсов и т. д.Очевидно, что приложение не может перезапустить себя должным образом.
Надеюсь, это поможет. kutuzof , это даст вам дальнейшее развитие?