com.sun.xml.internal.ws.developer.JAXWSProperties не найдены при компиляции - PullRequest
12 голосов
/ 09 сентября 2011

Мы использовали класс JAXWSProperties из пакета com.sun.* в коде, чтобы установить свойства тайм-аута следующим образом:

import com.sun.xml.internal.ws.developer.JAXWSProperties;
...
Map<String, Object> ctxt = ((BindingProvider) port).getRequestContext();
ctxt.put(JAXWSProperties.CONNECT_TIMEOUT, 10000);

Он прекрасно компилируется в локальном Eclipse, но не в непрерывномсистема интеграции (обе используют JDK 1.6).Изучив эту проблему, я узнал, что пакета com.sun.* следует избегать.

Итак, мои вопросы:

  • Что вызывает сбой импорта во время компиляции?
  • Что следует использовать вместо JAXWSProperties?

1 Ответ

20 голосов
/ 22 сентября 2011

У меня была такая же проблема при конвертации одного из наших проектов в Maven.

Решение, которое я нашел, на самом деле не является идеальным решением, на самом деле это скорее "клочок", чем "исправление", хотя оно работает через компилятор в порядке. Как и вы, я немного исследовал эту проблему и нашел комментарий от Sun, в котором говорится, что эти пакеты скрыты от компилятора, но доступны для JVM.

Итак, решение, которое я нашел, состояло в том, чтобы просто найти строку, на которую указывает константа, и использовать ее локально.

В вашем случае это будет:

final static String CONNECT_TIMEOUT = "com.sun.xml.internal.ws.connect.timeout";
....
Map<String, Object> ctxt = ((BindingProvider) port).getRequestContext();
ctxt.put(CONNECT_TIMEOUT, 10000);

Как я уже говорил, это не идеально, и не может быть гарантированно работать в будущих выпусках компилятора, поэтому используйте с осторожностью.

...