|
|
|
Unmarshalling XML даёт prefix ns6 is not bound to a namespace
|
|||
|---|---|---|---|
|
#18+
получаю XML с сервера, делаю Unmarshlling таким образом: res = unmarshaller.unmarshal(soapResponse.getSOAPBody().extractContentAsDocument()); Получаю такую ошибку: java.lang.IllegalArgumentException: prefix ns6 is not bound to a namespace at com.sun.xml.bind.DatatypeConverterImpl._parseQName(DatatypeConverterImpl.java:364) at com.sun.xml.bind.v2.runtime.unmarshaller.XsiTypeLoader.parseXsiType(XsiTypeLoader.java:96) at com.sun.xml.bind.v2.runtime.unmarshaller.XsiTypeLoader.startElement(XsiTypeLoader.java:74) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:576) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:555) at com.sun.xml.bind.v2.runtime.unmarshaller.InterningXmlVisitor.startElement(InterningXmlVisitor.java:75) at com.sun.xml.bind.v2.runtime.unmarshaller.SAXConnector.startElement(SAXConnector.java:168) использую jax-ws 2.2.10 java 1.7 Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. Мэппинг-классы нагенерированы wsimport - ом. Прочие xml-запросы отрабатываются - на ура. Вот с этим - траблы. Постепенно становится понятно, что проблема в Код: xml 1. а что ему не нравится и как это победить - не ясно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 06:30 |
|
||
|
Unmarshalling XML даёт prefix ns6 is not bound to a namespace
|
|||
|---|---|---|---|
|
#18+
kevinlexusполучаю XML с сервера, делаю Unmarshlling таким образом: Код: java 1. OMFG!!! Это вообще зачем??? Вы JAXB и JAXWS попутали? У вас транспортный протокол такой что JAXWS его не понимает? Что значит "получаю XML"?? kevinlexusjava.lang.IllegalArgumentException: prefix ns6 is not bound to a namespace а что ему не нравится и как это победить - не ясно. Капитан очевидность сообщает что этот неймспэйс объявлен в тэге soap:Envelope. Вы почему-то взяли soap:Body внутри и решили его руками десериализовать? Вам разве wsimport не создал классы-наследники Service и Port? Вы по какой причине от них отказались? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 09:47 |
|
||
|
Unmarshalling XML даёт prefix ns6 is not bound to a namespace
|
|||
|---|---|---|---|
|
#18+
Blazkowiczkevinlexusjava.lang.IllegalArgumentException: prefix ns6 is not bound to a namespace а что ему не нравится и как это победить - не ясно. Капитан очевидность сообщает что этот неймспэйс объявлен в тэге soap:Envelope. Вы почему-то взяли soap:Body внутри и решили его руками десериализовать? Блин, думаю это в точку. Blazkowicz Вам разве wsimport не создал классы-наследники Service и Port? Вы по какой причине от них отказались? [/quot] Создавал, конечно создавал! Мы их используем при создании XML, потом мы в этой XML копаемся-копаемся, меняем всякие элементы, добавляем хедеры, и подписываем элементы(классы созданные wsimport это делать не умеют), потом отправляем на сервер и получаем обратно ответ, а он уже автоматом в классы мэппится, кроме данного конкретного случая. Теперь думаю, как у меня другие то методы корректно отрабатывают? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 11:57 |
|
||
|
Unmarshalling XML даёт prefix ns6 is not bound to a namespace
|
|||
|---|---|---|---|
|
#18+
kevinlexusдобавляем хедеры, и подписываем элементы(классы созданные wsimport это делать не умеют), потом отправляем на сервер и а так же меняем endpoint! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 12:03 |
|
||
|
Unmarshalling XML даёт prefix ns6 is not bound to a namespace
|
|||
|---|---|---|---|
|
#18+
kevinlexusМы их используем при создании XML, потом мы в этой XML копаемся-копаемся, меняем всякие элементы, добавляем хедеры, и подписываем элементы(классы созданные wsimport это делать не умеют), потом отправляем на сервер и получаем обратно ответ, а он уже автоматом в классы мэппится, кроме данного конкретного случая. Теперь думаю, как у меня другие то методы корректно отрабатывают? Я очень сильно сомневаюсь про "неумеют". Любой handler вешаете и обрабатываете сообщений как вам хочется. При острой надобности меняете строгий тип на JAXBElement в сгенеренных классах. Ну, реально не понятно зачем самостоятельно парсить. Тем более при получении, где вам менять ничего не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 12:07 |
|
||
|
Unmarshalling XML даёт prefix ns6 is not bound to a namespace
|
|||
|---|---|---|---|
|
#18+
kevinlexusа так же меняем endpoint! Это всё решается даже для Java 7. Посмотрите Service, который вам сгенерил wsimport. Там есть конструкторы, которые принимают адрес WSDL в качестве параметра. По этому адресу сервис и будет стучаться, а не по тому из которого вы изначально генерировали. Можно и в динамике менять через контекст, если очень нужно. Там есть некоторый геморрой с инициализацией, который меня в JAXWS бесит - по-умолчанию он всегда парсит WSDL. Но это можно обойти с помощью локальной копии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 12:12 |
|
||
|
Unmarshalling XML даёт prefix ns6 is not bound to a namespace
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, почему тогда в этом примере тоже вытаскивают только Body? Код: java 1. 2. 3. 4. 5. 6. взято из ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 12:13 |
|
||
|
Unmarshalling XML даёт prefix ns6 is not bound to a namespace
|
|||
|---|---|---|---|
|
#18+
kevinlexusпочему тогда в этом примере тоже вытаскивают только Body? А это не пример работы с JAX-WS. Это пример того как через JAXB работать с XML внутри JAX-WS, если вам это очень нужно. Цель этого пример показать как именно это делать. Это не значит что именно вам нужно делать так же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 12:15 |
|
||
|
Unmarshalling XML даёт prefix ns6 is not bound to a namespace
|
|||
|---|---|---|---|
|
#18+
Blazkowiczkevinlexusа так же меняем endpoint! Это всё решается даже для Java 7. Посмотрите Service, который вам сгенерил wsimport. Там есть конструкторы, которые принимают адрес WSDL в качестве параметра. По этому адресу сервис и будет стучаться, а не по тому из которого вы изначально генерировали. Можно и в динамике менять через контекст, если очень нужно. Там есть некоторый геморрой с инициализацией, который меня в JAXWS бесит - по-умолчанию он всегда парсит WSDL. Но это можно обойти с помощью локальной копии. Я еще раз посмотрю, почему мы отказались от этого пути. Но кажется вот с этим был гемор: BlazkowiczМожно и в динамике менять через контекст, если очень нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 12:16 |
|
||
|
Unmarshalling XML даёт prefix ns6 is not bound to a namespace
|
|||
|---|---|---|---|
|
#18+
kevinlexusЯ еще раз посмотрю, почему мы отказались от этого пути. Но кажется вот с этим был гемор: С этим нет никакого гемора. http://stackoverflow.com/a/2490895 Вообще всё решается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 12:20 |
|
||
|
Unmarshalling XML даёт prefix ns6 is not bound to a namespace
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Вспомнил, XML-ку надо было подписать, а чтобы подписать, надо взять один элемент, который вбирает в себя много дочерних элементов, по ним всем поскакать, найти хэш определённый, и записать контрольную сумму в другой элемент. На каком то этапе пришло понимание, что легче классу, который генерит контрольную сумму, скормить сырую XML со всеми элементами, а так как это была финальная операция, то и отправить это хозяйство на эндпойнт. Ну а так как мы отправили raw xml, то и обратно уже можем получить я так понимаю в raw виде и демаршаллить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 12:27 |
|
||
|
Unmarshalling XML даёт prefix ns6 is not bound to a namespace
|
|||
|---|---|---|---|
|
#18+
kevinlexus, То есть вместо стандартного WSS какое-то своё рукоблудие? На пальцах трудно полностью понять проблему, чтобы подобрать решение. Да, ваш подход имеет смысл чтобы не сериализовать туда-сюда по несколько раз. Но есть и куча альтернатив. Можно сериализовать объекты в DOM. Можно сериализовать не весь документ, а только нужный элемент и потом его уже подцепить через XmlAnyElement в сообщение, например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 12:37 |
|
||
|
Unmarshalling XML даёт prefix ns6 is not bound to a namespace
|
|||
|---|---|---|---|
|
#18+
kevinlexus, Так а DOM для чего нужен? Вам нужна подпись именно нормализорваного блока XML? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 12:38 |
|
||
|
Unmarshalling XML даёт prefix ns6 is not bound to a namespace
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, вот как замечательно, что вы мне вообще ответили, теперь хоть знаю куда копать, либо буду возвращаться обратно и учиться скакать по элементам, собирая хэш. либо вот это буду щупать там где вот этот пример: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 12:42 |
|
||
|
Unmarshalling XML даёт prefix ns6 is not bound to a namespace
|
|||
|---|---|---|---|
|
#18+
kevinlexusлибо буду возвращаться обратно и учиться скакать по элементам, собирая хэш. Рефлексия? BeanUtils? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 12:47 |
|
||
|
Unmarshalling XML даёт prefix ns6 is not bound to a namespace
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Полностью переписал подход, как Вы и сказали, Выполняю подпись XML-ки в handler-е, там же вставляю эту подпись в необходимый элемент, убрал на фиг маршаллинг-демаршаллинг, и всё заработало (и естественно нет никакого prefix ns6 is not bound). Кстати всё стало работать значительно быстрее (видать издержки на маршал-демаршал сняты). Blazkowicz о гуру, станьте же наставником молодому специалисту по Java! (буду в личку теперь писать, если разрешите, спасибо!))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2016, 10:01 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39369772&tid=2123357]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
83ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
| others: | 249ms |
| total: | 459ms |

| 0 / 0 |
