Многие рекомендуют не использовать пакеты sun
по разным причинам. Подробные ответы представлены здесь.
Однако я использую jaxws-rt.jar
, который использует библиотеку sun.
Мне интересно, стоит ли мне jaxws-rt.jar
или нет. Я работаю в контейнере tomcat и не хочу включать реализации jaxws для Jboss, GlassFish или любых других серверов приложений.
Вот что я пытаюсь сделать (установка соединения и таймаутов запросов)
import com.sun.xml.internal.ws.client.BindingProviderProperties;
import javax.xml.ws.BindingProvider;
((BindingProvider)soapService).getRequestContext()
.put(BindingProviderProperties.REQUEST_TIMEOUT,REQUEST_TIMEOUT_MILLI);
((BindingProvider)soapService).getRequestContext()
.put(BindingProviderProperties.CONNECT_TIMEOUT,CONNECT_TIMEOUT_MILLI);
Благодарность
2 ответа
Как вы обнаружили, определенное поведение (например, тайм-ауты соединения) контролируется средствами, зависящими от реализации.
Если вы не хотите компилировать (импортировать) пакеты com.sun
, то вы можете попробовать просто удалить зависимости времени компиляции, но при этом установить эти свойства для управления эталонной реализацией JAX-WS. установка свойств контекста запроса BindingProvider
для эталонной реализации с помощью их строковые значения. Вы можете установить эти свойства даже при работе с другими средами выполнения JAX-WS, кроме RI - это не приведет к сбою (это просто может не иметь никакого эффекта).
import javax.xml.ws.BindingProvider;
((BindingProvider)soapService).getRequestContext()
.put("com.sun.xml.ws.request.timeout", 5000L);
((BindingProvider)soapService).getRequestContext()
.put("com.sun.xml.ws.connect.timeout", 5000L);
Вот два значения для обеих констант в вашем вопросе. JAXWSProperties.CONNECT_TIMEOUT и BindingProviderProperties.REQUEST_TIMEOUT.
Это недоразумение.
даже если он включает библиотеки
sun
?
Он не «включает sun
библиотеки». Это относится к библиотеке com.sun
. Это совсем другое дело. Две совершенно разные вещи.
Многие рекомендуют не [использовать]
sun
пакеты по разным причинам.
Есть только одна рекомендация, которая имеет значение, и это Примечание о солнце . * пакеты. Действующее предложение в этом:
Программы, содержащие прямые обращения к пакетам sun. *, Не являются на 100% чистой Java.
Пакеты sun.*
существуют, конечно, по какой-то причине, а именно для обеспечения реализации различных вещей в JDK . Если это единственное использование в вашей программе этих классов, и особенно если ваш код не содержит «прямых вызовов пакетов sun.*
», вам не о чем беспокоиться.
Похожие вопросы
Связанные вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.