Конфигурация приложения:
- Веб-приложение, использующее первый метод Java для создания веб-служб JAX-WS 2.0 с аннотациями.
- WebLogic 10,3
Мои требования
Требования, которые у меня есть, - это развертывание одного класса реализации веб-службы, но изменение логики на основе URL-адреса, с которого был получен доступ к службе.
Вопрос:
Я предполагаю, что хороший способ сделать это - развернуть различные сопоставления в файле web.xml и инициализировать их с разными параметрами. Есть ли лучший способ?
Как лучше всего отключить логику URL-адреса, с которого был получен доступ к веб-службе? Должен ли я попытаться настроить два сопоставления сервлета в web.xml с параметрами инициализации (пробовал, но не смог заставить его работать), или мне нужно разобрать URL в службе impl? Любые другие альтернативы?
Что я попробовал (но не сработало)
Я попытался добавить <init-param>
в элемент <servlet>
в web.xml. Однако не удается получить объект ServletConfig
внутри веб-службы для получения параметра. Веб-сервис не обладает всеми функциональными возможностями стандарта Servlet
(даже если я использую Servlet
или ServletContextListener
). У меня есть доступ только к WebServiceContext
(кажется), и оттуда я могу получить только элементы <context-param>
, но вместо этого мне понадобятся <init-param>
элементы.
В web.xml я ввожу два элемента <servlet>
, используя один и тот же класс Java, но который отображается на два разных URL-адреса следующим образом. Обратите внимание, как параметр «source» отличается в каждом отображении сервлета.
<servlet>
<servlet-name>Foo</servlet-name>
<servlet-class>com.Foo</servlet-class>
<init-param>
<param-name>source</param-name>
<param-value>1</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Foo</servlet-name>
<url-pattern>/Foo</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Bar</servlet-name>
<servlet-class>com.Foo</servlet-class>
<init-param>
<param-name>source</param-name>
<param-value>2</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Bar</servlet-name>
<url-pattern>/Bar</url-pattern>
</servlet-mapping>