setProperty должен быть переопределен всеми подклассами SOAPMessage - PullRequest
35 голосов
/ 15 ноября 2009

Я пытаюсь развернуть некоторые веб-службы в приложении WAR на JBoss 5.1.0.

Я создал исходные файлы из существующего wsdl, используя инструмент JAX-WS wsgen. В результате были созданы файлы службы и аннотированные предложения @XmlType, которые будут действовать как оболочки запросов и ответов.

Эти классы хорошо работали на JBoss 4.2.3, но при переходе на JBoss 5.1.0 я получаю это исключение.

java.lang.UnsupportedOperationException: setProperty должно быть переопределено всеми подклассами SOAPMessage

Моя конфигурация:

  • Windows XP с пакетом обновления 3 (но в Vista и Linux) одинаковы
  • Sun JDK 1.6.0_17
  • JBoss 5.1.0 GA для jdk6

Заранее спасибо!

Ответы [ 12 ]

32 голосов
/ 17 ноября 2009

Есть несколько вещей, которые могут пойти не так, поэтому я расскажу вам, что помогло в моем случае (по аналогии с вашим, я использовал JDK 1.6.0_13).

Проблема заключается в несоответствии файлов JAR. Прежде всего убедитесь, что JBoss использует JDK 1.6, проверьте вашу среду JAVA_HOME. переменная. Во-вторых, убедитесь, что ваши классы скомпилированы с использованием JDK 1.6. Если вы запускаете свой проект из Eclipse, убедитесь, что Eclipse использует правильный JDK, то же самое, если вы запускаете JBoss из Eclipse.

Полагаю, вы правильно поняли, так что приходит немного магии. Запущенный клиент не использует библиотеки из $ JBOSS_HOME / client, а использует только библиотеки, предоставленные в $ JBOSS_HOME / lib / endorsed. Очевидно, что если вы используете любой другой API, не связанный с JAX-WS, например JPA, EJB или Servlets, вы можете добавить их в путь к классам, но использовать только lib / одобренные JAR JAX-WS.

Это помогло в моей конкретной ситуации в случае JBoss 5.1, в более ранних версиях JBoss работало несколько других приемов, например, попробуйте добавить опцию java -Dsun.lang.ClassLoader.allowArraySyntax = true или / и -Djava.endorsed.dirs = $ JBOSS_HOME / lib / одобрены при запуске вашего клиента и JBoss.

23 голосов
/ 12 июня 2010

У меня была такая же проблема с обновлением с JBoss 4.2.2, и я нашел ответ в Замечания к выпуску JBoss 5.1.0 :

JBossAS 5.0.0.GA может быть скомпилирован как с Java5, так и с Java6. Скомпилированный двоичный файл Java5 - это наш основной / рекомендуемый двоичный дистрибутив. Он прошел тщательное тестирование и может работать как в среде Java 5, так и в среде Java 6. При работе в Java 6 вам нужно вручную скопировать следующие библиотеки из каталога JBOSS_HOME / client в каталог JBOSS_HOME / lib / endorsed, чтобы использовать API-интерфейс JAX-WS 2.0, поддерживаемый JBossWS:

  • jbossws-нативная saaj.jar
  • jbossws-нативной jaxrpc.jar
  • jbossws-нативной jaxws.jar
  • jbossws-нативные-JAXWS-ext.jar

Я использовал дистрибутив JBoss 5.1.0 build with Java 5 (работает на JDK 1.6.0_20) и достаточно уверен, что копирование этих JAR-файлов в утвержденный каталог решило проблему. Мы не используем версию, скомпилированную для Java 6 из-за примечания:

Следует отметить, однако, что скомпилированный Java 6 дистрибутив JBoss AS 5 все еще находится на экспериментальной стадии.

7 голосов
/ 14 сентября 2010

Это может быть связано с проблемой конфликта с SAAJ jar. Скопируйте Jboss банку Saaj с {Jboss_HOME}/LIB на {JBOSS_HOME}/lib/endorsed. Я надеюсь, что это поможет решить проблему,

4 голосов
/ 10 декабря 2010

Убедитесь, что вы запускаете JBoss с опциями jvm, указывающими на одобренные библиотеки. Это не настроено по умолчанию, если вы запускаете JBoss из Eclipse, используя WTP, хотя это происходит, если вы запускаете JBoss из командной строки.

К аргументам виртуальной машины конфигурации запуска можно добавить следующее:

-Djava.endorsed.dirs="${JBOSS_HOME}\jboss-as\lib\endorsed"
2 голосов
/ 01 октября 2012

попробуйте следующие jar-файлы в вашей папке jboss / lib / endorsed

jbossws-native-jaxws.jar
jbossws-native-jaxrpc.jar
jbossws-native-saaj.jar
jbossws-native-saaj.jar
1 голос
/ 24 октября 2012

Мой проект был просто основан на:

  • CXF 2.5.0 (Потребитель Soap WebService)
  • WAR-сборка (без EAR)
  • нет jboss-web
  • нет загрузки jboss-class
  • без изменений в jboss / lib / endorsed (только xalan, serializer, xercesImpl)
  • работает на jboss-4.2.1.GA + JDK 1.6

У меня получилось просто добавить эти maven-зависимости рядом с CXF:

    <dependency>
        <groupId>javax.xml.ws</groupId>
        <artifactId>jaxws-api</artifactId>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.ws</groupId>
        <artifactId>jaxws-rt</artifactId>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.ws</groupId>
        <artifactId>jaxws-tools</artifactId>
    </dependency>
    <dependency>
        <groupId>org.codehaus.woodstox</groupId>
        <artifactId>woodstox-core-asl</artifactId>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.messaging.saaj</groupId>
        <artifactId>saaj-impl</artifactId>
    </dependency>

Надеюсь, это поможет!

0 голосов
/ 12 августа 2016

Добавление saaj-impl в папку lib моего веб-приложения исправило эту ошибку. Я использую JBoss 4.2.3 и CXF 2.4.10.

0 голосов
/ 06 октября 2015

Я использую Jboss AS 4.3. В моем случае я удалил из папки "deploy" файл "jbossws.sar".

См. Эту проблему: https://issues.jboss.org/browse/JBWS-2821

0 голосов
/ 13 мая 2015

Моя конфигурация сервера - Jboss AS 4.2.1 GA и, как показано ниже, работает;

Библиотеки, которые я использовал в lib \ endorsed;

  • JAXWS2.1.1_20070501
  • jbossws-нативной JAXRPC
  • jbossws-нативные-JAXWS
  • jbossws-нативные-JAXWS-вн
  • jbossws-нативной SAAJ
  • сериализатору
  • Xalan
  • xercesImpl
0 голосов
/ 18 марта 2012

Это ссылка на этот вопрос: https://issues.jboss.org/browse/JBWS-2418

...