Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SOAP - JAXWS и запрос с аттачами, Создание multipart запросов с аттачами 
:(
    Опции темы
rimling
Дата 21.9.2012, 17:37 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 20.2.2007

Репутация: нет
Всего: нет



Всем привет.

Создаю веб-сервис с использованием JAXWS и Apache CXF (только для генерации классов). Необходимо реализовать multipart SOAP запросы с аттачами. Но все усложняется одним моментом - протокол приложения описан заранее, шаг влево-вправо по реализации не сделать. Имеется xml схема запросов и данных, из которой сделал WSDL-описание. Есть так же примеры собственно дампов этих запросов. Т.е. надо, чтобы сервис соответствовал всей этой прелестной логике и формату.

Теперь конкретно о проблеме. В протоколе возможны аттачи, которые в SOAP сообщении идентифицируются по content-id. В сообщении может быть от нуля до бесконечности таких ссылок. Пример запроса:

Код

Host: the.host.url
Content-Type: multipart/related; boundary=<the_boundary_string>; type=text/xml; start=”<part1>”
Content-Length: nnnn
SOAPAction: “”

--<the_boundary_string>
Content-Type: text/xml; charset=”charset”
Content-ID: <first-part> 
Content-Length: nnnn 
Content-Transfer-Encoding: 8bit 

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<TranscodingRequest>
    <operationId>901</operationId>
    <TranscodingJob>
        <jobId>j10</jobId>
        <location>cid:filetmp9</location>
    </TranscodingJob>
    <TranscodingJob>
        <jobId>j11</jobId>
        <location>cid:filetmp15</location>
    </TranscodingJob>
</TranscodingRequest>
</soapenv:Body>
</soapenv:Envelope>

--<the_boundary_string> 
Content-Type: image/png 
Content-ID: <filetmp9> 
Content-Transfer-Encoding: binary 

 ... file binary content

--<the_boundary_string> 

--<the_boundary_string> 
Content-Type: video/mp4 
Content-ID: <filetmp15> 
Content-Transfer-Encoding: binary 

 ... file binary content

--<the_boundary_string> 


Начал изучать вопрос, понял, что через модификацию WSDL мне не получить того, что надо.

По факту, что хочу получить:
 - возможность слать SOAP запросы через HTTP и multipart/related с произвольным добавлением аттачей. И без использования MTOM или swaRef (иначе надо модифицировать схему).  

В спецификации JAXWS и в инете вычитал про одну мульку:
Код

        BindingProvider bp = (BindingProvider)port;
        Map<String,DataHandler> attaches = (Map)bp.getRequestContext().get(MessageContext.OUTBOUND_MESSAGE_ATTACHMENTS);
        if(null==attaches) {
            attaches = new HashMap<String,DataHandler>();
            bp.getRequestContext().put(MessageContext.OUTBOUND_MESSAGE_ATTACHMENTS, attaches);
        }
        File sourceFile = new File("D:\\text.txt");
        DataHandler dh = new DataHandler(new FileDataSource(sourceFile));
        attaches.put("textFile.txt", dh);

т.е. добавляем в специальное свойство Map со списком аттчей и дело в шляпе. Но отнюдь, данный пример не работет, не создается multipart запрос и аттач не добавляется.   

Вопрос, что не так и как можно достичь желаемого (может быть используя уже CXF)?
Делал ли кто-то подбное?
PM MAIL   Вверх
dorogoyIV
Дата 21.9.2012, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 3
Всего: 46



Цитата(rimling @  21.9.2012,  17:37 Найти цитируемый пост)
        if(null==attaches) {

прикольно  smile 
PM MAIL   Вверх
dorogoyIV
Дата 22.9.2012, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 3
Всего: 46



где LSD ?
щас он скажет - что это гов**код  smile 
и я с ним буду полностью согласен!!!
PM MAIL   Вверх
rimling
Дата 24.9.2012, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 20.2.2007

Репутация: нет
Всего: нет



Посмеяться попи... не забыли, но по сути дела молчок. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0418 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.