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
Спасибо заранее!
Ответы
Ответ 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, задолго до того, как загружаются банки в пути к классам.
Ответ 9
Это ссылка на эту проблему: https://issues.jboss.org/browse/JBWS-2418
Ответ 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.