Java, NetBean: доступ к параметрам контекста web.xml из метода веб-службы? - PullRequest
2 голосов
/ 24 сентября 2008

Я новичок в Java, поэтому прошу прощения за мои хромые вопросы:)

Я пытаюсь создать веб-сервис в Java NetBeans 6.1, но у меня есть некоторые проблемы с параметрами конфигурации (например, .settings в .net).

Как правильно сохранить и получить доступ к таким настройкам в веб-сервисе Java.

Есть ли способ прочитать параметры контекста из web.xml в веб-методе?

Если нет, каковы альтернативы для хранения ваших переменных конфигурации, таких как имена путей?

Спасибо

Ответы [ 4 ]

4 голосов
/ 24 сентября 2008

Есть ли способ прочитать параметры контекста из web.xml в веб-методе?

Нет, это нелегко сделать, используя "из коробки". Система веб-служб (JAX-WS) обладает минимальной осведомленностью о механизме сервлетов (Tomcat). Они предназначены для изоляции.

Если вы хотите использовать параметры контекста, ваш класс веб-службы должен будет реализовать ServletContextListener и извлечь нужные параметры в параметре инициализации (или сохранить контекст для дальнейшего использования). Так как у движка Servlet и JAX-WS будут разные экземпляры объекта, вам необходимо сохранить значения в статическом члене.

Как упомянул Ларс, API-интерфейсы свойств или JNDI - ваши лучшие ставки, поскольку они включены в Java и являются довольно хорошо известными способами получения опций. Используйте Classloader.getResource (), чтобы получить свойства в веб-контексте.

3 голосов
/ 24 сентября 2008

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

<servlet>
  <servlet-name>jsp</servlet-name>
  <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
      <param-name>fork</param-name>
      <param-value>false</param-value>
     </init-param>
</servlet>

Эти свойства будут переданы в объекте ServletConfig в метод init вашего сервлета.

Другой способ - прочитать переменные окружения вашей системы с помощью

System.getProperty(String name);

Но это не рекомендуется для других программ, кроме небольших.

Существует также API-интерфейс свойств, если вы хотите использовать файлы ".properties". http://java.sun.com/javase/6/docs/api/java/util/Properties.html

Наконец, я считаю, что поиск конфигураций с помощью JNDI довольно распространен при разработке современных приложений веб-служб, Netbeans и контейнеры приложений имеют довольно хорошую поддержку для этого. Google это.

1 голос
/ 12 октября 2011
MessageContext ctx = MessageContext.getCurrentThreadsContext();       
Servlet wsServlet = (Servlet) ctx.getProperty(HTTPConstants.MC_HTTP_SERVLET);         
ServletConfig wsServletConfig = wsServlet.getServletConfig();                 
ServletContext wsContext = wsServletConfig.getServletContext();   
0 голосов
/ 20 июня 2013

Я думаю, что правильный ответ ... как всегда ... "Это зависит". Если вы просто запускаете небольшую реализацию с одним сервером, это во многом зависит от технологии WS, которую вы хотите использовать. Некоторые упрощают доступ к контексту сервлета и контекстным параметрам, другие - нет, и в этом случае доступ к свойствам из файла свойств может быть проще. Собираетесь ли вы иметь массив серверов в среде с балансировкой нагрузки с высоким трафиком, где обновление настроек для всех серверов должно быть мгновенным и централизованным в случае сбоя? Если это так, то действительно ли вы хотите обновить файлы конфигурации для всех серверов в ферме? Как вы синхронизируете эти изменения со всеми этими серверами? Это имеет значение для вас? Если вы храните пути в конфигурационном файле, вы, вероятно, намереваетесь обновить пути к другому хосту в случае отказа определенного хоста ("\ file_server_host \ doc_store" -> "\ backup_file_server_host \ doc_store" ) в этом случае может быть лучше перейти на другой ресурс при помощи DNS. Слишком много переменных. Это действительно зависит от дизайна; потребностей; масштаб приложения.


Для простоты, если вам нужен простой эквивалент файла .settings, вам нужен файл .properties. Вот пример, где я недавно использовал это в проекте: https://github.com/sylnsr/docx4j-ws/blob/master/src/docx4j/TextSubstitution.java

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...