Глядя на спецификации для DLNA, большая часть обмена метаданными, похоже, основана на мыле. Однако я не могу найти ничего похожего на WSDL для различных сервисов. Вместо этого есть некоторый язык описания услуг, который выглядит следующим образом:
<scpd>
<serviceStateTable>
<stateVariable>
<Optional />
<name>TransferIDs</name>
<sendEventsAttribute>yes</sendEventsAttribute>
<dataType>string</dataType>
...
</stateVariable>
</serviceStateTable>
<actionList>
<action>
<name>Browse</name>
<argumentList>
<argument>
<name>ObjectID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_ObjectID</relatedStateVariable>
</argument>
...
</argumentList>
</action>
...
</actionList>
</scpd>
Я не могу найти никакой документации по этому формату или каких-либо инструментов для создания заглушек сервера или клиента для него, как я могу с WSDL. На данный момент мои параметры кажутся
- Создайте XSLT, чтобы попытаться преобразовать язык дескриптора в wsdl
- Напишите инструменты генерации кода Java, которые работают на существующем языке дескрипторов
- Пишем заглушки и код для сериализации / десериализации сообщений мыла вручную
Все три варианта кажутся в равной степени непривлекательными, хотя первый вариант кажется наименьшей работой, но это не говорит о многом. Любые предложения для лучшего решения проблемы?