2016-04-15 6 views
0

Мы переносим наши веб-сервисы с JBoss 5 на JBoss 7. Теперь веб-службы публикуются с именем службы в URL-адресе, что разбивает всех существующих клиентов.Изменить опубликованный адрес WebService в JBoss AS 7.1.1.Final

Как я могу заставить опубликованный адрес вернуться к тому, чем он был раньше?

JBoss 5 URL: http://localhost:8080/app/MyServiceImpl

JBoss 7 URL: http://localhost:8080/app/MyService/MyServiceImpl

определение Сервис все EJB аннотации:

@Stateless 
@WebContext(contextRoot = "/app") 
@WebService(name = "MyServiceImpl", serviceName = "MyService", portName = "MyServicePort", targetNamespace = "http://...", portName="MyServicePortType", wsdlLocation="/META-INF/wsdl/MyService.wsdl") 

public class MyServiceImpl extends implements MyServicePortType { 
    //code for webservice operations 
} 

В принципе, я хочу, чтобы удалить SERVICENAME из URL, чтобы иметь назад совместимость. Если я удалю serviceName из @WebService, я получаю сообщение об ошибке при запуске JBoss, поэтому это не решение. Ошибка, как: вызвано следующими причинами: org.apache.cxf.service.factory.ServiceConstructionException: Не удалось найти определение для обслуживания

Благодаря

ответ

1

Итак, как я уже говорил в этом вопросе, если удалить из SERVICENAME @WebService, JBoss7 генерирует исключение при запуске. Посмотрев на трассировку стека, я увидел, что он не может найти @WebClient, потому что он ищет имя, построенное по умолчанию, и выглядит так: MyServiceImplService.

Моим решением было переименовать мой @WebClient по имени MyService в MyServiceImplService. Таким образом, мне удалось удалить атрибут serviceName из аннотации @WebService и предоставить JBoss7 @WebClient имя по умолчанию, которое ищет. Для EJB на основе JAX-WS веб-служб адрес конечной точки по умолчанию:

хозяин/@ WebService.serviceName/@ WebService.name

Где, то @ WebService.serviceName и @ WebService.name являются аннотаций атрибуты веб-службы.

Так что, если я не предоставил атрибут SERVICENAME, он не был добавлен к URL, и теперь он выглядит, как в JBoss5:

http://localhost:8080/app/MyServiceImpl