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

Я новичок в java, так что извините за неубедительные вопросы :)

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

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

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

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

Спасибо

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
9 685
4

Ответы 4

Если вы используете сервлеты, вы можете настроить параметры в 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 и контейнеры приложений имеют для этого неплохую поддержку. Поищи в Гугле.

Пожалуйста, прочтите вопрос внимательнее. Вы должны дать конкретный ответ на конкретный вопрос: «Доступ к параметрам контекста web.xml из метода веб-службы?». Тем не менее вы даете несколько полезных альтернатив.

Zeemee 03.08.2010 10:24

контекст-параметр! = параметр-инициализации (factorypattern.com/…)

StartupGuy 20.06.2013 13:19

Is there a way to read context parameters from web.xml in a web method?

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

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

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

MessageContext ctx = MessageContext.getCurrentThreadsContext();       
Servlet wsServlet = (Servlet) ctx.getProperty(HTTPConstants.MC_HTTP_SERVLET);         
ServletConfig wsServletConfig = wsServlet.getServletConfig();                 
ServletContext wsContext = wsServletConfig.getServletContext();   

Я думаю, что правильный ответ ... как всегда ... "Это зависит от обстоятельств". Если вы просто запускаете небольшую реализацию с одним сервером, то это во многом зависит от технологии 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

Другие вопросы по теме