JBoss Fuse и CXF: Изменение в механизме выдачи wsdl файла веб-сервиса - JBoss Fuse и CXF: Изменение в механизме выдачи wsdl файла веб-сервиса
Блоги
Навигационные полоски
У заказчика возникла просьба запретить или ограничить раздачу wsdl файла веб-сервиса. В случае с JBoss Fuse, работу с веб-сервисами обеспечивает Apache CXF. Доступ к wsdl файлу осуществляется http запросом вида: http://localhost:8195/cxf/services/test_emdev?wsdl. Порывшись немного в исходниках выяснилось, что за отправку wsdl клиенту отвечает интерсептор WSDLGetInterceptor.java. Далее необходимо было понять как влезть в цепочку вызовов стандартных интерсепторов. Не вдаваясь глубоко в поиски решения, пришли к тому, чтобы сделать слушатель событий, который срабатывает на создание объекта camel-context(его инициализация в контексте Spring). Для этого надо имплементировать интерфейс org.apache.camel.support.EventNotifierSupport и определить метод notify. В этом методе получить объект CamelContext, в цикле перебрать все маршруты из него и проверить объект Consumer для каждого маршрута. Если этот объект типа CxfConsumer, то можно напрямую оперировать с интерсепторами через него. Ниже привожу содержание метода notify:
@Override
public void notify(EventObject event) throws Exception {
try {
if (event instanceof CamelContextStartedEvent) {
CamelContext cContext = ((CamelContextStartedEvent) event).getContext();
List<Route> routes = cContext.getRoutes();
for (Route route : routes) {
Consumer cons = route.getConsumer();
if (cons instanceof CxfConsumer) {
((CxfConsumer) cons).getServer().getEndpoint().getInInterceptors().remove(WSDLGetInterceptor.INSTANCE);
}
}
}
if (event instanceof CamelContextStoppingEvent) {
//do nothing
}
} catch (Exception e) {
LOG.error("Problem happened: ", e);
}
}
- 6.2 (12)
- 7.0 (12)
- activiti (14)
- apache camel (6)
- camel (11)
- devcon (6)
- devops (5)
- emdev (9)
- emdev limited (9)
- entaxy (13)
- esb (10)
- fuse (5)
- gartner (7)
- google apps (6)
- jboss (5)
- liferay (143)
- liferay 7.1 (11)
- liferay dxp (11)
- liferay7 (12)
- openshift (8)
- osgi (5)
- redhat (15)
- rest (6)
- wso2 (70)
- wso2 api-m (10)
- wso2 ei (8)
- wso2ei (5)
- wso2esb (7)
- wso2is (8)
- емдев (11)
Сайт использует файлы cookie. Они позволяют узнавать вас и получать информацию о вашем пользовательском опыте. Это нужно, чтобы улучшать сайт. Посещая страницы сайта и предоставляя свои данные, вы позволяете нам предоставлять их сторонним партнерам. Если вы согласны, продолжайте пользоваться сайтом. Если нет – установите специальные настройки в браузере или обратитесь в техподдержку.