Изменить конечную точку WS на Axis2 без servicePath - PullRequest
1 голос
/ 06 октября 2010

Я разработал WS с использованием Axis2 1.4 и glassfish 2.1.1, который правильно работает с использованием URL-адреса конечной точки, например

 `http://server:port/appname/services/FooService`  

но мне нужно, чтобы он работал через конечную точку, такую ​​как

 `http://server:port/FooService`  

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

Избавиться от части «имя приложения» было легко, установив имя приложения на root под сервером приложений (изменив файл конфигурации application.xml для приложения). Это приводит к конечной точке, подобной http://server:port/services/FooService, которая работает нормально, но все еще имеет часть «services».

Чтобы избавиться от части «услуги», я попытался:

  • Изменено свойство "servicePath" в файле конфигурации axis2.xml. Если я установлю это свойство пустым, null, "" или "/" не будет работать. В первых двух случаях возникает исключение «servicePath не может быть пустым или пустым» при развертывании приложения.

  • Добавлена ​​новая запись в файле web.xml для сопоставления AxisServlet с шаблоном URL "/", но опять-таки это не работает.

Итак, мой вопрос: есть ли способ избавиться от параметра servicePath?

Предположим, что для этого нет способа, другая идея состоит в том, чтобы "перенаправить" запросы с URL-адреса конечной точки, которую я пытаюсь использовать, на тот, который используется axis2 (с помощью servicePath). Я не уверен, как это сделать, может быть, с сервлетом? какая-то конфигурация на сервере приложений?

1 Ответ

2 голосов
/ 29 ноября 2012

Если вы развернули приложение как ROOT, просто поместите отображение сервлета в web.xml:

<servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <url-pattern>/FooService/*</url-pattern>
</servlet-mapping>
...