BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 27 апр 2024, 21:36

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: xml в String
СообщениеДобавлено: 29 сен 2015, 19:06 
Не в сети

Зарегистрирован: 07 май 2008, 13:34
Сообщения: 594
Откуда: Москва
Карма: 27
Требуется в коде активатора сервиса преобразовать xml в строку. Погуглил.
Самый распространенный вариант типа такого:
Код:
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.StringWriter;

Transformer docTransformer = TransformerFactory.newInstance().newTransformer();
StreamResult actionSR = new StreamResult(new StringWriter());
DOMSource actionDOM = new DOMSource(action);
docTransformer.transform(actionDOM, actionSR);
String actionData = actionSR.getWriter().toString();


в результате получаем такую беду:
Код:
mq 09-29/14:58:03 ERROR [inet-reload] InetDeviceRuntime - org/apache/xml/serializer/TreeWalker
java.lang.NoClassDefFoundError: org/apache/xml/serializer/TreeWalker
        at org.apache.xalan.processor.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:823)
        at ru.steccom.bgbilling.modules.inet.dyn.device.nbi.NBIServiceActivator.init(NBIServiceActivator.java:51)
        at ru.bitel.bgbilling.modules.inet.runtime.device.InetDeviceRuntime.reloadScripts(InetDeviceRuntime.java:349)
        at ru.bitel.bgbilling.modules.inet.runtime.device.InetDeviceRuntime.<init>(InetDeviceRuntime.java:232)
        ...


Это javax.xml.transform.* требует апачевый serializer? Это как то связанно с тем что mq работает под java 1.7?
Если тащить дополнительные библиотеки не хочется, то как конвертировать dom document в строку, через DOMImplementationLS или есть еще варианты?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: xml в String
СообщениеДобавлено: 29 сен 2015, 20:09 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
action - это объект какого класса?

Попробуйте
Код:
import java.io.StringWriter;
import ru.bitel.common.XMLUtils;

StringWriter sw = new StringWriter();
XMLUtils.serialize( doc, sw, "UTF-8" );
log.debug( sw.toString() );


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: xml в String
СообщениеДобавлено: 29 сен 2015, 20:13 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
А, скорее всего будет тоже самое. Похоже т.к. там есть библиотека xalan - она прописывает себя обработчиком xml, но этой библиотеке для сериализации не хватает еще одной jar.
Попробуйте скопировать serializer.jar из BGBillingServer/lib/ext в InetAccess/lib/ext и перезапустить InetAccess.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: xml в String
СообщениеДобавлено: 29 сен 2015, 23:05 
Не в сети

Зарегистрирован: 07 май 2008, 13:34
Сообщения: 594
Откуда: Москва
Карма: 27
action это org.w3c.dom.Element

Переписал конвертацию через DOMImplementationLS, ругаться при загрузке класса (?) перестало, но вылезли проблемы в другом месте: SOAPMessage.saveChanges() дает исключение "не возможно сохранить multipart message" и потом примерно такое же исключение про org.apache.xml.serializer.TreeWalker. Я так понимаю в недрах SOAP* тааже TransformerFactory используется.

Положил serializer.jar (скопировал из client.lib/) и все заработало, теперь думаю возвращать обратно конвертацию через TransformerFactory или оставить DOMImplementationLS ;)

P.S. интересно, конечно, узнать почему код из стандартных библиотек jdk вдруг требует апачевую библиотеку, если это последствия xalan, то может добавите тогда этот serializer.jar в Access?

up. Переехал на jdk 1.8.0.60 и mq 5.12, mq тоже на java 1.8 запустил, пока проблем не видно.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.502s | 26 Queries | GZIP : On ]