2010-12-14 85 views
0

J'ai reçu la tâche d'intégrer des données binaires (comme des images, de la musique, des miniatures, etc.) dans un conteneur de métadonnées xml afin de publier l'ensemble du paquet via l'interface REST. Actuellement, nous utilisons Jersey et le printemps dans notre projet. Je ne veux vraiment pas revenir à soap/wsdl (qui semble être la réponse par défaut pour tous les problèmes basés sur ws) ou tout format de conteneur comme zip juste pour obtenir ces données sur le fil alors j'ai googlé un certain temps pour un solution plus appropriée.rest + xop/données binaires intégrées dans la réponse xml

J'ai trouvé qui recommande le format XOP pour l'intégration de contenu dans xml qui fait partie du protocole MTOM utilisé dans SOAP mais je ne vois pas de solution qui fournit des réponses XML + XOP via REST directement.

Ma question: quelqu'un peut-il me donner un indice quant à l'implémentation de XOP + REST en utilisant Jersey/spring? J'ai vu les messages qui laissent entendre que quelqu'un l'a fait avant ...

Meilleures salutations,
tim

Répondre

0

Pourquoi voudriez-vous intégrer des données binaires en XML? Il existe de nombreuses façons d'associer des ressources binaires à leurs métadonnées correspondantes sans essayer de les insérer dans une seule représentation.

Vous êtes en train de vaincre l'un des principaux avantages de HTTP REST. La possibilité de gérer plusieurs types de média différents en fonction des besoins est l'une des raisons pour lesquelles utiliser REST over HTTP peut être plus efficace que SOAP. Envisagez de récupérer une représentation XML des métadonnées contenant un lien vers la ressource binaire, comme le fait Atom. Si vous souhaitez récupérer le binaire en premier, pensez à lier les en-têtes pour pointer vers les métadonnées. Il y a beaucoup de meilleurs moyens que d'essayer d'insérer des données binaires dans XML.

+0

merci pour la réponse. Malheureusement, diviser le contenu n'est pas une option. Une des causes est qu'il existe un modèle de sécurité derrière ce contenu de bundles selon les acls. Une autre cause serait qu'un paquet doit être transmis complètement - imaginez une situation fatale si une partie du message est manquante parce que le client n'a pas lancé une demande immédiatement. Le dernier et le plus important est que maintenant je ne suis pas en mesure de prendre des décisions à l'échelle du projet :) – Tim

+0

@Tim Selon la spécification XOP 'http: // www.w3.org/TR/xop10 /' vous le feriez utilisez simplement Multipart/Related comme type de média. L'encodage et le décodage de ce type de média sont complètement orthogonaux à REST, donc l'astuce serait de trouver une bibliothèque Java capable de traiter le contenu 'Multipart/Related'. À ce stade, je ne suis même pas sûr que vous avez besoin de XOP plus. –

+0

merci darrel. à un moment donné, c'est tout à fait ce que j'avais découvert auparavant. S'il m'arrive d'avoir assez de temps, j'essaierai d'évaluer cette solution et si elle réussit, j'y ajouterai d'autres lignes. – Tim