Подтвердить что ты не робот

SetProperty должен быть переопределен всеми подклассами SOAPMessage

Я пытаюсь развернуть некоторые веб-службы в приложении 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 SP3 (но получить то же самое на Vista, а также на Linux)
  • Sun JDK 1.6.0_17
  • JBoss 5.1.0 GA для jdk6

Спасибо заранее!

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

У меня была такая же проблема с обновлением от 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, чтобы использовать apis JAX-WS 2.0, поддерживаемые JBossWS:

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

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

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

Ответ 3

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

Ответ 4

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

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

-Djava.endorsed.dirs="${JBOSS_HOME}\jboss-as\lib\endorsed"

Ответ 5

попробуйте следующие банки в папку jboss/lib/endorsed

jbossws-native-jaxws.jar
jbossws-native-jaxrpc.jar
jbossws-native-saaj.jar
jbossws-native-saaj.jar

Ответ 6

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

  • CXF 2.5.0 (потребитель Soap WebService)
  • Сборка WAR (без EAR)
  • no jboss-web
  • no jboss-classloading
  • изменений в jboss/lib/не поддерживается (только xalan, serializer, xercesImpl)
  • работает на jboss-4.2.1.GA + JDK 1.6

Для меня это было просто добавление зависимостей thoses 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>

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

Ответ 7

Я скопировал необходимый lib (saaj-impl в моем случае) в мою войну с дистрибутивом cxf и включил изоляцию класса jboss classloader с файлом /WEB -INF/jboss-classloader.xml следующего содержания:


<classloading xmlns="urn:jboss:classloading:1.0"
    domain="MyDomain"
    export-all="NON_EMPTY"
    import-all="true">
</classloading>

Надеюсь, что это поможет кому-то.

Ответ 8

Если вы столкнулись с этой ошибкой в ​​клиенте при запуске клиентского приложения, вам необходимо выполнить аналогичные шаги в дополнение к тем из них в :

  • Определите, какой экземпляр JVM запускает приложение. В моем случае у меня были автономные приложения, использующие JDK и апплеты, используя JRE. Это будет где-то вроде /path/jre/bin/

  • Добавьте банки из этого ответа в path/jre/lib/endorsed. Мне пришлось создать каталог endorsed.

Это говорит виртуальной машине загружать специфические реализации jboss до того, как язык java по умолчанию. Это происходит в загрузчике класса bootstrap, задолго до того, как загружаются банки в пути к классам.

Ответ 10

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

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

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

Ответ 11

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

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

Ответ 12

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